Skip to content

Commit

Permalink
applypatch: use "index" lines not "applies-to".
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Nov 29, 2005
1 parent e135554 commit bf3e274
Showing 1 changed file with 24 additions and 13 deletions.
37 changes: 24 additions & 13 deletions git-applypatch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,26 +120,36 @@ git-apply --index "$PATCHFILE" || {
O_OBJECT=`cd "$GIT_OBJECT_DIRECTORY" && pwd`
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

# if the patch records the base tree...
sed -ne '
/^diff /q
/^applies-to: \([0-9a-f]*\)$/{
s//\1/p
q
}
' "$PATCHFILE"

# or hoping the patch is against our recent commits...
# Otherwise, try nearby trees that can be used to apply the
# patch.
git-rev-list --max-count=$N HEAD

# or hoping the patch is against known tags...
git-ls-remote --tags .
) |
while read base junk
do
while read base junk
do
# Try it if we have it as a tree.
git-cat-file tree "$base" >/dev/null 2>&1 || continue

Expand All @@ -155,7 +165,8 @@ git-apply --index "$PATCHFILE" || {
mv ../.patch-merge-tmp-index ../.patch-merge-index &&
echo "$base" >../.patch-merge-base
) <"$PATCHFILE" 2>/dev/null && break
done
done
fi

test -f .patch-merge-index &&
his_tree=$(GIT_INDEX_FILE=.patch-merge-index git-write-tree) &&
Expand Down

0 comments on commit bf3e274

Please sign in to comment.