仅限新分支上的Git post-checkout钩子

时间:2014-09-25 20:31:55

标签: git githooks

我正在尝试创建一个在签出后运行的git钩子,只有在检出新分支时(即使用了-b标志)。我正在使用post-checkout钩子,并尝试了各种技术来使其工作,如检查oldrev。

post-checkout是我想要的钩子吗?如果是这样,我应该在脚本中使用什么逻辑,这样钩子只在签出新分支时生效?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是没有找到钩子(可以使用post-checkout钩子。) 它是检测刚刚创建了一个新的本地分支。

但“新”相比哪个分支?考虑到你不知道要考虑哪个起始分支,Detecting a "branch point"很棘手。

您还可以check the reflog验证分支是否已经签出一次。

或者,您还可以维护本地分支的缓存:ls .git\refs\heads的输出,保存在某个文件中,称为“缓存”。
每次启动post-checkout挂钩时,都会执行ls .git\refs\heads 并将其与缓存进行比较。如果看到一个新条目(并且.git\refs\remotes\origin中没有类似的分支),则可能是:这是第一次创建的新本地分支。
然后钩子会更新缓存文件。