refuse to merge during a merge
The following is an easy mistake to make for users coming from version control systems with an "update and commit"-style workflow. 1. git pull 2. resolve conflicts 3. git pull Step 3 overrides MERGE_HEAD, starting a new merge with dirty index. IOW, probably not what the user intended. Instead, refuse to merge again if a merge is in progress. Reported-by: Dave Olszewski <cxreg@pobox.com> Signed-off-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
6a01554e63
commit
c8c562a238
@ -836,8 +836,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|||||||
struct commit_list **remotes = &remoteheads;
|
struct commit_list **remotes = &remoteheads;
|
||||||
|
|
||||||
setup_work_tree();
|
setup_work_tree();
|
||||||
|
if (file_exists(git_path("MERGE_HEAD")))
|
||||||
|
die("You have not concluded your merge. (MERGE_HEAD exists)");
|
||||||
if (read_cache_unmerged())
|
if (read_cache_unmerged())
|
||||||
die("You are in the middle of a conflicted merge.");
|
die("You are in the middle of a conflicted merge."
|
||||||
|
" (index unmerged)");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if we are _not_ on a detached HEAD, i.e. if there is a
|
* Check if we are _not_ on a detached HEAD, i.e. if there is a
|
||||||
|
@ -276,6 +276,9 @@ test_expect_success 'fail if the index has unresolved entries' '
|
|||||||
|
|
||||||
test_must_fail git merge "$c5" &&
|
test_must_fail git merge "$c5" &&
|
||||||
test_must_fail git merge "$c5" 2> out &&
|
test_must_fail git merge "$c5" 2> out &&
|
||||||
|
grep "You have not concluded your merge" out &&
|
||||||
|
rm -f .git/MERGE_HEAD &&
|
||||||
|
test_must_fail git merge "$c5" 2> out &&
|
||||||
grep "You are in the middle of a conflicted merge" out
|
grep "You are in the middle of a conflicted merge" out
|
||||||
|
|
||||||
'
|
'
|
||||||
|
Reference in New Issue
Block a user