git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[patch 06/11] Avoid allowing --undo if it doesn't change anything

From
PGPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Date
Sep 16, 2005, 19:35 UTC
Message-ID
<20050916193518.18681.9261.stgit@zion.home.lan>
In-Reply-To
<20050916193511.18681.24189.stgit@zion.home.lan>
From: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>

Avoid top/bottom backup files identical to current ones. Simply remove them.

Also, change restore_old_boundaries() to handle gracefully the new situation rather than print an exception.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
---
 stgit/commands/push.py |    6 ++++--
 stgit/stack.py         |   17 +++++++++++++----
 2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/stgit/commands/push.py b/stgit/commands/push.py
--- a/stgit/commands/push.py
+++ b/stgit/commands/push.py
@@ -66,8 +66,10 @@ def func(parser, options, args):
         print 'Undoing the "%s" push...' % patch,
         sys.stdout.flush()
         resolved_all()
-        crt_series.undo_push()
-        print 'done'
+        if crt_series.undo_push():
+            print 'done'
+        else:
+            print 'done (patch unchanged)'
         print_crt_patch()
 
         return
diff --git a/stgit/stack.py b/stgit/stack.py
--- a/stgit/stack.py
+++ b/stgit/stack.py
@@ -170,7 +170,11 @@ class Patch:
 
     def set_bottom(self, string, backup = False):
         if backup:
-            self.__set_field('bottom.old', self.__get_field('bottom'))
+            curr = self.__get_field('bottom')
+            if curr != string:
+                self.__set_field('bottom.old', curr)
+            else:
+                self.__set_field('bottom.old', None)
         self.__set_field('bottom', string)
 
     def get_top(self):
@@ -178,7 +182,11 @@ class Patch:
 
     def set_top(self, string, backup = False):
         if backup:
-            self.__set_field('top.old', self.__get_field('top'))
+            curr = self.__get_field('top')
+            if curr != string:
+                self.__set_field('top.old', curr)
+            else:
+                self.__set_field('top.old', None)
         self.__set_field('top', string)
 
     def restore_old_boundaries(self):
@@ -188,8 +196,9 @@ class Patch:
         if top and bottom:
             self.__set_field('bottom', bottom)
             self.__set_field('top', top)
+            return True
         else:
-            raise StackException, 'No patch undo information'
+            return False
 
     def get_description(self):
         return self.__get_field('description', True)
@@ -571,7 +580,7 @@ class Series:
         patch = Patch(name, self.__patch_dir)
         git.reset()
         self.pop_patch(name)
-        patch.restore_old_boundaries()
+        return patch.restore_old_boundaries()
 
     def pop_patch(self, name):
         """Pops the top patch from the stack
Previous: Paolo 'Blaisorblade' GiarrussoNext: Paolo 'Blaisorblade' Giarrusso
Message 7 of 12 in “Fix typo: comitter->committer”
  1. 01/11 Fix typo: comitter->committerPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  2. 02/11 Make "empty patch" checking optional in "series" command.Paolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  3. Catalin MarinasSep 17, 2005
  4. 03/11 stg diff / files: don't update directory cache unless neededPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  5. 04/11 Fix "mail" command when description contains "From" linesPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  6. 05/11 Make "stg files" output match "quilt files" onePaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  7. 06/11 Avoid allowing --undo if it doesn't change anythingPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  8. 07/11 Implement fast-forward when only tree (but not commits) matchPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  9. 08/11 Fix "stg clean" when stack is emptyPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  10. 09/11 Allow mailing a given patch listPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  11. 10/11 Fix "stg mail" address parsing for hyphenPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005
  12. 11/11 Detect description in quilt patchesPaolo 'Blaisorblade' Giarrusso, Sep 16, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.