Merge branch 'jc/am-3-nonstandard-popt' into maint
The code to synthesize the fake ancestor tree used by 3-way merge fallback in "git am" was not prepared to read a patch created with a non-standard -p<num> value. * jc/am-3-nonstandard-popt: test: "am -3" can accept non-standard -p<num> am -3: allow nonstandard -p<num> option
This commit is contained in:
11
git-am.sh
11
git-am.sh
@ -127,15 +127,18 @@ fall_back_3way () {
|
|||||||
mkdir "$dotest/patch-merge-tmp-dir"
|
mkdir "$dotest/patch-merge-tmp-dir"
|
||||||
|
|
||||||
# First see if the patch records the index info that we can use.
|
# First see if the patch records the index info that we can use.
|
||||||
git apply --build-fake-ancestor "$dotest/patch-merge-tmp-index" \
|
cmd="git apply $git_apply_opt --build-fake-ancestor" &&
|
||||||
"$dotest/patch" &&
|
cmd="$cmd "'"$dotest/patch-merge-tmp-index" "$dotest/patch"' &&
|
||||||
|
eval "$cmd" &&
|
||||||
GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
|
GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
|
||||||
git write-tree >"$dotest/patch-merge-base+" ||
|
git write-tree >"$dotest/patch-merge-base+" ||
|
||||||
cannot_fallback "$(gettext "Repository lacks necessary blobs to fall back on 3-way merge.")"
|
cannot_fallback "$(gettext "Repository lacks necessary blobs to fall back on 3-way merge.")"
|
||||||
|
|
||||||
say Using index info to reconstruct a base tree...
|
say Using index info to reconstruct a base tree...
|
||||||
if GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
|
|
||||||
git apply --cached <"$dotest/patch"
|
cmd='GIT_INDEX_FILE="$dotest/patch-merge-tmp-index"'
|
||||||
|
cmd="$cmd git apply --cached $git_apply_opt"' <"$dotest/patch"'
|
||||||
|
if eval "$cmd"
|
||||||
then
|
then
|
||||||
mv "$dotest/patch-merge-base+" "$dotest/patch-merge-base"
|
mv "$dotest/patch-merge-base+" "$dotest/patch-merge-base"
|
||||||
mv "$dotest/patch-merge-tmp-index" "$dotest/patch-merge-index"
|
mv "$dotest/patch-merge-tmp-index" "$dotest/patch-merge-index"
|
||||||
|
@ -123,6 +123,7 @@ test_expect_success setup '
|
|||||||
git commit -m "added another file" &&
|
git commit -m "added another file" &&
|
||||||
|
|
||||||
git format-patch --stdout master >lorem-move.patch &&
|
git format-patch --stdout master >lorem-move.patch &&
|
||||||
|
git format-patch --no-prefix --stdout master >lorem-zero.patch &&
|
||||||
|
|
||||||
git checkout -b rename &&
|
git checkout -b rename &&
|
||||||
git mv file renamed &&
|
git mv file renamed &&
|
||||||
@ -276,6 +277,20 @@ test_expect_success 'am -3 falls back to 3-way merge' '
|
|||||||
git diff --exit-code lorem
|
git diff --exit-code lorem
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'am -3 -p0 can read --no-prefix patch' '
|
||||||
|
rm -fr .git/rebase-apply &&
|
||||||
|
git reset --hard &&
|
||||||
|
git checkout -b lorem3 master2 &&
|
||||||
|
sed -n -e "3,\$p" msg >file &&
|
||||||
|
head -n 9 msg >>file &&
|
||||||
|
git add file &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m "copied stuff" &&
|
||||||
|
git am -3 -p0 lorem-zero.patch &&
|
||||||
|
! test -d .git/rebase-apply &&
|
||||||
|
git diff --exit-code lorem
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'am can rename a file' '
|
test_expect_success 'am can rename a file' '
|
||||||
grep "^rename from" rename.patch &&
|
grep "^rename from" rename.patch &&
|
||||||
rm -fr .git/rebase-apply &&
|
rm -fr .git/rebase-apply &&
|
||||||
|
Reference in New Issue
Block a user