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@xxxxxxxxxxx> --- 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) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html