diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-03-12 15:43:06 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-03-12 15:43:15 -0700 |
commit | b91a13bbdca0095b1dc9ffb06bcb5caf4aab56b6 (patch) | |
tree | ddece8bdb532d56cf5bbfd8cc6ef102328e8d456 | |
parent | 0dbe6592ccbd1a394a69a52074e3729d546fe952 (diff) | |
parent | a61ba26a4725d4a93297305315587b92324baf0b (diff) | |
download | git-b91a13bbdca0095b1dc9ffb06bcb5caf4aab56b6.tar.gz git-b91a13bbdca0095b1dc9ffb06bcb5caf4aab56b6.tar.xz |
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
-rwxr-xr-x | git-am.sh | 11 | ||||
-rwxr-xr-x | t/t4150-am.sh | 15 |
2 files changed, 22 insertions, 4 deletions
@@ -127,15 +127,18 @@ fall_back_3way () { mkdir "$dotest/patch-merge-tmp-dir" # First see if the patch records the index info that we can use. - git apply --build-fake-ancestor "$dotest/patch-merge-tmp-index" \ - "$dotest/patch" && + cmd="git apply $git_apply_opt --build-fake-ancestor" && + cmd="$cmd "'"$dotest/patch-merge-tmp-index" "$dotest/patch"' && + eval "$cmd" && GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \ git write-tree >"$dotest/patch-merge-base+" || cannot_fallback "$(gettext "Repository lacks necessary blobs to fall back on 3-way merge.")" 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 mv "$dotest/patch-merge-base+" "$dotest/patch-merge-base" mv "$dotest/patch-merge-tmp-index" "$dotest/patch-merge-index" diff --git a/t/t4150-am.sh b/t/t4150-am.sh index 00d669a3c..658354a6c 100755 --- a/t/t4150-am.sh +++ b/t/t4150-am.sh @@ -123,6 +123,7 @@ test_expect_success setup ' git commit -m "added another file" && git format-patch --stdout master >lorem-move.patch && + git format-patch --no-prefix --stdout master >lorem-zero.patch && git checkout -b rename && git mv file renamed && @@ -276,6 +277,20 @@ test_expect_success 'am -3 falls back to 3-way merge' ' 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' ' grep "^rename from" rename.patch && rm -fr .git/rebase-apply && |