Signing by StGIT broken

4 messages, 2 authors, 2016-06-15 · open the first message on its own page

Signing by StGIT broken

From: Pavel Roskin <hidden>
Date: 2016-06-15 22:44:04

Hello!

"stg edit --sign" is not working anymore.  It was working in version
0.14.

$ stg edit --sign
Checking for changes in the working directory ... done
Updating patch "id123" ... Traceback (most recent call last):
  File "/home/proski/bin/stg", line 43, in <module>
    main()
  File "home/proski/lib/python2.5/site-packages/stgit/main.py", line 278, in main
  File "home/proski/lib/python2.5/site-packages/stgit/commands/edit.py", line 235, in func
  File "home/proski/lib/python2.5/site-packages/stgit/commands/edit.py", line 93, in __update_patch
  File "home/proski/lib/python2.5/site-packages/stgit/commands/common.py", line 469, in parse_patch
  File "home/proski/lib/python2.5/site-packages/stgit/commands/common.py", line 359, in __split_descr_diff
AttributeError: 'NoneType' object has no attribute 'split'

git-bisect reports this:

a08e424021d32bf93ee7bb13ed0a9d7313367660 is first bad commit
commit a08e424021d32bf93ee7bb13ed0a9d7313367660
Author: Karl Hasselström [off-list ref]
Date:   Thu Dec 13 00:13:55 2007 +0100

    Make generic --message/--file/--save-template flags
    
    And let "stg edit" use them.
    
    Signed-off-by: Karl Hasselström [off-list ref]

:040000 040000 0c9317423123d328e8bf03866c08fa458808dce4 9195692410c3ed8171f2f799a8e3efd101a89a14 M      stgit


I suspect this part:

- elif options.file:
- __update_patch(pname, options.file, options)
+ elif any([options.message, options.authname, options.authemail,
+ options.authdate, options.commname, options.commemail,
+ options.sign_str]):
+ out.start('Updating patch "%s"' % pname)
+ __update_patch(pname, options.message, options)
+ out.done()

options.message is passed even if it's None and something else (like
options.sign_str) is defined.

-- 
Regards,
Pavel Roskin

Re: Signing by StGIT broken

From: Karl Hasselström <hidden>
Date: 2016-06-15 22:44:04

On 2008-01-09 21:53:16 -0500, Pavel Roskin wrote:
"stg edit --sign" is not working anymore. It was working in version
0.14.
Thanks for the report and the detailed analysis. I'll write a test and
fix it (but not quite immediately, so feel free to beat me to it).

-- 
Karl Hasselström, kha@treskal.com
      www.treskal.com/kalle

Re: Signing by StGIT broken

From: Pavel Roskin <hidden>
Date: 2016-06-15 22:44:04

On Thu, 2008-01-10 at 08:42 +0100, Karl Hasselström wrote:
On 2008-01-09 21:53:16 -0500, Pavel Roskin wrote:
quoted
"stg edit --sign" is not working anymore. It was working in version
0.14.
Thanks for the report and the detailed analysis. I'll write a test and
fix it (but not quite immediately, so feel free to beat me to it).
The fix below appears to work (thus making it a self-signing patch :))
but with my modest Python experience it absolutely needs to be reviewed.
I don't even know how to wrap the long line without making it look
misleading.

No testsuite fixes, sorry.  But the existing testsuite passes.


Fix "stg edit --sign"

Signed-off-by: Pavel Roskin <redacted>
---

 stgit/commands/edit.py |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/stgit/commands/edit.py b/stgit/commands/edit.py
index b9699d5..650d5a3 100644
--- a/stgit/commands/edit.py
+++ b/stgit/commands/edit.py
@@ -90,7 +90,10 @@ def __update_patch(pname, text, options):
     bottom = patch.get_bottom()
     top = patch.get_top()
 
-    message, author_name, author_email, author_date, diff = parse_patch(text)
+    if text:
+        message, author_name, author_email, author_date, diff = parse_patch(text)
+    else:
+        message = author_name = author_email = author_date = diff = None
 
     out.start('Updating patch "%s"' % pname)
 
-- 
Regards,
Pavel Roskin

Re: Signing by StGIT broken

From: Karl Hasselström <hidden>
Date: 2016-06-15 22:44:06

On 2008-01-11 23:58:03 -0500, Pavel Roskin wrote:
On Thu, 2008-01-10 at 08:42 +0100, Karl Hasselström wrote:
quoted
On 2008-01-09 21:53:16 -0500, Pavel Roskin wrote:
quoted
"stg edit --sign" is not working anymore. It was working in version
0.14.
Thanks for the report and the detailed analysis. I'll write a test
and fix it (but not quite immediately, so feel free to beat me to
it).
The fix below appears to work (thus making it a self-signing patch
:)) but with my modest Python experience it absolutely needs to be
reviewed. I don't even know how to wrap the long line without making
it look misleading.
It works by virtue of avoiding passing None to parse_patch(), which
expects a string object. So the fix is correct.

There are two ways to do line breaking in Python:

  1. Break the line between a pair of parentheses. That way, the
     parser knows that the line can't possibly end here:

       foo(1, 2, 3,
           4, 5, 6)

       x = { 'foo': 5,
             'bar': 17 }

  2. As a last resort, you can end a line with backslash:

       x = 1 + 2 + 3 \
           + 4 + 5 + 6

     But you should never use this. Insert a pair of otherwise
     redundant parentheses instead:

       x = (1 + 2 + 3
            + 4 + 5 + 6)

-- 
Karl Hasselström, kha@treskal.com
      www.treskal.com/kalle
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help