Re: [PATCH v4 12/27] *.sh: avoid hardcoding $GIT_DIR/hooks/...
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/...
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