Merge branch 'jc/apply'
authorJunio C Hamano <junkio@cox.net>
Wed, 17 May 2006 22:47:33 +0000 (15:47 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 17 May 2006 22:47:33 +0000 (15:47 -0700)
* jc/apply:
  git-am: use apply --cached
  apply --cached: apply a patch without using working tree.
  apply --numstat: show new name, not old name.

1  2 
git-am.sh

diff --combined git-am.sh
+++ b/git-am.sh
@@@ -15,10 -15,6 +15,10 @@@ stop_here () 
  }
  
  stop_here_user_resolve () {
 +    if [ -n "$resolvemsg" ]; then
 +          echo "$resolvemsg"
 +          stop_here $1
 +    fi
      cmdline=$(basename $0)
      if test '' != "$interactive"
      then
@@@ -59,46 -55,12 +59,12 @@@ fall_back_3way () 
        GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
        git-write-tree >"$dotest/patch-merge-base+" &&
        # index has the base tree now.
-       (
-           cd "$dotest/patch-merge-tmp-dir" &&
-           GIT_INDEX_FILE="../patch-merge-tmp-index" \
-           GIT_OBJECT_DIRECTORY="$O_OBJECT" \
-           git-apply $binary --index <../patch
-         )
+       GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
+       git-apply $binary --cached <"$dotest/patch"
      then
        echo Using index info to reconstruct a base tree...
        mv "$dotest/patch-merge-base+" "$dotest/patch-merge-base"
        mv "$dotest/patch-merge-tmp-index" "$dotest/patch-merge-index"
-     else
-       # Otherwise, try nearby trees that can be used to apply the
-       # patch.
-       (
-           N=10
-           # Hoping the patch is against our recent commits...
-           git-rev-list --max-count=$N HEAD
-           # or hoping the patch is against known tags...
-           git-ls-remote --tags .
-       ) |
-       while read base junk
-       do
-           # See if we have it as a tree...
-           git-cat-file tree "$base" >/dev/null 2>&1 || continue
-           rm -fr "$dotest"/patch-merge-* &&
-           mkdir "$dotest/patch-merge-tmp-dir" || break
-           (
-               cd "$dotest/patch-merge-tmp-dir" &&
-               GIT_INDEX_FILE=../patch-merge-tmp-index &&
-               GIT_OBJECT_DIRECTORY="$O_OBJECT" &&
-               export GIT_INDEX_FILE GIT_OBJECT_DIRECTORY &&
-               git-read-tree "$base" &&
-               git-apply $binary --index &&
-               mv ../patch-merge-tmp-index ../patch-merge-index &&
-               echo "$base" >../patch-merge-base
-           ) <"$dotest/patch"  2>/dev/null && break
-       done
      fi
  
      test -f "$dotest/patch-merge-index" &&
  }
  
  prec=4
 -dotest=.dotest sign= utf8= keep= skip= interactive= resolved= binary= ws=
 +dotest=.dotest sign= utf8= keep= skip= interactive= resolved= binary= ws= resolvemsg=
  
  while case "$#" in 0) break;; esac
  do
        --whitespace=*)
        ws=$1; shift ;;
  
 +      --resolvemsg=*)
 +      resolvemsg=$(echo "$1" | sed -e "s/^--resolvemsg=//"); shift ;;
 +
        --)
        shift; break ;;
        -*)
@@@ -192,7 -151,7 +158,7 @@@ the
  else
        # Make sure we are not given --skip nor --resolved
        test ",$skip,$resolved," = ,,, ||
 -              die "we are not resuming."
 +              die "Resolve operation not in progress, we are not resuming."
  
        # Start afresh.
        mkdir -p "$dotest" || exit