[StGit PATCH 3/3] Make sure that stg uncommit doesn't touch the branch head
- From
Karl Hasselström <kha@treskal.com>
- Date
- Jul 25, 2008, 00:53 UTC
- Message-ID
- <20080725005306.13006.51259.stgit@yoghurt>
- In-Reply-To
- <20080725005154.13006.8908.stgit@yoghurt>
Even if top != head. It used to set head to top; but with this patch, it doesn't anymore.
Signed-off-by: Karl Hasselström <kha@treskal.com>
---
stgit/commands/uncommit.py | 2 +- stgit/lib/transaction.py | 19 ++++++++++--------- t/t1300-uncommit.sh | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/stgit/commands/uncommit.py b/stgit/commands/uncommit.py index eb39fcc..9d2dba9 100644 --- a/stgit/commands/uncommit.py +++ b/stgit/commands/uncommit.py @@ -136,5 +136,5 @@ def func(parser, options, args): for commit, pn in zip(commits, patchnames): trans.patches[pn] = commit trans.applied = list(reversed(patchnames)) + trans.applied - trans.run() + trans.run(set_head = False) out.done() diff --git a/stgit/lib/transaction.py b/stgit/lib/transaction.py index e47997e..23321c7 100644 --- a/stgit/lib/transaction.py +++ b/stgit/lib/transaction.py @@ -138,21 +138,22 @@ class StackTransaction(object): # The only state we need to restore is index+worktree. if iw: self.__checkout(self.__stack.head.data.tree, iw) - def run(self, iw = None): + def run(self, iw = None, set_head = True): """Execute the transaction. Will either succeed, or fail (with an exception) and do nothing.""" self.__check_consistency() new_head = self.__head # Set branch head. - if iw: - try: - self.__checkout(new_head.data.tree, iw) - except git.CheckoutException: - # We have to abort the transaction. - self.abort(iw) - self.__abort() - self.__stack.set_head(new_head, self.__msg) + if set_head: + if iw: + try: + self.__checkout(new_head.data.tree, iw) + except git.CheckoutException: + # We have to abort the transaction. + self.abort(iw) + self.__abort() + self.__stack.set_head(new_head, self.__msg) if self.__error: out.error(self.__error) diff --git a/t/t1300-uncommit.sh b/t/t1300-uncommit.sh index d01eaaa..4a955f6 100755 --- a/t/t1300-uncommit.sh +++ b/t/t1300-uncommit.sh @@ -85,7 +85,7 @@ test_expect_success 'Uncommit a commit with not precisely one parent' ' # stg uncommit should work even when top != head, and should not touch # the head. -test_expect_failure 'Uncommit when top != head' ' +test_expect_success 'Uncommit when top != head' ' stg new -m foo && git reset --hard HEAD^ && h=$(git rev-parse HEAD)