Skip to content

Commit

Permalink
Move set_porcelain_error_msgs to unpack-trees.c and rename it
Browse files Browse the repository at this point in the history
The function is currently dealing only with error messages, but the
intent of calling it is really to notify the unpack-tree mechanics that
it is running in porcelain mode.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Matthieu Moy authored and Junio C Hamano committed Sep 3, 2010
1 parent e935e62 commit dc1166e
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 54 deletions.
2 changes: 1 addition & 1 deletion builtin/checkout.c
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ static int merge_working_tree(struct checkout_opts *opts,
topts.src_index = &the_index;
topts.dst_index = &the_index;

set_porcelain_error_msgs(topts.msgs, "checkout");
setup_unpack_trees_porcelain(topts.msgs, "checkout");

refresh_cache(REFRESH_QUIET);

Expand Down
2 changes: 1 addition & 1 deletion builtin/merge.c
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,7 @@ int checkout_fast_forward(const unsigned char *head, const unsigned char *remote
opts.merge = 1;
opts.fn = twoway_merge;
opts.show_all_errors = 1;
set_porcelain_error_msgs(opts.msgs, "merge");
setup_unpack_trees_porcelain(opts.msgs, "merge");

trees[nr_trees] = parse_tree_indirect(head);
if (!trees[nr_trees++])
Expand Down
46 changes: 1 addition & 45 deletions merge-recursive.c
Original file line number Diff line number Diff line change
Expand Up @@ -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, "merge");
setup_unpack_trees_porcelain(opts.msgs, "merge");

init_tree_desc_from_tree(t+0, common);
init_tree_desc_from_tree(t+1, head);
Expand Down Expand Up @@ -1178,50 +1178,6 @@ static int process_entry(struct merge_options *o,
return clean_merge;
}

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)
msg = "Your local changes to the following files would be overwritten by %s:\n%%s"
"Please, commit your changes or stash them before you can %s.";
else
msg = "Your local changes to the following files would be overwritten by %s:\n%%s";
tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen(cmd2) - 2);
sprintf(tmp, msg, cmd, cmd2);
msgs[ERROR_WOULD_OVERWRITE] = tmp;
msgs[ERROR_NOT_UPTODATE_FILE] = tmp;

msgs[ERROR_NOT_UPTODATE_DIR] =
"Updating the following directories would lose untracked files in it:\n%s";

if (advice_commit_before_merge)
msg = "The following untracked working tree files would be %s by %s:\n%%s"
"Please move or remove them before you can %s.";
else
msg = "The following untracked working tree files would be %s by %s:\n%%s";
tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen("removed") + strlen(cmd2) - 4);
sprintf(tmp, msg, "removed", cmd, cmd2);
msgs[ERROR_WOULD_LOSE_UNTRACKED_REMOVED] = tmp;
tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen("overwritten") + strlen(cmd2) - 4);
sprintf(tmp, msg, "overwritten", cmd, cmd2);
msgs[ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN] = tmp;

/*
* Special case: ERROR_BIND_OVERLAP refers to a pair of paths, we
* cannot easily display it as a list.
*/
msgs[ERROR_BIND_OVERLAP] = "Entry '%s' overlaps with '%s'. Cannot bind.";

msgs[ERROR_SPARSE_NOT_UPTODATE_FILE] =
"Cannot update sparse checkout: the following entries are not up-to-date:\n%s";
msgs[ERROR_WOULD_LOSE_ORPHANED_OVERWRITTEN] =
"The following Working tree files would be overwritten by sparse checkout update:\n%s";
msgs[ERROR_WOULD_LOSE_ORPHANED_REMOVED] =
"The following Working tree files would be removed by sparse checkout update:\n%s";
}

int merge_trees(struct merge_options *o,
struct tree *head,
struct tree *merge,
Expand Down
6 changes: 0 additions & 6 deletions merge-recursive.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,6 @@ struct merge_options {
struct string_list current_directory_set;
};

/*
* 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 */
int merge_recursive(struct merge_options *o,
struct commit *h1,
Expand Down
46 changes: 45 additions & 1 deletion unpack-trees.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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
* situation better. See how "git checkout" and "git merge" replaces
* them using set_porcelain_error_msgs(), for example.
* them using setup_unpack_trees_porcelain(), for example.
*/
const char *unpack_plumbing_errors[NB_UNPACK_TREES_ERROR_TYPES] = {
/* ERROR_WOULD_OVERWRITE */
Expand Down Expand Up @@ -50,6 +50,50 @@ const char *unpack_plumbing_errors[NB_UNPACK_TREES_ERROR_TYPES] = {
? ((o)->msgs[(type)]) \
: (unpack_plumbing_errors[(type)]) )

void setup_unpack_trees_porcelain(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)
msg = "Your local changes to the following files would be overwritten by %s:\n%%s"
"Please, commit your changes or stash them before you can %s.";
else
msg = "Your local changes to the following files would be overwritten by %s:\n%%s";
tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen(cmd2) - 2);
sprintf(tmp, msg, cmd, cmd2);
msgs[ERROR_WOULD_OVERWRITE] = tmp;
msgs[ERROR_NOT_UPTODATE_FILE] = tmp;

msgs[ERROR_NOT_UPTODATE_DIR] =
"Updating the following directories would lose untracked files in it:\n%s";

if (advice_commit_before_merge)
msg = "The following untracked working tree files would be %s by %s:\n%%s"
"Please move or remove them before you can %s.";
else
msg = "The following untracked working tree files would be %s by %s:\n%%s";
tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen("removed") + strlen(cmd2) - 4);
sprintf(tmp, msg, "removed", cmd, cmd2);
msgs[ERROR_WOULD_LOSE_UNTRACKED_REMOVED] = tmp;
tmp = xmalloc(strlen(msg) + strlen(cmd) + strlen("overwritten") + strlen(cmd2) - 4);
sprintf(tmp, msg, "overwritten", cmd, cmd2);
msgs[ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN] = tmp;

/*
* Special case: ERROR_BIND_OVERLAP refers to a pair of paths, we
* cannot easily display it as a list.
*/
msgs[ERROR_BIND_OVERLAP] = "Entry '%s' overlaps with '%s'. Cannot bind.";

msgs[ERROR_SPARSE_NOT_UPTODATE_FILE] =
"Cannot update sparse checkout: the following entries are not up-to-date:\n%s";
msgs[ERROR_WOULD_LOSE_ORPHANED_OVERWRITTEN] =
"The following Working tree files would be overwritten by sparse checkout update:\n%s";
msgs[ERROR_WOULD_LOSE_ORPHANED_REMOVED] =
"The following Working tree files would be removed by sparse checkout update:\n%s";
}

static void add_entry(struct unpack_trees_options *o, struct cache_entry *ce,
unsigned int set, unsigned int clear)
{
Expand Down
6 changes: 6 additions & 0 deletions unpack-trees.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ enum unpack_trees_error_types {
NB_UNPACK_TREES_ERROR_TYPES
};

/*
* Sets the list of user-friendly error messages to be used by the
* command "cmd" (either merge or checkout)
*/
void setup_unpack_trees_porcelain(const char **msgs, const char *cmd);

struct rejected_paths_list {
char *path;
struct rejected_paths_list *next;
Expand Down

0 comments on commit dc1166e

Please sign in to comment.