checkout: support checking out into a new working directory
[gitweb.git] / git-am.sh
index 78517f254f7e772145ff419bb3f000507458ff60..66803d12764d0df8970092ba057ded9442c86352 100755 (executable)
--- a/git-am.sh
+++ b/git-am.sh
@@ -125,7 +125,7 @@ cannot_fallback () {
 }
 
 fall_back_3way () {
-    O_OBJECT=`cd "$GIT_OBJECT_DIRECTORY" && pwd`
+    O_OBJECT=$(cd "$GIT_OBJECT_DIRECTORY" && pwd)
 
     rm -fr "$dotest"/patch-merge-*
     mkdir "$dotest/patch-merge-tmp-dir"
@@ -275,7 +275,7 @@ split_patches () {
                then
                        clean_abort "$(gettext "Only one StGIT patch series can be applied at once")"
                fi
-               series_dir=`dirname "$1"`
+               series_dir=$(dirname "$1")
                series_file="$1"
                shift
                {
@@ -298,8 +298,8 @@ split_patches () {
                this=0
                for stgit in "$@"
                do
-                       this=`expr "$this" + 1`
-                       msgnum=`printf "%0${prec}d" $this`
+                       this=$(expr "$this" + 1)
+                       msgnum=$(printf "%0${prec}d" $this)
                        # Perl version of StGIT parse_patch. The first nonemptyline
                        # not starting with Author, From or Date is the
                        # subject, and the body starts with the next nonempty
@@ -530,7 +530,7 @@ Use \"git am --abort\" to remove it.")"
                esac
        fi
 
-       # Make sure we are not given --skip, --continue, nor --abort
+       # Make sure we are not given --skip, --continue, or --abort
        test "$skip$resolved$abort" = "" ||
                die "$(gettext "Resolve operation not in progress, we are not resuming.")"
 
@@ -644,26 +644,26 @@ fi
 git_apply_opt=$(cat "$dotest/apply-opt")
 if test "$(cat "$dotest/sign")" = t
 then
-       SIGNOFF=`git var GIT_COMMITTER_IDENT | sed -e '
+       SIGNOFF=$(git var GIT_COMMITTER_IDENT | sed -e '
                        s/>.*/>/
                        s/^/Signed-off-by: /'
-               `
+               )
 else
        SIGNOFF=
 fi
 
-last=`cat "$dotest/last"`
-this=`cat "$dotest/next"`
+last=$(cat "$dotest/last")
+this=$(cat "$dotest/next")
 if test "$skip" = t
 then
-       this=`expr "$this" + 1`
+       this=$(expr "$this" + 1)
        resume=
 fi
 
 while test "$this" -le "$last"
 do
-       msgnum=`printf "%0${prec}d" $this`
-       next=`expr "$this" + 1`
+       msgnum=$(printf "%0${prec}d" $this)
+       next=$(expr "$this" + 1)
        test -f "$dotest/$msgnum" || {
                resume=
                go_next
@@ -739,16 +739,16 @@ To restore the original branch and stop patching run \"\$cmdline --abort\"."
        '')
            if test '' != "$SIGNOFF"
            then
-               LAST_SIGNED_OFF_BY=`
+               LAST_SIGNED_OFF_BY=$(
                    sed -ne '/^Signed-off-by: /p' \
                    "$dotest/msg-clean" |
                    sed -ne '$p'
-               `
-               ADD_SIGNOFF=`
+               )
+               ADD_SIGNOFF=$(
                    test "$LAST_SIGNED_OFF_BY" = "$SIGNOFF" || {
                    test '' = "$LAST_SIGNED_OFF_BY" && echo
                    echo "$SIGNOFF"
-               }`
+               })
            else
                ADD_SIGNOFF=
            fi
@@ -810,10 +810,10 @@ To restore the original branch and stop patching run \"\$cmdline --abort\"."
                continue
        fi
 
-       if test -x "$GIT_DIR"/hooks/applypatch-msg
+       hook="$(git rev-parse --git-path hooks/applypatch-msg)"
+       if test -x "$hook"
        then
-               "$GIT_DIR"/hooks/applypatch-msg "$dotest/final-commit" ||
-               stop_here $this
+               "$hook" "$dotest/final-commit" || stop_here $this
        fi
 
        if test -f "$dotest/final-commit"
@@ -887,9 +887,10 @@ did you forget to use 'git add'?"
                stop_here_user_resolve $this
        fi
 
-       if test -x "$GIT_DIR"/hooks/pre-applypatch
+       hook="$(git rev-parse --git-path hooks/pre-applypatch)"
+       if test -x "$hook"
        then
-               "$GIT_DIR"/hooks/pre-applypatch || stop_here $this
+               "$hook" || stop_here $this
        fi
 
        tree=$(git write-tree) &&
@@ -916,18 +917,17 @@ did you forget to use 'git add'?"
                echo "$(cat "$dotest/original-commit") $commit" >> "$dotest/rewritten"
        fi
 
-       if test -x "$GIT_DIR"/hooks/post-applypatch
-       then
-               "$GIT_DIR"/hooks/post-applypatch
-       fi
+       hook="$(git rev-parse --git-path hooks/post-applypatch)"
+       test -x "$hook" && "$hook"
 
        go_next
 done
 
 if test -s "$dotest"/rewritten; then
     git notes copy --for-rewrite=rebase < "$dotest"/rewritten
-    if test -x "$GIT_DIR"/hooks/post-rewrite; then
-       "$GIT_DIR"/hooks/post-rewrite rebase < "$dotest"/rewritten
+    hook="$(git rev-parse --git-path hooks/post-rewrite)"
+    if test -x "$hook"; then
+       "$hook" rebase < "$dotest"/rewritten
     fi
 fi