mirror of
https://github.com/git/git.git
synced 2026-02-25 09:31:11 +00:00
merge-file: honor merge.conflictStyle outside of a repository
When running outside a repository, git merge-file ignores the merge.conflictStyle configuration variable entirely. Since the function receives `repo` from the caller (which is NULL outside a repository), and repo_config() falls back to reading system and user configuration when passed NULL, pass `repo` to repo_config() unconditionally. Also document that merge.conflictStyle is honored. Signed-off-by: Yannik Tausch <dev@ytausch.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
3e0db84c88
commit
8600b4ec9e
@@ -85,6 +85,9 @@ object store and the object ID of its blob is written to standard output.
|
||||
|
||||
--zdiff3::
|
||||
Show conflicts in "zdiff3" style.
|
||||
+
|
||||
The `--diff3` and `--zdiff3` options default to the value of the
|
||||
`merge.conflictStyle` configuration variable (see linkgit:git-config[1]).
|
||||
|
||||
--ours::
|
||||
--theirs::
|
||||
|
||||
@@ -60,7 +60,7 @@ static int diff_algorithm_cb(const struct option *opt,
|
||||
int cmd_merge_file(int argc,
|
||||
const char **argv,
|
||||
const char *prefix,
|
||||
struct repository *repo UNUSED)
|
||||
struct repository *repo)
|
||||
{
|
||||
const char *names[3] = { 0 };
|
||||
mmfile_t mmfs[3] = { 0 };
|
||||
@@ -95,12 +95,10 @@ int cmd_merge_file(int argc,
|
||||
xmp.style = 0;
|
||||
xmp.favor = 0;
|
||||
|
||||
if (startup_info->have_repository) {
|
||||
/* Read the configuration file */
|
||||
repo_config(the_repository, git_xmerge_config, NULL);
|
||||
if (0 <= git_xmerge_style)
|
||||
xmp.style = git_xmerge_style;
|
||||
}
|
||||
/* Read the configuration file */
|
||||
repo_config(repo, git_xmerge_config, NULL);
|
||||
if (0 <= git_xmerge_style)
|
||||
xmp.style = git_xmerge_style;
|
||||
|
||||
argc = parse_options(argc, argv, prefix, options, merge_file_usage, 0);
|
||||
if (argc != 3)
|
||||
|
||||
@@ -428,6 +428,42 @@ test_expect_success '"diff3 -m" style output (2)' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'merge.conflictStyle honored outside repo' '
|
||||
test_config_global merge.conflictStyle diff3 &&
|
||||
cat >nongit-base <<-\EOF &&
|
||||
line1
|
||||
original
|
||||
line3
|
||||
EOF
|
||||
cat >nongit-ours <<-\EOF &&
|
||||
line1
|
||||
ours
|
||||
line3
|
||||
EOF
|
||||
cat >nongit-theirs <<-\EOF &&
|
||||
line1
|
||||
theirs
|
||||
line3
|
||||
EOF
|
||||
cat >expect <<-\EOF &&
|
||||
line1
|
||||
<<<<<<< ours
|
||||
ours
|
||||
||||||| base
|
||||
original
|
||||
=======
|
||||
theirs
|
||||
>>>>>>> theirs
|
||||
line3
|
||||
EOF
|
||||
test_must_fail nongit git merge-file -p \
|
||||
-L ours -L base -L theirs \
|
||||
"$PWD/nongit-ours" \
|
||||
"$PWD/nongit-base" \
|
||||
"$PWD/nongit-theirs" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'marker size' '
|
||||
cat >expect <<-\EOF &&
|
||||
Dominus regit me,
|
||||
|
||||
Reference in New Issue
Block a user