|
|
|
@ -80,7 +80,7 @@ static int option_parse_message(const struct option *opt,
@@ -80,7 +80,7 @@ static int option_parse_message(const struct option *opt,
|
|
|
|
|
strbuf_addf(buf, "%s%s", buf->len ? "\n\n" : "", arg); |
|
|
|
|
have_message = 1; |
|
|
|
|
} else |
|
|
|
|
return error("switch `m' requires a value"); |
|
|
|
|
return error(_("switch `m' requires a value")); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -117,13 +117,13 @@ static struct strategy *get_strategy(const char *name)
@@ -117,13 +117,13 @@ static struct strategy *get_strategy(const char *name)
|
|
|
|
|
exclude_cmds(&main_cmds, ¬_strategies); |
|
|
|
|
} |
|
|
|
|
if (!is_in_cmdlist(&main_cmds, name) && !is_in_cmdlist(&other_cmds, name)) { |
|
|
|
|
fprintf(stderr, "Could not find merge strategy '%s'.\n", name); |
|
|
|
|
fprintf(stderr, "Available strategies are:"); |
|
|
|
|
fprintf(stderr, _("Could not find merge strategy '%s'.\n"), name); |
|
|
|
|
fprintf(stderr, _("Available strategies are:")); |
|
|
|
|
for (i = 0; i < main_cmds.cnt; i++) |
|
|
|
|
fprintf(stderr, " %s", main_cmds.names[i]->name); |
|
|
|
|
fprintf(stderr, ".\n"); |
|
|
|
|
if (other_cmds.cnt) { |
|
|
|
|
fprintf(stderr, "Available custom strategies are:"); |
|
|
|
|
fprintf(stderr, _("Available custom strategies are:")); |
|
|
|
|
for (i = 0; i < other_cmds.cnt; i++) |
|
|
|
|
fprintf(stderr, " %s", other_cmds.names[i]->name); |
|
|
|
|
fprintf(stderr, ".\n"); |
|
|
|
@ -224,17 +224,17 @@ static void save_state(void)
@@ -224,17 +224,17 @@ static void save_state(void)
|
|
|
|
|
cp.git_cmd = 1; |
|
|
|
|
|
|
|
|
|
if (start_command(&cp)) |
|
|
|
|
die("could not run stash."); |
|
|
|
|
die(_("could not run stash.")); |
|
|
|
|
len = strbuf_read(&buffer, cp.out, 1024); |
|
|
|
|
close(cp.out); |
|
|
|
|
|
|
|
|
|
if (finish_command(&cp) || len < 0) |
|
|
|
|
die("stash failed"); |
|
|
|
|
die(_("stash failed")); |
|
|
|
|
else if (!len) |
|
|
|
|
return; |
|
|
|
|
strbuf_setlen(&buffer, buffer.len-1); |
|
|
|
|
if (get_sha1(buffer.buf, stash)) |
|
|
|
|
die("not a valid object: %s", buffer.buf); |
|
|
|
|
die(_("not a valid object: %s"), buffer.buf); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void read_empty(unsigned const char *sha1, int verbose) |
|
|
|
@ -252,7 +252,7 @@ static void read_empty(unsigned const char *sha1, int verbose)
@@ -252,7 +252,7 @@ static void read_empty(unsigned const char *sha1, int verbose)
|
|
|
|
|
args[i] = NULL; |
|
|
|
|
|
|
|
|
|
if (run_command_v_opt(args, RUN_GIT_CMD)) |
|
|
|
|
die("read-tree failed"); |
|
|
|
|
die(_("read-tree failed")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void reset_hard(unsigned const char *sha1, int verbose) |
|
|
|
@ -269,7 +269,7 @@ static void reset_hard(unsigned const char *sha1, int verbose)
@@ -269,7 +269,7 @@ static void reset_hard(unsigned const char *sha1, int verbose)
|
|
|
|
|
args[i] = NULL; |
|
|
|
|
|
|
|
|
|
if (run_command_v_opt(args, RUN_GIT_CMD)) |
|
|
|
|
die("read-tree failed"); |
|
|
|
|
die(_("read-tree failed")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void restore_state(void) |
|
|
|
@ -298,7 +298,7 @@ static void restore_state(void)
@@ -298,7 +298,7 @@ static void restore_state(void)
|
|
|
|
|
static void finish_up_to_date(const char *msg) |
|
|
|
|
{ |
|
|
|
|
if (verbosity >= 0) |
|
|
|
|
printf("%s%s\n", squash ? " (nothing to squash)" : "", msg); |
|
|
|
|
printf("%s%s\n", squash ? _(" (nothing to squash)") : "", msg); |
|
|
|
|
drop_save(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -311,10 +311,10 @@ static void squash_message(void)
@@ -311,10 +311,10 @@ static void squash_message(void)
|
|
|
|
|
int fd; |
|
|
|
|
struct pretty_print_context ctx = {0}; |
|
|
|
|
|
|
|
|
|
printf("Squash commit -- not updating HEAD\n"); |
|
|
|
|
printf(_("Squash commit -- not updating HEAD\n")); |
|
|
|
|
fd = open(git_path("SQUASH_MSG"), O_WRONLY | O_CREAT, 0666); |
|
|
|
|
if (fd < 0) |
|
|
|
|
die_errno("Could not write to '%s'", git_path("SQUASH_MSG")); |
|
|
|
|
die_errno(_("Could not write to '%s'"), git_path("SQUASH_MSG")); |
|
|
|
|
|
|
|
|
|
init_revisions(&rev, NULL); |
|
|
|
|
rev.ignore_merges = 1; |
|
|
|
@ -329,7 +329,7 @@ static void squash_message(void)
@@ -329,7 +329,7 @@ static void squash_message(void)
|
|
|
|
|
|
|
|
|
|
setup_revisions(0, NULL, &rev, NULL); |
|
|
|
|
if (prepare_revision_walk(&rev)) |
|
|
|
|
die("revision walk setup failed"); |
|
|
|
|
die(_("revision walk setup failed")); |
|
|
|
|
|
|
|
|
|
ctx.abbrev = rev.abbrev; |
|
|
|
|
ctx.date_mode = rev.date_mode; |
|
|
|
@ -342,9 +342,9 @@ static void squash_message(void)
@@ -342,9 +342,9 @@ static void squash_message(void)
|
|
|
|
|
pretty_print_commit(rev.commit_format, commit, &out, &ctx); |
|
|
|
|
} |
|
|
|
|
if (write(fd, out.buf, out.len) < 0) |
|
|
|
|
die_errno("Writing SQUASH_MSG"); |
|
|
|
|
die_errno(_("Writing SQUASH_MSG")); |
|
|
|
|
if (close(fd)) |
|
|
|
|
die_errno("Finishing SQUASH_MSG"); |
|
|
|
|
die_errno(_("Finishing SQUASH_MSG")); |
|
|
|
|
strbuf_release(&out); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -364,7 +364,7 @@ static void finish(const unsigned char *new_head, const char *msg)
@@ -364,7 +364,7 @@ static void finish(const unsigned char *new_head, const char *msg)
|
|
|
|
|
squash_message(); |
|
|
|
|
} else { |
|
|
|
|
if (verbosity >= 0 && !merge_msg.len) |
|
|
|
|
printf("No merge message -- not updating HEAD\n"); |
|
|
|
|
printf(_("No merge message -- not updating HEAD\n")); |
|
|
|
|
else { |
|
|
|
|
const char *argv_gc_auto[] = { "gc", "--auto", NULL }; |
|
|
|
|
update_ref(reflog_message.buf, "HEAD", |
|
|
|
@ -386,7 +386,7 @@ static void finish(const unsigned char *new_head, const char *msg)
@@ -386,7 +386,7 @@ static void finish(const unsigned char *new_head, const char *msg)
|
|
|
|
|
if (diff_use_color_default > 0) |
|
|
|
|
DIFF_OPT_SET(&opts, COLOR_DIFF); |
|
|
|
|
if (diff_setup_done(&opts) < 0) |
|
|
|
|
die("diff_setup_done failed"); |
|
|
|
|
die(_("diff_setup_done failed")); |
|
|
|
|
diff_tree_sha1(head, new_head, "", &opts); |
|
|
|
|
diffcore_std(&opts); |
|
|
|
|
diff_flush(&opts); |
|
|
|
@ -415,7 +415,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
@@ -415,7 +415,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
|
|
|
|
|
memset(branch_head, 0, sizeof(branch_head)); |
|
|
|
|
remote_head = peel_to_type(remote, 0, NULL, OBJ_COMMIT); |
|
|
|
|
if (!remote_head) |
|
|
|
|
die("'%s' does not point to a commit", remote); |
|
|
|
|
die(_("'%s' does not point to a commit"), remote); |
|
|
|
|
|
|
|
|
|
if (dwim_ref(remote, strlen(remote), branch_head, &found_ref) > 0) { |
|
|
|
|
if (!prefixcmp(found_ref, "refs/heads/")) { |
|
|
|
@ -480,7 +480,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
@@ -480,7 +480,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
|
|
|
|
|
|
|
|
|
|
fp = fopen(git_path("FETCH_HEAD"), "r"); |
|
|
|
|
if (!fp) |
|
|
|
|
die_errno("could not open '%s' for reading", |
|
|
|
|
die_errno(_("could not open '%s' for reading"), |
|
|
|
|
git_path("FETCH_HEAD")); |
|
|
|
|
strbuf_getline(&line, fp, '\n'); |
|
|
|
|
fclose(fp); |
|
|
|
@ -510,7 +510,7 @@ static int git_merge_config(const char *k, const char *v, void *cb)
@@ -510,7 +510,7 @@ static int git_merge_config(const char *k, const char *v, void *cb)
|
|
|
|
|
buf = xstrdup(v); |
|
|
|
|
argc = split_cmdline(buf, &argv); |
|
|
|
|
if (argc < 0) |
|
|
|
|
die("Bad branch.%s.mergeoptions string: %s", branch, |
|
|
|
|
die(_("Bad branch.%s.mergeoptions string: %s"), branch, |
|
|
|
|
split_cmdline_strerror(argc)); |
|
|
|
|
argv = xrealloc(argv, sizeof(*argv) * (argc + 2)); |
|
|
|
|
memmove(argv + 1, argv, sizeof(*argv) * (argc + 1)); |
|
|
|
@ -532,7 +532,7 @@ static int git_merge_config(const char *k, const char *v, void *cb)
@@ -532,7 +532,7 @@ static int git_merge_config(const char *k, const char *v, void *cb)
|
|
|
|
|
int is_bool; |
|
|
|
|
shortlog_len = git_config_bool_or_int(k, v, &is_bool); |
|
|
|
|
if (!is_bool && shortlog_len < 0) |
|
|
|
|
return error("%s: negative length %s", k, v); |
|
|
|
|
return error(_("%s: negative length %s"), k, v); |
|
|
|
|
if (is_bool && shortlog_len) |
|
|
|
|
shortlog_len = DEFAULT_MERGE_LOG_LEN; |
|
|
|
|
return 0; |
|
|
|
@ -579,7 +579,7 @@ static int read_tree_trivial(unsigned char *common, unsigned char *head,
@@ -579,7 +579,7 @@ static int read_tree_trivial(unsigned char *common, unsigned char *head,
|
|
|
|
|
static void write_tree_trivial(unsigned char *sha1) |
|
|
|
|
{ |
|
|
|
|
if (write_cache_as_tree(sha1, 0, NULL)) |
|
|
|
|
die("git write-tree failed to write a tree"); |
|
|
|
|
die(_("git write-tree failed to write a tree")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int try_merge_command(const char *strategy, size_t xopts_nr, |
|
|
|
@ -621,7 +621,7 @@ int try_merge_command(const char *strategy, size_t xopts_nr,
@@ -621,7 +621,7 @@ int try_merge_command(const char *strategy, size_t xopts_nr,
|
|
|
|
|
free(args); |
|
|
|
|
discard_cache(); |
|
|
|
|
if (read_cache() < 0) |
|
|
|
|
die("failed to read the cache"); |
|
|
|
|
die(_("failed to read the cache")); |
|
|
|
|
resolve_undo_clear(); |
|
|
|
|
|
|
|
|
|
return ret; |
|
|
|
@ -638,7 +638,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
@@ -638,7 +638,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
|
|
|
|
|
if (active_cache_changed && |
|
|
|
|
(write_cache(index_fd, active_cache, active_nr) || |
|
|
|
|
commit_locked_index(lock))) |
|
|
|
|
return error("Unable to write index."); |
|
|
|
|
return error(_("Unable to write index.")); |
|
|
|
|
rollback_lock_file(lock); |
|
|
|
|
|
|
|
|
|
if (!strcmp(strategy, "recursive") || !strcmp(strategy, "subtree")) { |
|
|
|
@ -651,7 +651,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
@@ -651,7 +651,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
|
|
|
|
|
struct commit_list *j; |
|
|
|
|
|
|
|
|
|
if (remoteheads->next) { |
|
|
|
|
error("Not handling anything other than two heads merge."); |
|
|
|
|
error(_("Not handling anything other than two heads merge.")); |
|
|
|
|
return 2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -663,7 +663,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
@@ -663,7 +663,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
|
|
|
|
|
|
|
|
|
|
for (x = 0; x < xopts_nr; x++) |
|
|
|
|
if (parse_merge_opt(&o, xopts[x])) |
|
|
|
|
die("Unknown option for merge-recursive: -X%s", xopts[x]); |
|
|
|
|
die(_("Unknown option for merge-recursive: -X%s"), xopts[x]); |
|
|
|
|
|
|
|
|
|
o.branch1 = head_arg; |
|
|
|
|
o.branch2 = remoteheads->item->util; |
|
|
|
@ -677,7 +677,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
@@ -677,7 +677,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
|
|
|
|
|
if (active_cache_changed && |
|
|
|
|
(write_cache(index_fd, active_cache, active_nr) || |
|
|
|
|
commit_locked_index(lock))) |
|
|
|
|
die ("unable to write %s", get_index_file()); |
|
|
|
|
die (_("unable to write %s"), get_index_file()); |
|
|
|
|
rollback_lock_file(lock); |
|
|
|
|
return clean ? 0 : 1; |
|
|
|
|
} else { |
|
|
|
@ -749,7 +749,7 @@ int checkout_fast_forward(const unsigned char *head, const unsigned char *remote
@@ -749,7 +749,7 @@ int checkout_fast_forward(const unsigned char *head, const unsigned char *remote
|
|
|
|
|
return -1; |
|
|
|
|
if (write_cache(fd, active_cache, active_nr) || |
|
|
|
|
commit_locked_index(lock_file)) |
|
|
|
|
die("unable to write new index file"); |
|
|
|
|
die(_("unable to write new index file")); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -852,7 +852,7 @@ static int suggest_conflicts(int renormalizing)
@@ -852,7 +852,7 @@ static int suggest_conflicts(int renormalizing)
|
|
|
|
|
|
|
|
|
|
fp = fopen(git_path("MERGE_MSG"), "a"); |
|
|
|
|
if (!fp) |
|
|
|
|
die_errno("Could not open '%s' for writing", |
|
|
|
|
die_errno(_("Could not open '%s' for writing"), |
|
|
|
|
git_path("MERGE_MSG")); |
|
|
|
|
fprintf(fp, "\nConflicts:\n"); |
|
|
|
|
for (pos = 0; pos < active_nr; pos++) { |
|
|
|
@ -868,8 +868,8 @@ static int suggest_conflicts(int renormalizing)
@@ -868,8 +868,8 @@ static int suggest_conflicts(int renormalizing)
|
|
|
|
|
} |
|
|
|
|
fclose(fp); |
|
|
|
|
rerere(allow_rerere_auto); |
|
|
|
|
printf("Automatic merge failed; " |
|
|
|
|
"fix conflicts and then commit the result.\n"); |
|
|
|
|
printf(_("Automatic merge failed; " |
|
|
|
|
"fix conflicts and then commit the result.\n")); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -883,7 +883,7 @@ static struct commit *is_old_style_invocation(int argc, const char **argv)
@@ -883,7 +883,7 @@ static struct commit *is_old_style_invocation(int argc, const char **argv)
|
|
|
|
|
return NULL; |
|
|
|
|
second_token = lookup_commit_reference_gently(second_sha1, 0); |
|
|
|
|
if (!second_token) |
|
|
|
|
die("'%s' is not a commit", argv[1]); |
|
|
|
|
die(_("'%s' is not a commit"), argv[1]); |
|
|
|
|
if (hashcmp(second_token->object.sha1, head)) |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
@ -951,7 +951,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -951,7 +951,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
const char *nargv[] = {"reset", "--merge", NULL}; |
|
|
|
|
|
|
|
|
|
if (!file_exists(git_path("MERGE_HEAD"))) |
|
|
|
|
die("There is no merge to abort (MERGE_HEAD missing)."); |
|
|
|
|
die(_("There is no merge to abort (MERGE_HEAD missing).")); |
|
|
|
|
|
|
|
|
|
/* Invoke 'git reset --merge' */ |
|
|
|
|
return cmd_reset(nargc, nargv, prefix); |
|
|
|
@ -966,10 +966,10 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -966,10 +966,10 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
* 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."); |
|
|
|
|
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)."); |
|
|
|
|
die(_("You have not concluded your merge (MERGE_HEAD exists).")); |
|
|
|
|
} |
|
|
|
|
resolve_undo_clear(); |
|
|
|
|
|
|
|
|
@ -978,12 +978,12 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -978,12 +978,12 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
|
|
|
|
|
if (squash) { |
|
|
|
|
if (!allow_fast_forward) |
|
|
|
|
die("You cannot combine --squash with --no-ff."); |
|
|
|
|
die(_("You cannot combine --squash with --no-ff.")); |
|
|
|
|
option_commit = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!allow_fast_forward && fast_forward_only) |
|
|
|
|
die("You cannot combine --no-ff with --ff-only."); |
|
|
|
|
die(_("You cannot combine --no-ff with --ff-only.")); |
|
|
|
|
|
|
|
|
|
if (!argc) |
|
|
|
|
usage_with_options(builtin_merge_usage, |
|
|
|
@ -1011,16 +1011,16 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1011,16 +1011,16 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
* We do the same for "git pull". |
|
|
|
|
*/ |
|
|
|
|
if (argc != 1) |
|
|
|
|
die("Can merge only exactly one commit into " |
|
|
|
|
"empty head"); |
|
|
|
|
die(_("Can merge only exactly one commit into " |
|
|
|
|
"empty head")); |
|
|
|
|
if (squash) |
|
|
|
|
die("Squash commit into empty head not supported yet"); |
|
|
|
|
die(_("Squash commit into empty head not supported yet")); |
|
|
|
|
if (!allow_fast_forward) |
|
|
|
|
die("Non-fast-forward commit does not make sense into " |
|
|
|
|
"an empty head"); |
|
|
|
|
die(_("Non-fast-forward commit does not make sense into " |
|
|
|
|
"an empty head")); |
|
|
|
|
remote_head = peel_to_type(argv[0], 0, NULL, OBJ_COMMIT); |
|
|
|
|
if (!remote_head) |
|
|
|
|
die("%s - not something we can merge", argv[0]); |
|
|
|
|
die(_("%s - not something we can merge"), argv[0]); |
|
|
|
|
update_ref("initial pull", "HEAD", remote_head->sha1, NULL, 0, |
|
|
|
|
DIE_ON_ERR); |
|
|
|
|
read_empty(remote_head->sha1, 0); |
|
|
|
@ -1066,7 +1066,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1066,7 +1066,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
|
|
|
|
|
o = peel_to_type(argv[i], 0, NULL, OBJ_COMMIT); |
|
|
|
|
if (!o) |
|
|
|
|
die("%s - not something we can merge", argv[i]); |
|
|
|
|
die(_("%s - not something we can merge"), argv[i]); |
|
|
|
|
commit = lookup_commit(o->sha1); |
|
|
|
|
commit->util = (void *)argv[i]; |
|
|
|
|
remotes = &commit_list_insert(commit, remotes)->next; |
|
|
|
@ -1158,11 +1158,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1158,11 +1158,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
if (allow_trivial && !fast_forward_only) { |
|
|
|
|
/* See if it is really trivial. */ |
|
|
|
|
git_committer_info(IDENT_ERROR_ON_NO_NAME); |
|
|
|
|
printf("Trying really trivial in-index merge...\n"); |
|
|
|
|
printf(_("Trying really trivial in-index merge...\n")); |
|
|
|
|
if (!read_tree_trivial(common->item->object.sha1, |
|
|
|
|
head, remoteheads->item->object.sha1)) |
|
|
|
|
return merge_trivial(); |
|
|
|
|
printf("Nope.\n"); |
|
|
|
|
printf(_("Nope.\n")); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
/* |
|
|
|
@ -1195,7 +1195,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1195,7 +1195,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (fast_forward_only) |
|
|
|
|
die("Not possible to fast-forward, aborting."); |
|
|
|
|
die(_("Not possible to fast-forward, aborting.")); |
|
|
|
|
|
|
|
|
|
/* We are going to make a new commit. */ |
|
|
|
|
git_committer_info(IDENT_ERROR_ON_NO_NAME); |
|
|
|
@ -1221,11 +1221,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1221,11 +1221,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
for (i = 0; i < use_strategies_nr; i++) { |
|
|
|
|
int ret; |
|
|
|
|
if (i) { |
|
|
|
|
printf("Rewinding the tree to pristine...\n"); |
|
|
|
|
printf(_("Rewinding the tree to pristine...\n")); |
|
|
|
|
restore_state(); |
|
|
|
|
} |
|
|
|
|
if (use_strategies_nr != 1) |
|
|
|
|
printf("Trying merge strategy %s...\n", |
|
|
|
|
printf(_("Trying merge strategy %s...\n"), |
|
|
|
|
use_strategies[i]->name); |
|
|
|
|
/* |
|
|
|
|
* Remember which strategy left the state in the working |
|
|
|
@ -1286,17 +1286,17 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1286,17 +1286,17 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
restore_state(); |
|
|
|
|
if (use_strategies_nr > 1) |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"No merge strategy handled the merge.\n"); |
|
|
|
|
_("No merge strategy handled the merge.\n")); |
|
|
|
|
else |
|
|
|
|
fprintf(stderr, "Merge with strategy %s failed.\n", |
|
|
|
|
fprintf(stderr, _("Merge with strategy %s failed.\n"), |
|
|
|
|
use_strategies[0]->name); |
|
|
|
|
return 2; |
|
|
|
|
} else if (best_strategy == wt_strategy) |
|
|
|
|
; /* We already have its result in the working tree. */ |
|
|
|
|
else { |
|
|
|
|
printf("Rewinding the tree to pristine...\n"); |
|
|
|
|
printf(_("Rewinding the tree to pristine...\n")); |
|
|
|
|
restore_state(); |
|
|
|
|
printf("Using the %s to prepare resolving by hand.\n", |
|
|
|
|
printf(_("Using the %s to prepare resolving by hand.\n"), |
|
|
|
|
best_strategy); |
|
|
|
|
try_merge_strategy(best_strategy, common, head_arg); |
|
|
|
|
} |
|
|
|
@ -1312,35 +1312,35 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1312,35 +1312,35 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|
|
|
|
sha1_to_hex(j->item->object.sha1)); |
|
|
|
|
fd = open(git_path("MERGE_HEAD"), O_WRONLY | O_CREAT, 0666); |
|
|
|
|
if (fd < 0) |
|
|
|
|
die_errno("Could not open '%s' for writing", |
|
|
|
|
die_errno(_("Could not open '%s' for writing"), |
|
|
|
|
git_path("MERGE_HEAD")); |
|
|
|
|
if (write_in_full(fd, buf.buf, buf.len) != buf.len) |
|
|
|
|
die_errno("Could not write to '%s'", git_path("MERGE_HEAD")); |
|
|
|
|
die_errno(_("Could not write to '%s'"), git_path("MERGE_HEAD")); |
|
|
|
|
close(fd); |
|
|
|
|
strbuf_addch(&merge_msg, '\n'); |
|
|
|
|
fd = open(git_path("MERGE_MSG"), O_WRONLY | O_CREAT, 0666); |
|
|
|
|
if (fd < 0) |
|
|
|
|
die_errno("Could not open '%s' for writing", |
|
|
|
|
die_errno(_("Could not open '%s' for writing"), |
|
|
|
|
git_path("MERGE_MSG")); |
|
|
|
|
if (write_in_full(fd, merge_msg.buf, merge_msg.len) != |
|
|
|
|
merge_msg.len) |
|
|
|
|
die_errno("Could not write to '%s'", git_path("MERGE_MSG")); |
|
|
|
|
die_errno(_("Could not write to '%s'"), git_path("MERGE_MSG")); |
|
|
|
|
close(fd); |
|
|
|
|
fd = open(git_path("MERGE_MODE"), O_WRONLY | O_CREAT | O_TRUNC, 0666); |
|
|
|
|
if (fd < 0) |
|
|
|
|
die_errno("Could not open '%s' for writing", |
|
|
|
|
die_errno(_("Could not open '%s' for writing"), |
|
|
|
|
git_path("MERGE_MODE")); |
|
|
|
|
strbuf_reset(&buf); |
|
|
|
|
if (!allow_fast_forward) |
|
|
|
|
strbuf_addf(&buf, "no-ff"); |
|
|
|
|
if (write_in_full(fd, buf.buf, buf.len) != buf.len) |
|
|
|
|
die_errno("Could not write to '%s'", git_path("MERGE_MODE")); |
|
|
|
|
die_errno(_("Could not write to '%s'"), git_path("MERGE_MODE")); |
|
|
|
|
close(fd); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (merge_was_ok) { |
|
|
|
|
fprintf(stderr, "Automatic merge went well; " |
|
|
|
|
"stopped before committing as requested\n"); |
|
|
|
|
fprintf(stderr, _("Automatic merge went well; " |
|
|
|
|
"stopped before committing as requested\n")); |
|
|
|
|
return 0; |
|
|
|
|
} else |
|
|
|
|
return suggest_conflicts(option_renormalize); |
|
|
|
|