Re: [PATCH v4 12/27] *.sh: avoid hardcoding $GIT_DIR/hooks/...

2014-03-03 Thread Eric Sunshine
On Sat, Mar 1, 2014 at 7:12 AM, Nguyễn Thái Ngọc Duy  wrote:
> If $GIT_COMMON_DIR is set, it should be $GIT_COMMON_DIR/hooks/, not
> $GIT_DIR/hooks/. Just let rev-parse --git-path handle it.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy 
> ---
>  git-am.sh  | 22 +++---
>  git-rebase--interactive.sh |  6 +++---
>  git-rebase--merge.sh   |  6 ++
>  git-rebase.sh  |  4 ++--
>  templates/hooks--applypatch-msg.sample |  4 ++--
>  templates/hooks--pre-applypatch.sample |  4 ++--
>  6 files changed, 22 insertions(+), 24 deletions(-)
>
> diff --git a/git-am.sh b/git-am.sh
> index bbea430..dfa0618 100755
> --- a/git-am.sh
> +++ b/git-am.sh
> @@ -803,10 +803,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`"

Did you want to use $(...) rather than `...`?

Same question for the remainder of the patch.

> +   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"
> @@ -880,9 +880,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) &&
> @@ -908,18 +909,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
>
> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
> index 43c19e0..d741b04 100644
> --- a/git-rebase--interactive.sh
> +++ b/git-rebase--interactive.sh
> @@ -632,9 +632,9 @@ do_next () {
> git notes copy --for-rewrite=rebase < "$rewritten_list" ||
> true # we don't care if this copying failed
> } &&
> -   if test -x "$GIT_DIR"/hooks/post-rewrite &&
> -   test -s "$rewritten_list"; then
> -   "$GIT_DIR"/hooks/post-rewrite rebase < "$rewritten_list"
> +   hook="`git rev-parse --git-path hooks/post-rewrite`"
> +   if test -x "$hook" && test -s "$rewritten_list"; then
> +   "$hook" rebase < "$rewritten_list"
> true # we don't care if this hook failed
> fi &&
> warn "Successfully rebased and updated $head_name."
> diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh
> index e7d96de..68f5d09 100644
> --- a/git-rebase--merge.sh
> +++ b/git-rebase--merge.sh
> @@ -93,10 +93,8 @@ finish_rb_merge () {
> if test -s "$state_dir"/rewritten
> then
> git notes copy --for-rewrite=rebase <"$state_dir"/rewritten
> -   if test -x "$GIT_DIR"/hooks/post-rewrite
> -   then
> -   "$GIT_DIR"/hooks/post-rewrite rebase 
> <"$state_dir"/rewritten
> -   fi
> +   hook="`git rev-parse --git-path hooks/post-rewrite`"
> +   test -x "$hook" && "$hook" rebase <"$state_dir"/rewritten
> fi
> say All done.
>  }
> diff --git a/git-rebase.sh b/git-rebase.sh
> index 8a3efa2..1cf8dba 100755
> --- a/git-rebase.sh
> +++ b/git-rebase.sh
> @@ -195,9 +195,9 @@ run_specific_rebase () {
>
>  run_pre_rebase_hook () {
> if test -z "$ok_to_skip_pre_rebase" &&
> -  test -x "$GIT_DIR/hooks/pre-rebase"
> +  test -x "`git rev-parse --git-path hooks/pre-rebase`"
> then
> -   "$GIT_DIR/hooks/pre-rebase" ${1+"$@"} ||
> +   "`git rev-parse --git-path hooks/pre-rebase`" ${1+"$@"} ||
> die "$(gettext "The pre-rebase hook refused to rebase.")"
> fi
>  }
> diff --git a/templates/hooks--applypatch-msg.sample 
> b/templates/hooks--applypatch-msg.sample
> index 8b2a2fe..28b843b 100755
> --- a/templates/hooks--applypatch-msg.sample
> +++ b/tem

[PATCH v4 12/27] *.sh: avoid hardcoding $GIT_DIR/hooks/...

2014-03-01 Thread Nguyễn Thái Ngọc Duy
If $GIT_COMMON_DIR is set, it should be $GIT_COMMON_DIR/hooks/, not
$GIT_DIR/hooks/. Just let rev-parse --git-path handle it.

Signed-off-by: Nguyễn Thái Ngọc Duy 
---
 git-am.sh  | 22 +++---
 git-rebase--interactive.sh |  6 +++---
 git-rebase--merge.sh   |  6 ++
 git-rebase.sh  |  4 ++--
 templates/hooks--applypatch-msg.sample |  4 ++--
 templates/hooks--pre-applypatch.sample |  4 ++--
 6 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/git-am.sh b/git-am.sh
index bbea430..dfa0618 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -803,10 +803,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"
@@ -880,9 +880,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) &&
@@ -908,18 +909,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
 
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 43c19e0..d741b04 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -632,9 +632,9 @@ do_next () {
git notes copy --for-rewrite=rebase < "$rewritten_list" ||
true # we don't care if this copying failed
} &&
-   if test -x "$GIT_DIR"/hooks/post-rewrite &&
-   test -s "$rewritten_list"; then
-   "$GIT_DIR"/hooks/post-rewrite rebase < "$rewritten_list"
+   hook="`git rev-parse --git-path hooks/post-rewrite`"
+   if test -x "$hook" && test -s "$rewritten_list"; then
+   "$hook" rebase < "$rewritten_list"
true # we don't care if this hook failed
fi &&
warn "Successfully rebased and updated $head_name."
diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh
index e7d96de..68f5d09 100644
--- a/git-rebase--merge.sh
+++ b/git-rebase--merge.sh
@@ -93,10 +93,8 @@ finish_rb_merge () {
if test -s "$state_dir"/rewritten
then
git notes copy --for-rewrite=rebase <"$state_dir"/rewritten
-   if test -x "$GIT_DIR"/hooks/post-rewrite
-   then
-   "$GIT_DIR"/hooks/post-rewrite rebase 
<"$state_dir"/rewritten
-   fi
+   hook="`git rev-parse --git-path hooks/post-rewrite`"
+   test -x "$hook" && "$hook" rebase <"$state_dir"/rewritten
fi
say All done.
 }
diff --git a/git-rebase.sh b/git-rebase.sh
index 8a3efa2..1cf8dba 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -195,9 +195,9 @@ run_specific_rebase () {
 
 run_pre_rebase_hook () {
if test -z "$ok_to_skip_pre_rebase" &&
-  test -x "$GIT_DIR/hooks/pre-rebase"
+  test -x "`git rev-parse --git-path hooks/pre-rebase`"
then
-   "$GIT_DIR/hooks/pre-rebase" ${1+"$@"} ||
+   "`git rev-parse --git-path hooks/pre-rebase`" ${1+"$@"} ||
die "$(gettext "The pre-rebase hook refused to rebase.")"
fi
 }
diff --git a/templates/hooks--applypatch-msg.sample 
b/templates/hooks--applypatch-msg.sample
index 8b2a2fe..28b843b 100755
--- a/templates/hooks--applypatch-msg.sample
+++ b/templates/hooks--applypatch-msg.sample
@@ -10,6 +10,6 @@
 # To enable this hook, rename this file to "applypatch-msg".
 
 . git-sh-setup
-test -x "$GIT_DIR/hooks/commit-msg" &&
-   exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
+commitmsg="`git rev-parse --git-path hooks/commit-msg`"
+test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
 :
diff --git a/templates/hooks--pre-applypatch.sampl