Git钩子,可在头部发生变化时使用

Git钩子,可在头部发生变化时使用,git,githooks,Git,Githooks,我的目标是使一个(未跟踪的)文件保持当前头部提交哈希、分支和其他一些细节的最新状态。我有一个工作的gitpost-checkouthook更新文件,但是我希望在头部发生变化时运行这个hook,无论是通过提交、合并还是其他任何可能的方式 当头部发生变化时,确保挂钩运行的最简单方法是什么? 细节 我生成的文件是一个javascript文件,它是静态服务网站的一部分。我们对服务器端脚本没有依赖性,因此我们希望在这里避免这种依赖性 应运行的脚本如下所示: #!/bin/sh FILE=js/git-s

我的目标是使一个(未跟踪的)文件保持当前头部提交哈希、分支和其他一些细节的最新状态。我有一个工作的git
post-checkout
hook更新文件,但是我希望在头部发生变化时运行这个hook,无论是通过提交、合并还是其他任何可能的方式

当头部发生变化时,确保挂钩运行的最简单方法是什么?

细节 我生成的文件是一个javascript文件,它是静态服务网站的一部分。我们对服务器端脚本没有依赖性,因此我们希望在这里避免这种依赖性

应运行的脚本如下所示:

#!/bin/sh

FILE=js/git-status.js

echo "// This file is autogenerated by a post-checkout hook. Your changes here WILL be lost." > $FILE

echo "GIT_BRANCH = '$(git rev-parse --abbrev-ref HEAD)';" >> $FILE
echo "GIT_COMMIT_HASH = '$(git rev-parse HEAD)';" >> $FILE
echo "GIT_COMMIT_TIME = '$(git log -1 -s --format=%ci HEAD)';"  >> $FILE

echo "Updated $FILE"

虽然我可能会采取另一种方法,但我仍然希望得到原始问题的答案。

这似乎是不可能的(尽管请证明我错了),所以我已经解决了这个足够好的方法:我从多个钩子触发脚本,这意味着它大部分时间都会运行

这些是我正在使用的挂钩:

  • 结账后
  • 提交后
  • 合并后
  • 后重基

也可以使用
post-commit
post-merge
钩子,但是您试图用这个文件实现什么,而仅仅调用
git-status
git-log
是无法实现的?您有没有理由不能从.git目录跟踪头部?(例如:
cat.git/$(sed's/*\s\+/'.git/HEAD)
)脚本将我想要的值格式化为JavaScript变量赋值,以包含在静态服务的站点中。一个可接受的答案是我需要包括的所有钩子的列表,以涵盖所有(或尽可能多的)可能性。你的结账后有什么?没有我知道的可以做你想做的事情的钩子。通常情况下,人们使用一个简单的存储库来实现这一点。