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>
This commit is contained in:
parent
08353ebbab
commit
23cbf11b5c
@ -373,7 +373,7 @@ static int merge_working_tree(struct checkout_opts *opts,
|
|||||||
topts.src_index = &the_index;
|
topts.src_index = &the_index;
|
||||||
topts.dst_index = &the_index;
|
topts.dst_index = &the_index;
|
||||||
|
|
||||||
topts.msgs[ERROR_NOT_UPTODATE_FILE] = "You have local changes to '%s'; cannot switch branches.";
|
set_porcelain_error_msgs(topts.msgs, "checkout");
|
||||||
|
|
||||||
refresh_cache(REFRESH_QUIET);
|
refresh_cache(REFRESH_QUIET);
|
||||||
|
|
||||||
|
@ -704,7 +704,7 @@ int checkout_fast_forward(const unsigned char *head, const 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;
|
||||||
set_porcelain_error_msgs(opts.msgs);
|
set_porcelain_error_msgs(opts.msgs, "merge");
|
||||||
|
|
||||||
trees[nr_trees] = parse_tree_indirect(head);
|
trees[nr_trees] = parse_tree_indirect(head);
|
||||||
if (!trees[nr_trees++])
|
if (!trees[nr_trees++])
|
||||||
|
@ -185,7 +185,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;
|
||||||
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+0, common);
|
||||||
init_tree_desc_from_tree(t+1, head);
|
init_tree_desc_from_tree(t+1, head);
|
||||||
@ -1178,19 +1178,32 @@ static int process_entry(struct merge_options *o,
|
|||||||
return clean_merge;
|
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)
|
if (advice_commit_before_merge)
|
||||||
msgs[ERROR_WOULD_OVERWRITE] = msgs[ERROR_NOT_UPTODATE_FILE] =
|
msg = "Your local changes to '%%s' would be overwritten by %s. Aborting.\n"
|
||||||
"Your local changes to '%s' would be overwritten by merge. Aborting.\n"
|
"Please, commit your changes or stash them before you can %s.";
|
||||||
"Please, commit your changes or stash them before you can merge.";
|
|
||||||
else
|
else
|
||||||
msgs[ERROR_WOULD_OVERWRITE] = msgs[ERROR_NOT_UPTODATE_FILE] =
|
msg = "Your local changes to '%%s' would be overwritten by %s. Aborting.";
|
||||||
"Your local changes to '%s' would be overwritten by merge. 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] =
|
msgs[ERROR_NOT_UPTODATE_DIR] =
|
||||||
"Updating '%s' would lose untracked files in it. Aborting.";
|
"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,
|
int merge_trees(struct merge_options *o,
|
||||||
|
@ -23,8 +23,11 @@ struct merge_options {
|
|||||||
struct string_list current_directory_set;
|
struct string_list current_directory_set;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Sets the list of user-friendly error messages to be used by merge */
|
/*
|
||||||
void set_porcelain_error_msgs(const char **msgs);
|
* Sets the list of user-friendly error messages to be used by the
|
||||||
|
* command "cmd" (either merge or checkout)
|
||||||
|
*/
|
||||||
|
void set_porcelain_error_msgs(const char **msgs, const char *cmd);
|
||||||
|
|
||||||
/* 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,
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
* Error messages expected by scripts out of plumbing commands such as
|
* Error messages expected by scripts out of plumbing commands such as
|
||||||
* read-tree. Non-scripted Porcelain is not required to use these messages
|
* read-tree. Non-scripted Porcelain is not required to use these messages
|
||||||
* and in fact are encouraged to reword them to better suit their particular
|
* and in fact are encouraged to reword them to better suit their particular
|
||||||
* situation better. See how "git checkout" replaces ERROR_NOT_UPTODATE_FILE to
|
* situation better. See how "git checkout" and "git merge" replaces
|
||||||
* explain why it does not allow switching between branches when you have
|
* them using set_porcelain_error_msgs(), for example.
|
||||||
* local changes, for example.
|
|
||||||
*/
|
*/
|
||||||
const char *unpack_plumbing_errors[NB_UNPACK_TREES_ERROR_TYPES] = {
|
const char *unpack_plumbing_errors[NB_UNPACK_TREES_ERROR_TYPES] = {
|
||||||
/* ERROR_WOULD_OVERWRITE */
|
/* ERROR_WOULD_OVERWRITE */
|
||||||
|
Loading…
Reference in New Issue
Block a user