applypatch: use "index" lines not "applies-to".
This matches the 3-way fallback used by applypatch to use per-blob "index" lines, not "applies-to" tree object name, to match what git-am does. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
@ -120,19 +120,29 @@ git-apply --index "$PATCHFILE" || {
|
|||||||
O_OBJECT=`cd "$GIT_OBJECT_DIRECTORY" && pwd`
|
O_OBJECT=`cd "$GIT_OBJECT_DIRECTORY" && pwd`
|
||||||
rm -fr .patch-merge-*
|
rm -fr .patch-merge-*
|
||||||
|
|
||||||
|
if git-apply -z --index-info "$PATCHFILE" \
|
||||||
|
>.patch-merge-index-info 2>/dev/null &&
|
||||||
|
GIT_INDEX_FILE=.patch-merge-tmp-index \
|
||||||
|
git-update-index -z --index-info <.patch-merge-index-info &&
|
||||||
|
GIT_INDEX_FILE=.patch-merge-tmp-index \
|
||||||
|
git-write-tree >.patch-merge-tmp-base &&
|
||||||
|
(
|
||||||
|
mkdir .patch-merge-tmp-dir &&
|
||||||
|
cd .patch-merge-tmp-dir &&
|
||||||
|
GIT_INDEX_FILE="../.patch-merge-tmp-index" \
|
||||||
|
GIT_OBJECT_DIRECTORY="$O_OBJECT" \
|
||||||
|
git-apply $binary --index
|
||||||
|
) <"$PATCHFILE"
|
||||||
|
then
|
||||||
|
echo Using index info to reconstruct a base tree...
|
||||||
|
mv .patch-merge-tmp-base .patch-merge-base
|
||||||
|
mv .patch-merge-tmp-index .patch-merge-index
|
||||||
|
else
|
||||||
(
|
(
|
||||||
N=10
|
N=10
|
||||||
|
|
||||||
# if the patch records the base tree...
|
# Otherwise, try nearby trees that can be used to apply the
|
||||||
sed -ne '
|
# patch.
|
||||||
/^diff /q
|
|
||||||
/^applies-to: \([0-9a-f]*\)$/{
|
|
||||||
s//\1/p
|
|
||||||
q
|
|
||||||
}
|
|
||||||
' "$PATCHFILE"
|
|
||||||
|
|
||||||
# or hoping the patch is against our recent commits...
|
|
||||||
git-rev-list --max-count=$N HEAD
|
git-rev-list --max-count=$N HEAD
|
||||||
|
|
||||||
# or hoping the patch is against known tags...
|
# or hoping the patch is against known tags...
|
||||||
@ -156,6 +166,7 @@ git-apply --index "$PATCHFILE" || {
|
|||||||
echo "$base" >../.patch-merge-base
|
echo "$base" >../.patch-merge-base
|
||||||
) <"$PATCHFILE" 2>/dev/null && break
|
) <"$PATCHFILE" 2>/dev/null && break
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
test -f .patch-merge-index &&
|
test -f .patch-merge-index &&
|
||||||
his_tree=$(GIT_INDEX_FILE=.patch-merge-index git-write-tree) &&
|
his_tree=$(GIT_INDEX_FILE=.patch-merge-index git-write-tree) &&
|
||||||
|
Reference in New Issue
Block a user