git-am: add am.threeWay config variable
Add the am.threeWay configuration variable to use the -3 or --3way option of git am by default. When am.threeway is set and not desired for a specific git am command, the --no-3way option can be used to override it. Signed-off-by: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8c8884ce97
commit
d96a275b91
@ -761,6 +761,14 @@ am.keepcr::
|
||||
by giving '--no-keep-cr' from the command line.
|
||||
See linkgit:git-am[1], linkgit:git-mailsplit[1].
|
||||
|
||||
am.threeWay::
|
||||
By default, `git am` will fail if the patch does not apply cleanly. When
|
||||
set to true, this setting tells `git am` to fall back on 3-way merge if
|
||||
the patch records the identity of blobs it is supposed to apply to and
|
||||
we have those blobs available locally (equivalent to giving the `--3way`
|
||||
option from the command line). Defaults to `false`.
|
||||
See linkgit:git-am[1].
|
||||
|
||||
apply.ignoreWhitespace::
|
||||
When set to 'change', tells 'git apply' to ignore changes in
|
||||
whitespace, in the same way as the '--ignore-space-change'
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git am' [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8]
|
||||
[--3way] [--interactive] [--committer-date-is-author-date]
|
||||
[--[no-]3way] [--interactive] [--committer-date-is-author-date]
|
||||
[--ignore-date] [--ignore-space-change | --ignore-whitespace]
|
||||
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
|
||||
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
||||
@ -90,10 +90,13 @@ default. You can use `--no-utf8` to override this.
|
||||
|
||||
-3::
|
||||
--3way::
|
||||
--no-3way::
|
||||
When the patch does not apply cleanly, fall back on
|
||||
3-way merge if the patch records the identity of blobs
|
||||
it is supposed to apply to and we have those blobs
|
||||
available locally.
|
||||
available locally. `--no-3way` can be used to override
|
||||
am.threeWay configuration variable. For more information,
|
||||
see am.threeWay in linkgit:git-config[1].
|
||||
|
||||
--ignore-space-change::
|
||||
--ignore-whitespace::
|
||||
|
@ -390,6 +390,11 @@ then
|
||||
keepcr=t
|
||||
fi
|
||||
|
||||
if test "$(git config --bool --get am.threeWay)" = true
|
||||
then
|
||||
threeway=t
|
||||
fi
|
||||
|
||||
while test $# != 0
|
||||
do
|
||||
case "$1" in
|
||||
@ -401,6 +406,8 @@ it will be removed. Please do not use it anymore."
|
||||
;;
|
||||
-3|--3way)
|
||||
threeway=t ;;
|
||||
--no-3way)
|
||||
threeway=f ;;
|
||||
-s|--signoff)
|
||||
sign=t ;;
|
||||
-u|--utf8)
|
||||
@ -658,6 +665,8 @@ fi
|
||||
if test "$(cat "$dotest/threeway")" = t
|
||||
then
|
||||
threeway=t
|
||||
else
|
||||
threeway=f
|
||||
fi
|
||||
git_apply_opt=$(cat "$dotest/apply-opt")
|
||||
if test "$(cat "$dotest/sign")" = t
|
||||
|
@ -303,6 +303,25 @@ test_expect_success 'am -3 -p0 can read --no-prefix patch' '
|
||||
git diff --exit-code lorem
|
||||
'
|
||||
|
||||
test_expect_success 'am with config am.threeWay falls back to 3-way merge' '
|
||||
rm -fr .git/rebase-apply &&
|
||||
git reset --hard &&
|
||||
git checkout -b lorem4 base3way &&
|
||||
test_config am.threeWay 1 &&
|
||||
git am lorem-move.patch &&
|
||||
test_path_is_missing .git/rebase-apply &&
|
||||
git diff --exit-code lorem
|
||||
'
|
||||
|
||||
test_expect_success 'am with config am.threeWay overridden by --no-3way' '
|
||||
rm -fr .git/rebase-apply &&
|
||||
git reset --hard &&
|
||||
git checkout -b lorem5 base3way &&
|
||||
test_config am.threeWay 1 &&
|
||||
test_must_fail git am --no-3way lorem-move.patch &&
|
||||
test_path_is_dir .git/rebase-apply
|
||||
'
|
||||
|
||||
test_expect_success 'am can rename a file' '
|
||||
grep "^rename from" rename.patch &&
|
||||
rm -fr .git/rebase-apply &&
|
||||
|
Loading…
Reference in New Issue
Block a user