Skip to content

Commit

Permalink
cmd_merge(): Parse options before checking MERGE_HEAD
Browse files Browse the repository at this point in the history
Reorder the initial part of builtin/merge.c:cmd_merge() so that command-line
options are parsed _before_ we load the index and check for MERGE_HEAD
(and exits if it exists). This does not change the behaviour of 'git merge',
but is needed in preparation for the implementation of 'git merge --abort'
(which requires MERGE_HEAD to be present).

This patch has been improved by the following contributions:
- Junio C Hamano: fixup minor style issues

Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
jherland authored and gitster committed Nov 17, 2010
1 parent 618cd75 commit 2a22c1b
Showing 1 changed file with 17 additions and 16 deletions.
33 changes: 17 additions & 16 deletions builtin/merge.c
Expand Up @@ -895,22 +895,6 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
const char *best_strategy = NULL, *wt_strategy = NULL;
struct commit_list **remotes = &remoteheads;

if (read_cache_unmerged()) {
die_resolve_conflict("merge");
}
if (file_exists(git_path("MERGE_HEAD"))) {
/*
* There is no unmerged entry, don't advise 'git
* add/rm <file>', just 'git commit'.
*/
if (advice_resolve_conflict)
die("You have not concluded your merge (MERGE_HEAD exists).\n"
"Please, commit your changes before you can merge.");
else
die("You have not concluded your merge (MERGE_HEAD exists).");
}

resolve_undo_clear();
/*
* Check if we are _not_ on a detached HEAD, i.e. if there is a
* current branch.
Expand All @@ -929,6 +913,23 @@ int cmd_merge(int argc, const char **argv, const char *prefix)

argc = parse_options(argc, argv, prefix, builtin_merge_options,
builtin_merge_usage, 0);

if (read_cache_unmerged())
die_resolve_conflict("merge");

if (file_exists(git_path("MERGE_HEAD"))) {
/*
* There is no unmerged entry, don't advise 'git
* add/rm <file>', just 'git commit'.
*/
if (advice_resolve_conflict)
die("You have not concluded your merge (MERGE_HEAD exists).\n"
"Please, commit your changes before you can merge.");
else
die("You have not concluded your merge (MERGE_HEAD exists).");
}
resolve_undo_clear();

if (verbosity < 0)
show_diffstat = 0;

Expand Down

0 comments on commit 2a22c1b

Please sign in to comment.