git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] make rebase respect core.hooksPath if set
@ 2016-08-14 15:58 ryenus
  2016-08-14 16:29 ` ryenus
  2016-08-15 12:24 ` Johannes Schindelin
  0 siblings, 2 replies; 6+ messages in thread
From: ryenus @ 2016-08-14 15:58 UTC (permalink / raw)
  To: git

when looking for pre-rebase and post-rewrite hooks, git-rebase
only looks for hooks dir using `git rev-parse --git-path hooks`,
which didn't consider the path overridden by core.hooksPath.

Signed-off-by: ryenus <ryenus@gmail.com>
---
 git-rebase--interactive.sh | 14 +++++++++-----
 git-rebase--merge.sh       |  4 +++-
 git-rebase.sh              |  7 +++++--
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index e2da524..e8af70d 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -724,11 +724,15 @@ Commit or stash your changes, and then run
  git notes copy --for-rewrite=rebase < "$rewritten_list" ||
  true # we don't care if this copying failed
  } &&
- 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 &&
+ {
+ hooks_path=$(git config --get core.hooksPath)
+ hooks_path="${hooks_path:-$(git rev-parse --git-path hooks)}"
+ hook="${hooks_path}/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 "$(eval_gettext "Successfully rebased and updated \$head_name.")"

  return 1 # not failure; just to break the do_rest loop
diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh
index 06a4723..df5073e 100644
--- a/git-rebase--merge.sh
+++ b/git-rebase--merge.sh
@@ -96,7 +96,9 @@ finish_rb_merge () {
  if test -s "$state_dir"/rewritten
  then
  git notes copy --for-rewrite=rebase <"$state_dir"/rewritten
- hook="$(git rev-parse --git-path hooks/post-rewrite)"
+ hooks_path=$(git config --get core.hooksPath)
+ hooks_path="${hooks_path:-$(git rev-parse --git-path hooks)}"
+ hook="${hooks_path}/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 04f6e44..c9ba747 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -203,10 +203,13 @@ run_specific_rebase () {
 }

 run_pre_rebase_hook () {
+ hooks_path=$(git config --get core.hooksPath)
+ hooks_path="${hooks_path:-$(git rev-parse --git-path hooks)}"
+ hook="${hooks_path}/pre-rebase"
  if test -z "$ok_to_skip_pre_rebase" &&
-   test -x "$(git rev-parse --git-path hooks/pre-rebase)"
+   test -x "$hook"
  then
- "$(git rev-parse --git-path hooks/pre-rebase)" ${1+"$@"} ||
+ "$hook" ${1+"$@"} ||
  die "$(gettext "The pre-rebase hook refused to rebase.")"
  fi
 }
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] make rebase respect core.hooksPath if set
  2016-08-14 15:58 [PATCH] make rebase respect core.hooksPath if set ryenus
@ 2016-08-14 16:29 ` ryenus
  2016-08-14 20:03   ` Mike Rappazzo
  2016-08-15 12:24 ` Johannes Schindelin
  1 sibling, 1 reply; 6+ messages in thread
From: ryenus @ 2016-08-14 16:29 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 130 bytes --]

Patch attached.

It seems gmail ruined the white spaces.
Not sure how to stop gmail from doing that.
Sorry for me, and for Gmail.

[-- Attachment #2: 0001-make-rebase-respect-core.hooksPath-if-set.patch --]
[-- Type: application/octet-stream, Size: 2814 bytes --]

From 67418dd8ffad7c07ed95437f7a4d1359da9d93d2 Mon Sep 17 00:00:00 2001
From: ryenus <ryenus@gmail.com>
Date: Sun, 14 Aug 2016 19:16:27 +0800
Subject: [PATCH] make rebase respect core.hooksPath if set

when looking for pre-rebase and post-rewrite hooks, git-rebase
only looks for hooks dir using `git rev-parse --git-path hooks`,
which didn't consider the path overridden by core.hooksPath.

Signed-off-by: ryenus <ryenus@gmail.com>
---
 git-rebase--interactive.sh | 14 +++++++++-----
 git-rebase--merge.sh       |  4 +++-
 git-rebase.sh              |  7 +++++--
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index e2da524..e8af70d 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -724,11 +724,15 @@ Commit or stash your changes, and then run
 		git notes copy --for-rewrite=rebase < "$rewritten_list" ||
 		true # we don't care if this copying failed
 	} &&
-	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 &&
+	{
+		hooks_path=$(git config --get core.hooksPath)
+		hooks_path="${hooks_path:-$(git rev-parse --git-path hooks)}"
+		hook="${hooks_path}/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 "$(eval_gettext "Successfully rebased and updated \$head_name.")"
 
 	return 1 # not failure; just to break the do_rest loop
diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh
index 06a4723..df5073e 100644
--- a/git-rebase--merge.sh
+++ b/git-rebase--merge.sh
@@ -96,7 +96,9 @@ finish_rb_merge () {
 	if test -s "$state_dir"/rewritten
 	then
 		git notes copy --for-rewrite=rebase <"$state_dir"/rewritten
-		hook="$(git rev-parse --git-path hooks/post-rewrite)"
+		hooks_path=$(git config --get core.hooksPath)
+		hooks_path="${hooks_path:-$(git rev-parse --git-path hooks)}"
+		hook="${hooks_path}/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 04f6e44..c9ba747 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -203,10 +203,13 @@ run_specific_rebase () {
 }
 
 run_pre_rebase_hook () {
+	hooks_path=$(git config --get core.hooksPath)
+	hooks_path="${hooks_path:-$(git rev-parse --git-path hooks)}"
+	hook="${hooks_path}/pre-rebase"
 	if test -z "$ok_to_skip_pre_rebase" &&
-	   test -x "$(git rev-parse --git-path hooks/pre-rebase)"
+	   test -x "$hook"
 	then
-		"$(git rev-parse --git-path hooks/pre-rebase)" ${1+"$@"} ||
+		"$hook" ${1+"$@"} ||
 		die "$(gettext "The pre-rebase hook refused to rebase.")"
 	fi
 }
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] make rebase respect core.hooksPath if set
  2016-08-14 16:29 ` ryenus
@ 2016-08-14 20:03   ` Mike Rappazzo
  0 siblings, 0 replies; 6+ messages in thread
From: Mike Rappazzo @ 2016-08-14 20:03 UTC (permalink / raw)
  To: ryenus; +Cc: Git List

On Sun, Aug 14, 2016 at 12:29 PM, ryenus <ryenus@gmail.com> wrote:
> Patch attached.
>
> It seems gmail ruined the white spaces.
> Not sure how to stop gmail from doing that.
> Sorry for me, and for Gmail.

Did you use git-send-email?  I don't think that the gmail ui works.
If you have 2-factor authentication, there are instructions on how to
set that up in the docs in Documentation/git-format-patch.txt

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] make rebase respect core.hooksPath if set
  2016-08-14 15:58 [PATCH] make rebase respect core.hooksPath if set ryenus
  2016-08-14 16:29 ` ryenus
@ 2016-08-15 12:24 ` Johannes Schindelin
  2016-08-15 12:31   ` Jeff King
  2016-08-16  2:01   ` ryenus
  1 sibling, 2 replies; 6+ messages in thread
From: Johannes Schindelin @ 2016-08-15 12:24 UTC (permalink / raw)
  To: ryenus; +Cc: git

Hi ryenus,

On Sun, 14 Aug 2016, ryenus wrote:

> when looking for pre-rebase and post-rewrite hooks, git-rebase
> only looks for hooks dir using `git rev-parse --git-path hooks`,
> which didn't consider the path overridden by core.hooksPath.

Would it not be more appropriate to teach --git-path hooks to respect the
core.hooksPath variable? This would be in line with --git-path objects
respecting the GIT_OBJECT_DIRECTORY environment variable.

> Signed-off-by: ryenus <ryenus@gmail.com>

From
https://github.com/git/git/blob/v2.9.3/Documentation/SubmittingPatches#L290-L291

> Also notice that a real name is used in the Signed-off-by: line. Please
> don't hide your real name.

Thanks,
Johannes

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] make rebase respect core.hooksPath if set
  2016-08-15 12:24 ` Johannes Schindelin
@ 2016-08-15 12:31   ` Jeff King
  2016-08-16  2:01   ` ryenus
  1 sibling, 0 replies; 6+ messages in thread
From: Jeff King @ 2016-08-15 12:31 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: ryenus, git

On Mon, Aug 15, 2016 at 02:24:59PM +0200, Johannes Schindelin wrote:

> > when looking for pre-rebase and post-rewrite hooks, git-rebase
> > only looks for hooks dir using `git rev-parse --git-path hooks`,
> > which didn't consider the path overridden by core.hooksPath.
> 
> Would it not be more appropriate to teach --git-path hooks to respect the
> core.hooksPath variable? This would be in line with --git-path objects
> respecting the GIT_OBJECT_DIRECTORY environment variable.

Good idea. I think that logic is all in path.c:adjust_git_path().

And then I suspect the manual handling of git_hooks_path in find_hook()
could go away (because strbuf_git_path would just do the right thing
automatically).

-Peff

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] make rebase respect core.hooksPath if set
  2016-08-15 12:24 ` Johannes Schindelin
  2016-08-15 12:31   ` Jeff King
@ 2016-08-16  2:01   ` ryenus
  1 sibling, 0 replies; 6+ messages in thread
From: ryenus @ 2016-08-16  2:01 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git

On 15 August 2016 at 20:24, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:

> Would it not be more appropriate to teach --git-path hooks to respect the
> core.hooksPath variable? This would be in line with --git-path objects
> respecting the GIT_OBJECT_DIRECTORY environment variable.

Indeed, I've thought about that, too, due to the bad smell of duplication,
but not sure if that's the right position among all the abstraction layers.

Also it's more convenient to come up with a shell based fix on local
installation.

Thanks

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-08-16  2:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-14 15:58 [PATCH] make rebase respect core.hooksPath if set ryenus
2016-08-14 16:29 ` ryenus
2016-08-14 20:03   ` Mike Rappazzo
2016-08-15 12:24 ` Johannes Schindelin
2016-08-15 12:31   ` Jeff King
2016-08-16  2:01   ` ryenus

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).