Skip to content

Commit

Permalink
merge: make merge.renormalize work for all uses of merge machinery
Browse files Browse the repository at this point in the history
The 'merge' command is not the only one that does merges; other commands
like checkout -m or rebase do as well.  Unfortunately, the only area of
the code that checked for the "merge.renormalize" config setting was in
builtin/merge.c, meaning it could only affect merges performed by the
"merge" command.  Move the handling of this config setting to
merge_recursive_config() so that other commands can benefit from it as
well.  Fixes a few tests in t6038.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
newren authored and gitster committed Aug 3, 2020
1 parent 6f6e7cf commit 8d55225
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 13 deletions.
7 changes: 0 additions & 7 deletions builtin/checkout.c
Expand Up @@ -771,13 +771,6 @@ static int merge_working_tree(const struct checkout_opts *opts,
*/

add_files_to_cache(NULL, NULL, 0);
/*
* NEEDSWORK: carrying over local changes
* when branches have different end-of-line
* normalization (or clean+smudge rules) is
* a pain; plumb in an option to set
* o.renormalize?
*/
init_merge_options(&o, the_repository);
o.verbosity = 0;
work = write_in_core_index_as_tree(the_repository);
Expand Down
4 changes: 0 additions & 4 deletions builtin/merge.c
Expand Up @@ -72,7 +72,6 @@ static const char **xopts;
static size_t xopts_nr, xopts_alloc;
static const char *branch;
static char *branch_mergeoptions;
static int option_renormalize;
static int verbosity;
static int allow_rerere_auto;
static int abort_current_merge;
Expand Down Expand Up @@ -621,8 +620,6 @@ 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, "commit.cleanup"))
return git_config_string(&cleanup_arg, k, v);
else if (!strcmp(k, "merge.renormalize"))
option_renormalize = git_config_bool(k, v);
else if (!strcmp(k, "merge.ff")) {
int boolval = git_parse_maybe_bool(v);
if (0 <= boolval) {
Expand Down Expand Up @@ -721,7 +718,6 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
if (!strcmp(strategy, "subtree"))
o.subtree_shift = "";

o.renormalize = option_renormalize;
o.show_rename_progress =
show_progress == -1 ? isatty(2) : show_progress;

Expand Down
3 changes: 3 additions & 0 deletions merge-recursive.c
Expand Up @@ -3791,9 +3791,12 @@ int merge_recursive_generic(struct merge_options *opt,
static void merge_recursive_config(struct merge_options *opt)
{
char *value = NULL;
int renormalize = 0;
git_config_get_int("merge.verbosity", &opt->verbosity);
git_config_get_int("diff.renamelimit", &opt->rename_limit);
git_config_get_int("merge.renamelimit", &opt->rename_limit);
git_config_get_bool("merge.renormalize", &renormalize);
opt->renormalize = renormalize;
if (!git_config_get_string("diff.renames", &value)) {
opt->detect_renames = git_config_rename("diff.renames", value);
free(value);
Expand Down
4 changes: 2 additions & 2 deletions t/t6038-merge-text-auto.sh
Expand Up @@ -158,7 +158,7 @@ test_expect_success 'Detect LF/CRLF conflict from addition of text=auto' '
compare_files expected file.fuzzy
'

test_expect_failure 'checkout -m after setting text=auto' '
test_expect_success 'checkout -m after setting text=auto' '
cat <<-\EOF >expected &&
first line
same line
Expand All @@ -173,7 +173,7 @@ test_expect_failure 'checkout -m after setting text=auto' '
git diff --no-index --ignore-cr-at-eol expected file
'

test_expect_failure 'checkout -m addition of text=auto' '
test_expect_success 'checkout -m addition of text=auto' '
cat <<-\EOF >expected &&
first line
same line
Expand Down

0 comments on commit 8d55225

Please sign in to comment.