git post-commit hook未执行

时间:2013-02-27 13:15:14

标签: git bash githooks

我正在尝试使用here描述的方法实现一种将git提交数据包含到LaTex文档中的方法。

钩子看起来像这样:

$ cat post-commit 
#!/bin/sh

cd ../..

git log -1 --format="format:\
                \\gdef\\GITAbrHash{%h}\
                \\gdef\\GITHash{%H}\
                \\gdef\\GITAuthorDate{%ad}\
                \\gdef\\GITAuthorName{%an}" >> git.tex

当我执行chmod a+x post-commit然后./post-commit时,会正确生成文件。但是,当我实际进行提交时,钩子不会被执行。可能是什么问题?

2 个答案:

答案 0 :(得分:3)

我想问题是你cd ../..导航到你的来源。

尝试将cd ../..替换为pushd ../..。致电git log后,使用popd

恢复目录

除此之外:我怀疑提交后的钩子是你想要的:如果你成功提交,git.tex之后会被更改,你有一个修改过的文件

预提交挂钩将是一个更好的选择:在提交之前,挂钩被调用,修改git.tex然后将其添加到提交。

另一种选择是为git.tex文件(http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Keyword-Expansion)添加涂抹清除过滤器。每当你要做一些像发布一样的事情时,只需要做一个

git add git.tex

这将调用生成git.tex内容的 clean 过滤器。此内容将发送到回购。检出文件时将运行 smudge 过滤器。它的职责是使文件为空,所以它只是

echo '' > git.tex

答案 1 :(得分:0)

问题在于我不需要执行cd ../..,因为无论如何代码都在存储库的根目录中执行。另一个错误是>> git.tex,当然应该是> git.tex