提交 c8c562a2 编写于 作者: C Clemens Buchacher 提交者: Junio C Hamano

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: NDave Olszewski <cxreg@pobox.com>
Signed-off-by: NClemens Buchacher <drizzd@aon.at>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 6a01554e
...@@ -836,8 +836,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix) ...@@ -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' ' ...@@ -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
' '
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册