From: Catalin Marinas Date: Thu, 17 Dec 2009 23:22:12 GMT Subject: [RFC PATCH] Record a single transaction for conflicting push operations Message-ID: <20091217232212.4869.43002.stgit@toshiba-laptop> StGit commands resulting in a conflicting patch pushing record two transactions in the log (with one of them being inconsistent with HEAD != top). Undoing such operations requires two "stg undo" (possibly with --hard) commands which is unintuitive. This patch changes such operations to only record one log entry and "stg undo" reverts the stack to the state prior to the operation. Signed-off-by: Catalin Marinas Cc: Gustav HÃ¥llberg Cc: Karl Wiberg --- stgit/lib/transaction.py | 5 +++-- t/t3103-undo-hard.sh | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/stgit/lib/transaction.py b/stgit/lib/transaction.py index 30a153b..fad5ab4 100644 --- a/stgit/lib/transaction.py +++ b/stgit/lib/transaction.py @@ -232,8 +232,9 @@ class StackTransaction(object): self.__stack.patchorder.hidden = self.__hidden log.log_entry(self.__stack, msg) old_applied = self.__stack.patchorder.applied - write(self.__msg) - if self.__conflicting_push != None: + if not self.__conflicting_push: + write(self.__msg) + else: self.__patches = _TransPatchMap(self.__stack) self.__conflicting_push() write(self.__msg + ' (CONFLICT)') diff --git a/t/t3103-undo-hard.sh b/t/t3103-undo-hard.sh index 2d0f382..df14b1f 100755 --- a/t/t3103-undo-hard.sh +++ b/t/t3103-undo-hard.sh @@ -46,11 +46,11 @@ test_expect_success 'Try to undo without --hard' ' cat > expected.txt < actual.txt && test_cmp expected.txt actual.txt && - test "$(echo $(stg series))" = "> p1 - p2 - p3" && + test "$(echo $(stg series))" = "+ p1 + p2 > p3" && test "$(stg id)" = "$(stg id $(stg top))" '