merge-recursive --renormalize
Teach "git merge-recursive" a --renormalize option to enable the merge.renormalize configuration. The --no-renormalize option can be used to override it in the negative. So in the future, you might be able to, e.g.: git checkout -m -Xrenormalize otherbranch or git revert -Xrenormalize otherpatch or git pull --rebase -Xrenormalize The bad part: merge.renormalize is still not honored for most commands. And it reveals lots of places that -X has not been plumbed in (so we get "git merge -Xrenormalize" but not much else). NEEDSWORK: tests Cc: Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
ff8ba59e7b
commit
7610fa57e6
@ -54,6 +54,7 @@ static size_t use_strategies_nr, use_strategies_alloc;
|
||||
static const char **xopts;
|
||||
static size_t xopts_nr, xopts_alloc;
|
||||
static const char *branch;
|
||||
static int option_renormalize;
|
||||
static int verbosity;
|
||||
static int allow_rerere_auto;
|
||||
|
||||
@ -503,9 +504,8 @@ static int git_merge_config(const char *k, const char *v, void *cb)
|
||||
return git_config_string(&pull_octopus, k, v);
|
||||
else if (!strcmp(k, "merge.log") || !strcmp(k, "merge.summary"))
|
||||
option_log = git_config_bool(k, v);
|
||||
else if (!strcmp(k, "merge.renormalize")) {
|
||||
merge_renormalize = git_config_bool(k, v);
|
||||
}
|
||||
else if (!strcmp(k, "merge.renormalize"))
|
||||
option_renormalize = git_config_bool(k, v);
|
||||
return git_diff_ui_config(k, v, cb);
|
||||
}
|
||||
|
||||
@ -627,6 +627,11 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
|
||||
if (!strcmp(strategy, "subtree"))
|
||||
o.subtree_shift = "";
|
||||
|
||||
o.renormalize = option_renormalize;
|
||||
|
||||
/*
|
||||
* NEEDSWORK: merge with table in builtin/merge-recursive
|
||||
*/
|
||||
for (x = 0; x < xopts_nr; x++) {
|
||||
if (!strcmp(xopts[x], "ours"))
|
||||
o.recursive_variant = MERGE_RECURSIVE_OURS;
|
||||
@ -636,6 +641,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
|
||||
o.subtree_shift = "";
|
||||
else if (!prefixcmp(xopts[x], "subtree="))
|
||||
o.subtree_shift = xopts[x]+8;
|
||||
else if (!strcmp(xopts[x], "renormalize"))
|
||||
o.renormalize = 1;
|
||||
else if (!strcmp(xopts[x], "no-renormalize"))
|
||||
o.renormalize = 0;
|
||||
else
|
||||
die("Unknown option for merge-recursive: -X%s", xopts[x]);
|
||||
}
|
||||
@ -819,7 +828,7 @@ static int finish_automerge(struct commit_list *common,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int suggest_conflicts(void)
|
||||
static int suggest_conflicts(int renormalizing)
|
||||
{
|
||||
FILE *fp;
|
||||
int pos;
|
||||
@ -1304,5 +1313,5 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
||||
"stopped before committing as requested\n");
|
||||
return 0;
|
||||
} else
|
||||
return suggest_conflicts();
|
||||
return suggest_conflicts(option_renormalize);
|
||||
}
|
||||
|
Reference in New Issue
Block a user