{"thread":{"id":"8428","subject":"[PATCH] Fix deletion and move of a hidden patch (gna bug #9244).","startedAt":"2007-06-04T21:14:43Z","lastAt":"2007-06-04T21:14:43Z","messageCount":1,"participants":["Yann Dirson"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"44003","messageId":"20070604211419.469.38927.stgit@gandelf.nowhere.earth","threadId":"8428","inReplyTo":null,"subject":"[PATCH] Fix deletion and move of a hidden patch (gna bug #9244).","fromName":"Yann Dirson","fromEmail":"ydirson@altern.org","sentAt":"2007-06-04T21:14:43Z","receivedAt":"2007-06-04T21:14:43Z","isPatch":true,"sender":{"key":"ydirson@altern.org","avatar":"https://avatars.githubusercontent.com/u/1190950?v=4"},"body":"\nWe must unhide a patch before we delete it, or we get an exception\nwhile trying to unhide a non-existent patch.\n\nSimilarly, when renaming a hidden patch, we must take care of hiding\nan unhiding at the right moment.\n\nBoth problems introduced in commit\n841c7b2a6b015e3ab3331713cf10caf7a4fd0b49 when first indroducing patch\nhiding.\n\nSigned-off-by: Yann Dirson <ydirson@altern.org>\n---\n\n stgit/stack.py        |   13 +++++++++----\n t/t1600-delete-one.sh |   13 +++++++++++--\n 2 files changed, 20 insertions(+), 6 deletions(-)\n\ndiff --git a/stgit/stack.py b/stgit/stack.py\nindex 7a06458..ed54671 100644\n--- a/stgit/stack.py\n+++ b/stgit/stack.py\n@@ -894,6 +894,9 @@ class Series(StgitObject):\n         # save the commit id to a trash file\n         write_string(os.path.join(self.__trash_dir, name), patch.get_top())\n \n+        if self.patch_hidden(name):\n+            self.unhide_patch(name)\n+\n         patch.delete()\n \n         unapplied = self.get_unapplied()\n@@ -902,9 +905,6 @@ class Series(StgitObject):\n         f.writelines([line + '\\n' for line in unapplied])\n         f.close()\n \n-        if self.patch_hidden(name):\n-            self.unhide_patch(name)\n-\n     def forward_patches(self, names):\n         \"\"\"Try to fast-forward an array of patches.\n \n@@ -1168,7 +1168,9 @@ class Series(StgitObject):\n \n         if self.patch_hidden(oldname):\n             self.unhide_patch(oldname)\n-            self.hide_patch(newname)\n+            was_hidden=True\n+        else:\n+            was_hidden=False\n \n         if oldname in unapplied:\n             Patch(oldname, self.__patch_dir, self.__refs_dir).rename(newname)\n@@ -1188,6 +1190,9 @@ class Series(StgitObject):\n         else:\n             raise StackException, 'Unknown patch \"%s\"' % oldname\n \n+        if was_hidden:\n+            self.hide_patch(newname)\n+\n     def log_patch(self, patch, message):\n         \"\"\"Generate a log commit for a patch\n         \"\"\"\ndiff --git a/t/t1600-delete-one.sh b/t/t1600-delete-one.sh\nindex df03d79..d59d4ba 100755\n--- a/t/t1600-delete-one.sh\n+++ b/t/t1600-delete-one.sh\n@@ -82,6 +82,15 @@ test_expect_success \\\n     '\n \n test_expect_success \\\n+    'Hide the topmost patch and try to delete it' \\\n+    '\n+    [ $(stg applied | wc -l) -eq 2 ] &&\n+    stg hide bar &&\n+    stg delete bar &&\n+    [ $(stg applied | wc -l) -eq 1 ]\n+    '\n+\n+test_expect_success \\\n     'Create another branch, and put one patch in each branch' \\\n     '\n     stg branch --create br &&\n@@ -99,10 +108,10 @@ test_expect_success \\\n test_expect_success \\\n     'Delete a patch in another branch' \\\n     '\n-    [ $(stg applied | wc -l) -eq 3 ] &&\n+    [ $(stg applied | wc -l) -eq 2 ] &&\n     [ $(stg applied -b br | wc -l) -eq 1 ] &&\n     stg delete -b br baz &&\n-    [ $(stg applied | wc -l) -eq 3 ] &&\n+    [ $(stg applied | wc -l) -eq 2 ] &&\n     [ $(stg applied -b br | wc -l) -eq 0 ]\n     '\n \n"}]}