我的目标是使一个(未跟踪的)文件与当前的 HEAD 提交哈希、分支和一些其他细节保持同步。我有一个可用的 git post-checkout
Hook 来更新文件,但我希望 Hook 在 HEAD 更改时运行,无论是通过提交、 merge 还是其他可能的方式。
什么是确保我的钩子(Hook)在 HEAD 更改时运行的最简单方法?
详情
我生成的文件是一个 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"
虽然我可以采取另一种方法,但我仍然希望得到原始问题的答案。
最佳答案
这似乎是不可能的(尽管请证明我错了),所以我采用了这种足够好的方法:我从多个 Hook 中触发脚本,这意味着它将运行大部分时间时间。
这些是我正在使用的钩子(Hook):
- checkout 后
- 提交后
- merge 后
- rebase 后
关于每当 HEAD 更改时的 Git 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27073690/