summaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorDiane Gasselin <diane.gasselin@ensimag.imag.fr>2010-08-11 08:38:05 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-08-11 17:36:03 (GMT)
commit23cbf11b5c08c6d0ab0fd0d6f2dc5a32ca31c745 (patch)
tree61c94915e74e7118388bcc5bb1422eadf2a83bfe /merge-recursive.c
parent08353ebbab2dfdee50a6daa616ec8b6483cb07c8 (diff)
downloadgit-23cbf11b5c08c6d0ab0fd0d6f2dc5a32ca31c745.zip
git-23cbf11b5c08c6d0ab0fd0d6f2dc5a32ca31c745.tar.gz
git-23cbf11b5c08c6d0ab0fd0d6f2dc5a32ca31c745.tar.bz2
merge-recursive: porcelain messages for checkout
A porcelain message was first added in checkout.c in the commit 8ccba008 (Junio C Hamano, Sat May 17 21:03:49 2008, unpack-trees: allow Porcelain to give different error messages) to give better feedback in the case of merge errors. This patch adapts the porcelain messages for the case of checkout instead. This way, when having a checkout error, "merge" no longer appears in the error message. While we're there, we add an advice in the case of would_lose_untracked_file. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index d3bd963..b1e526b 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -185,7 +185,7 @@ static int git_merge_trees(int index_only,
opts.fn = threeway_merge;
opts.src_index = &the_index;
opts.dst_index = &the_index;
- set_porcelain_error_msgs(opts.msgs);
+ set_porcelain_error_msgs(opts.msgs, "merge");
init_tree_desc_from_tree(t+0, common);
init_tree_desc_from_tree(t+1, head);
@@ -1178,19 +1178,32 @@ static int process_entry(struct merge_options *o,
return clean_merge;
}
-void set_porcelain_error_msgs(const char **msgs)
+void set_porcelain_error_msgs(const char **msgs, const char *cmd)
{
+ const char *msg;
+ char *tmp;
+ const char *cmd2 = strcmp(cmd, "checkout") ? cmd : "switch branches";
if (advice_commit_before_merge)
- msgs[ERROR_WOULD_OVERWRITE] = msgs[ERROR_NOT_UPTODATE_FILE] =
- "Your local changes to '%s' would be overwritten by merge. Aborting.\n"
- "Please, commit your changes or stash them before you can merge.";
+ msg = "Your local changes to '%%s' would be overwritten by %s. Aborting.\n"
+ "Please, commit your changes or stash them before you can %s.";
else
- msgs[ERROR_WOULD_OVERWRITE] = msgs[ERROR_NOT_UPTODATE_FILE] =
- "Your local changes to '%s' would be overwritten by merge. Aborting.";
+ msg = "Your local changes to '%%s' would be overwritten by %s. Aborting.";
+ tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen(cmd2) - 3);
+ sprintf(tmp, msg, cmd, cmd2);
+ msgs[ERROR_WOULD_OVERWRITE] = tmp;
+ msgs[ERROR_NOT_UPTODATE_FILE] = tmp;
+
msgs[ERROR_NOT_UPTODATE_DIR] =
"Updating '%s' would lose untracked files in it. Aborting.";
- msgs[ERROR_WOULD_LOSE_UNTRACKED] =
- "Untracked working tree file '%s' would be %s by merge. Aborting";
+
+ if (advice_commit_before_merge)
+ msg = "Untracked working tree file '%%s' would be %%s by %s. Aborting"
+ "Please move or remove them before you can %s.";
+ else
+ msg = "Untracked working tree file '%%s' would be %%s by %s. Aborting";
+ tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen(cmd2) - 3);
+ sprintf(tmp, msg, cmd, cmd2);
+ msgs[ERROR_WOULD_LOSE_UNTRACKED] = tmp;
}
int merge_trees(struct merge_options *o,