[PATCH] wt-status.c: set commitable bit if there is a meaningful merge.
- From
- Stephen P. Smith <ischis2@cox.net>
- Date
- Feb 16, 2016, 02:38 UTC
- Message-ID
- <1455590305-30923-1-git-send-email-ischis2@cox.net>
- In-Reply-To
- <72756249.nAoBccgOj7@thunderbird>
The 'commit --dry-run' and commit return values differed if a conflicted merge had been resolved and the commit would be the same as the parent.
Update show_merge_in_progress to set the commitable bit if conflicts have been resolved and a merge is in progress.
Signed-off-by: Stephen P. Smith <ischis2@cox.net> ---
Notes:
In the original report when the dry run switch was passed and after
the merge commit was resolved head and index matched leading to a
returned value of 1. [1]
If the dry run switch was not passed, the commit would succeed to
correctly record the resolution.
The result was that a dry run would report that there would be a
failure, but there really isn't a failure if the commit is actually
attemped.
[1] $gmane/276591
It appeared that the conditional for 'Reject an attempt to record a
non-merge empty commit without * explicit --allow-empty.' could be
simplified after adding this patch.
This change can't be propagated to the conditional because it allows
a commit that was previously disallowed.t/t7501-commit.sh | 20 ++++++++++++++++++++ wt-status.c | 1 + 2 files changed, 21 insertions(+)
diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh index 63e0427..363abb1 100755 --- a/t/t7501-commit.sh +++ b/t/t7501-commit.sh @@ -587,4 +587,24 @@ test_expect_success '--only works on to-be-born branch' ' test_cmp expected actual ' +test_expect_success '--dry-run with conflicts fixed from a merge' ' + # setup two branches with conflicting information + # in the same file, resolve the conflict, + # call commit with --dry-run + echo "Initial contents, unimportant" >test-file && + git add test-file && + git commit -m "Initial commit" && + echo "commit-1-state" >test-file && + git commit -m "commit 1" -i test-file && + git tag commit-1 && + git checkout -b branch-2 HEAD^1 && + echo "commit-2-state" >test-file && + git commit -m "commit 2" -i test-file && + ! $(git merge --no-commit commit-1) && + echo "commit-2-state" >test-file && + git add test-file && + git commit --dry-run && + git commit -m "conflicts fixed from merge." +' + test_done diff --git a/wt-status.c b/wt-status.c index ab4f80d..1374b48 100644 --- a/wt-status.c +++ b/wt-status.c @@ -950,6 +950,7 @@ static void show_merge_in_progress(struct wt_status *s, status_printf_ln(s, color, _(" (fix conflicts and run \"git commit\")")); } else { + s-> commitable = 1; status_printf_ln(s, color, _("All conflicts fixed but you are still merging.")); if (s->hints)
-- 2.7.0.GIT