Merge branch 'mm/maint-merge-ff-error-message-fix' into maint

* mm/maint-merge-ff-error-message-fix:
  builtin-merge: show user-friendly error messages for fast-forward too.
  merge-recursive: make the error-message generation an extern function

Conflicts:
	merge-recursive.c
This commit is contained in:
Junio C Hamano 2009-12-08 22:42:23 -08:00
commit 5c30b8f7dd
3 changed files with 27 additions and 18 deletions

View File

@ -650,6 +650,7 @@ static int checkout_fast_forward(unsigned char *head, unsigned char *remote)
opts.verbose_update = 1; opts.verbose_update = 1;
opts.merge = 1; opts.merge = 1;
opts.fn = twoway_merge; opts.fn = twoway_merge;
opts.msgs = get_porcelain_error_msgs();
trees[nr_trees] = parse_tree_indirect(head); trees[nr_trees] = parse_tree_indirect(head);
if (!trees[nr_trees++]) if (!trees[nr_trees++])

View File

@ -171,23 +171,6 @@ static int git_merge_trees(int index_only,
int rc; int rc;
struct tree_desc t[3]; struct tree_desc t[3];
struct unpack_trees_options opts; struct unpack_trees_options opts;
struct unpack_trees_error_msgs msgs = {
/* would_overwrite */
"Your local changes to '%s' would be overwritten by merge. Aborting.",
/* not_uptodate_file */
"Your local changes to '%s' would be overwritten by merge. Aborting.",
/* not_uptodate_dir */
"Updating '%s' would lose untracked files in it. Aborting.",
/* would_lose_untracked */
"Untracked working tree file '%s' would be %s by merge. Aborting",
/* bind_overlap -- will not happen here */
NULL,
};
if (advice_commit_before_merge) {
msgs.would_overwrite = msgs.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.";
}
memset(&opts, 0, sizeof(opts)); memset(&opts, 0, sizeof(opts));
if (index_only) if (index_only)
@ -199,7 +182,7 @@ static int git_merge_trees(int index_only,
opts.fn = threeway_merge; opts.fn = threeway_merge;
opts.src_index = &the_index; opts.src_index = &the_index;
opts.dst_index = &the_index; opts.dst_index = &the_index;
opts.msgs = msgs; opts.msgs = get_porcelain_error_msgs();
init_tree_desc_from_tree(t+0, common); init_tree_desc_from_tree(t+0, common);
init_tree_desc_from_tree(t+1, head); init_tree_desc_from_tree(t+1, head);
@ -1186,6 +1169,28 @@ static int process_entry(struct merge_options *o,
return clean_merge; return clean_merge;
} }
struct unpack_trees_error_msgs get_porcelain_error_msgs(void)
{
struct unpack_trees_error_msgs msgs = {
/* would_overwrite */
"Your local changes to '%s' would be overwritten by merge. Aborting.",
/* not_uptodate_file */
"Your local changes to '%s' would be overwritten by merge. Aborting.",
/* not_uptodate_dir */
"Updating '%s' would lose untracked files in it. Aborting.",
/* would_lose_untracked */
"Untracked working tree file '%s' would be %s by merge. Aborting",
/* bind_overlap -- will not happen here */
NULL,
};
if (advice_commit_before_merge) {
msgs.would_overwrite = msgs.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.";
}
return msgs;
}
int merge_trees(struct merge_options *o, int merge_trees(struct merge_options *o,
struct tree *head, struct tree *head,
struct tree *merge, struct tree *merge,

View File

@ -17,6 +17,9 @@ struct merge_options {
struct string_list current_directory_set; struct string_list current_directory_set;
}; };
/* Return a list of user-friendly error messages to be used by merge */
struct unpack_trees_error_msgs get_porcelain_error_msgs(void);
/* merge_trees() but with recursive ancestor consolidation */ /* merge_trees() but with recursive ancestor consolidation */
int merge_recursive(struct merge_options *o, int merge_recursive(struct merge_options *o,
struct commit *h1, struct commit *h1,