{"thread":{"id":"9957","subject":"stg branch --delete doesn't work","startedAt":"2007-09-21T04:40:45Z","lastAt":"2007-09-22T08:46:36Z","messageCount":7,"participants":["Aneesh Kumar","Karl Hasselström"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"53695","messageId":"cc723f590709202140y677a17d0y504b8cfa8b66606b@mail.gmail.com","threadId":"9957","inReplyTo":null,"subject":"stg branch --delete doesn't work","fromName":"Aneesh Kumar","fromEmail":"aneesh.kumar@gmail.com","sentAt":"2007-09-21T04:40:45Z","receivedAt":"2007-09-21T04:40:45Z","isPatch":false,"sender":{"key":"aneesh.kumar@gmail.com","avatar":"https://gravatar.com/avatar/0621fc0b2f14ead1e9024382f16053a808c148596da30c1b92572fa075621f68?d=mp&s=160"},"body":"[review@linux-review-ext4]$ git checkout master\nSwitched to branch \"master\"\n[master@linux-review-ext4]$ stg branch --delete --force review\nDeleting branch \"review\" ...\nfatal: Needed a single revision\nstg branch: refs/heads/review does not exist\n\n\nAnd it leaves in .git/config\n[branch \"test2.stgit\"]\n        stackformatversion = 2\n\nSo a later stg init also fails.\n\n\n-aneesh\n"},{"id":"53707","messageId":"20070921094830.GB26307@diana.vm.bytemark.co.uk","threadId":"9957","inReplyTo":"cc723f590709202140y677a17d0y504b8cfa8b66606b@mail.gmail.com","subject":"Re: stg branch --delete doesn't work","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2007-09-21T09:48:30Z","receivedAt":"2007-09-21T09:48:30Z","isPatch":false,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"On 2007-09-21 10:10:45 +0530, Aneesh Kumar wrote:\n\n> [review@linux-review-ext4]$ git checkout master\n> Switched to branch \"master\"\n> [master@linux-review-ext4]$ stg branch --delete --force review\n> Deleting branch \"review\" ...\n> fatal: Needed a single revision\n> stg branch: refs/heads/review does not exist\n>\n> And it leaves in .git/config\n> [branch \"test2.stgit\"]\n>         stackformatversion = 2\n>\n> So a later stg init also fails.\n\nOw! You'd think we'd have a test for that ...\n\n-- \nKarl Hasselström, kha@treskal.com\n      www.treskal.com/kalle\n"},{"id":"53792","messageId":"20070922084334.29884.60506.stgit@yoghurt","threadId":"9957","inReplyTo":"20070921094830.GB26307@diana.vm.bytemark.co.uk","subject":"[StGit PATCH 0/4] Fix \"stg branch --delete\"","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2007-09-22T08:46:13Z","receivedAt":"2007-09-22T08:46:13Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"This fixes the two issues Aneesh reported (failed branch deletion,\nleftover config stuff), and adds a test. The test is added after the\nfixes this time, so the test suite passes at every step.\n\nAlso available from\n\n  git://repo.or.cz/stgit/kha.git safe\n\n---\n\nKarl Hasselström (4):\n      Add simple test for \"stg branch --delete\"\n      Properly remove all config for a deleted branch\n      Don't try to delete the branch twice\n      Don't special-case the \"master\" branch during branch delete\n\n\n stgit/commands/branch.py |   10 +---------\n stgit/config.py          |    7 +++++++\n stgit/stack.py           |    9 ++-------\n t/t1005-branch-delete.sh |   29 +++++++++++++++++++++++++++++\n 4 files changed, 39 insertions(+), 16 deletions(-)\n create mode 100755 t/t1005-branch-delete.sh\n\n-- \nKarl Hasselström, kha@treskal.com\n      www.treskal.com/kalle\n"},{"id":"53794","messageId":"20070922084619.29884.94401.stgit@yoghurt","threadId":"9957","inReplyTo":"20070922084334.29884.60506.stgit@yoghurt","subject":"[StGit PATCH 1/4] Don't special-case the \"master\" branch during branch delete","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2007-09-22T08:46:19Z","receivedAt":"2007-09-22T08:46:19Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"It's unintuitive, unsymmetric and doesn't work if there is no\n\"master\". Instead, prohibit deletion of the current branch.\n\nSigned-off-by: Karl Hasselström <kha@treskal.com>\n\n---\n\n stgit/commands/branch.py |   11 ++---------\n 1 files changed, 2 insertions(+), 9 deletions(-)\n\n\ndiff --git a/stgit/commands/branch.py b/stgit/commands/branch.py\nindex 2d491d5..8c99936 100644\n--- a/stgit/commands/branch.py\n+++ b/stgit/commands/branch.py\n@@ -96,17 +96,10 @@ def __delete_branch(doomed_name, force = False):\n     out.start('Deleting branch \"%s\"' % doomed_name)\n \n     if __is_current_branch(doomed_name):\n-        check_local_changes()\n-        check_conflicts()\n-        check_head_top_equal()\n-\n-        if doomed_name != 'master':\n-            git.switch_branch('master')\n+        raise CmdException('Cannot delete the current branch')\n \n     doomed.delete(force)\n-\n-    if doomed_name != 'master':\n-        git.delete_branch(doomed_name)\n+    git.delete_branch(doomed_name)\n \n     out.done()\n \n"},{"id":"53793","messageId":"20070922084625.29884.63499.stgit@yoghurt","threadId":"9957","inReplyTo":"20070922084334.29884.60506.stgit@yoghurt","subject":"[StGit PATCH 2/4] Don't try to delete the branch twice","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2007-09-22T08:46:25Z","receivedAt":"2007-09-22T08:46:25Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"We already delete it in Stack.delete(), so don't do it here too.\n\nSigned-off-by: Karl Hasselström <kha@treskal.com>\n\n---\n\n stgit/commands/branch.py |    1 -\n 1 files changed, 0 insertions(+), 1 deletions(-)\n\n\ndiff --git a/stgit/commands/branch.py b/stgit/commands/branch.py\nindex 8c99936..c16fc69 100644\n--- a/stgit/commands/branch.py\n+++ b/stgit/commands/branch.py\n@@ -99,7 +99,6 @@ def __delete_branch(doomed_name, force = False):\n         raise CmdException('Cannot delete the current branch')\n \n     doomed.delete(force)\n-    git.delete_branch(doomed_name)\n \n     out.done()\n \n"},{"id":"53796","messageId":"20070922084630.29884.73015.stgit@yoghurt","threadId":"9957","inReplyTo":"20070922084334.29884.60506.stgit@yoghurt","subject":"[StGit PATCH 3/4] Properly remove all config for a deleted branch","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2007-09-22T08:46:31Z","receivedAt":"2007-09-22T08:46:31Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"This uses \"git-config --remove-section\", which was first released in\ngit 1.5.1-rc1. I'm not sure if this is later than what we used to\ndepend on; we already use \"git-config --rename-section\", but that's\nbeen in since git 1.5.0-rc0.\n\nSigned-off-by: Karl Hasselström <kha@treskal.com>\n\n---\n\n stgit/config.py |    7 +++++++\n stgit/stack.py  |    9 ++-------\n 2 files changed, 9 insertions(+), 7 deletions(-)\n\n\ndiff --git a/stgit/config.py b/stgit/config.py\nindex 799e1d7..51818bd 100644\n--- a/stgit/config.py\n+++ b/stgit/config.py\n@@ -76,6 +76,13 @@ class GitConfig:\n             ).returns([0, 1]).run()\n         self.__cache.clear()\n \n+    def remove_section(self, name):\n+        \"\"\"Remove a section in the config file. Silently do nothing if\n+        the section doesn't exist.\"\"\"\n+        Run('git-repo-config', '--remove-section', name\n+            ).returns([0, 1]).discard_stderr().discard_output()\n+        self.__cache.clear()\n+\n     def set(self, name, value):\n         Run('git-repo-config', name, value).run()\n         self.__cache[name] = value\ndiff --git a/stgit/stack.py b/stgit/stack.py\nindex d6f6a6e..adfff25 100644\n--- a/stgit/stack.py\n+++ b/stgit/stack.py\n@@ -744,13 +744,8 @@ class Series(PatchSet):\n             except GitException:\n                 out.warn('Could not delete branch \"%s\"' % self.get_name())\n \n-        # Cleanup parent informations\n-        # FIXME: should one day make use of git-config --section-remove,\n-        # scheduled for 1.5.1\n-        config.unset('branch.%s.remote' % self.get_name())\n-        config.unset('branch.%s.merge' % self.get_name())\n-        config.unset('branch.%s.stgit.parentbranch' % self.get_name())\n-        config.unset(self.format_version_key())\n+        config.remove_section('branch.%s' % self.get_name())\n+        config.remove_section('branch.%s.stgit' % self.get_name())\n \n     def refresh_patch(self, files = None, message = None, edit = False,\n                       show_patch = False,\n"},{"id":"53795","messageId":"20070922084636.29884.36503.stgit@yoghurt","threadId":"9957","inReplyTo":"20070922084334.29884.60506.stgit@yoghurt","subject":"[StGit PATCH 4/4] Add simple test for \"stg branch --delete\"","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2007-09-22T08:46:36Z","receivedAt":"2007-09-22T08:46:36Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"Signed-off-by: Karl Hasselström <kha@treskal.com>\n\n---\n\n t/t1005-branch-delete.sh |   29 +++++++++++++++++++++++++++++\n 1 files changed, 29 insertions(+), 0 deletions(-)\n create mode 100755 t/t1005-branch-delete.sh\n\n\ndiff --git a/t/t1005-branch-delete.sh b/t/t1005-branch-delete.sh\nnew file mode 100755\nindex 0000000..7a0872e\n--- /dev/null\n+++ b/t/t1005-branch-delete.sh\n@@ -0,0 +1,29 @@\n+#!/bin/sh\n+\n+test_description='Attempt to delete branches'\n+\n+. ./test-lib.sh\n+\n+stg init\n+\n+test_expect_success 'Create a branch (and switch to it)' '\n+    stg branch --create foo\n+    '\n+\n+test_expect_success 'Delete a branch' '\n+    stg branch --delete master\n+    '\n+\n+test_expect_success 'Make sure the branch ref was deleted' '\n+    [ -z \"$(git show-ref | grep master | tee /dev/stderr)\" ]\n+    '\n+\n+test_expect_success 'Make sure the branch config was deleted' '\n+    [ -z \"$(git config -l | grep branch\\\\.master | tee /dev/stderr)\" ]\n+    '\n+\n+test_expect_success 'Make sure the branch files were deleted' '\n+    [ -z \"$(find .git -type f | grep master | tee /dev/stderr)\" ]\n+    '\n+\n+test_done\n"}]}