@ -7,16 +7,16 @@
static const char builtin_merge_recursive_usage[] =
static const char builtin_merge_recursive_usage[] =
"git %s <base>... -- <head> <remote> ...";
"git %s <base>... -- <head> <remote> ...";
static const char *better_branch_name(const char *branch)
static char *better_branch_name(const char *branch)
{
{
static char githead_env[8 + GIT_MAX_HEXSZ + 1];
static char githead_env[8 + GIT_MAX_HEXSZ + 1];
char *name;
char *name;
if (strlen(branch) != the_hash_algo->hexsz)
if (strlen(branch) != the_hash_algo->hexsz)
return branch;
return xstrdup(branch);
xsnprintf(githead_env, sizeof(githead_env), "GITHEAD_%s", branch);
xsnprintf(githead_env, sizeof(githead_env), "GITHEAD_%s", branch);
name = getenv(githead_env);
name = getenv(githead_env);
return name ? name : branch;
return xstrdup(name ? name : branch);
}
}
int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
@ -26,6 +26,7 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
int i, failed;
int i, failed;
struct object_id h1, h2;
struct object_id h1, h2;
struct merge_options o;
struct merge_options o;
char *better1, *better2;
struct commit *result;
struct commit *result;
init_merge_options(&o);
init_merge_options(&o);
@ -70,13 +71,17 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
if (get_oid(o.branch2, &h2))
if (get_oid(o.branch2, &h2))
die(_("could not resolve ref '%s'"), o.branch2);
die(_("could not resolve ref '%s'"), o.branch2);
o.branch1 = better_branch_name(o.branch1);
o.branch1 = better1 = better_branch_name(o.branch1);
o.branch2 = better_branch_name(o.branch2);
o.branch2 = better2 = better_branch_name(o.branch2);
if (o.verbosity >= 3)
if (o.verbosity >= 3)
printf(_("Merging %s with %s\n"), o.branch1, o.branch2);
printf(_("Merging %s with %s\n"), o.branch1, o.branch2);
failed = merge_recursive_generic(&o, &h1, &h2, bases_count, bases, &result);
failed = merge_recursive_generic(&o, &h1, &h2, bases_count, bases, &result);
free(better1);
free(better2);
if (failed < 0)
if (failed < 0)
return 128; /* die() error code */
return 128; /* die() error code */
return failed;
return failed;