git提交后钩子未执行

git提交后钩子未执行,git,bash,githooks,Git,Bash,Githooks,我正在尝试实现一种方法,使用所描述的方法将gitcommit数据包含到一个LaTex文档中 钩子看起来像这样: $ cat post-commit #!/bin/sh cd ../.. git log -1 --format="format:\ \\gdef\\GITAbrHash{%h}\ \\gdef\\GITHash{%H}\ \\gdef\\GITAuthorDate{%ad}\

我正在尝试实现一种方法,使用所描述的方法将
git
commit数据包含到一个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

当我执行
chmoda+x post-commit
然后执行
/post-commit
时,会适当地生成文件。但是,当我实际进行提交时,不会执行钩子。有什么问题吗?

我想问题在于你是
cd../.
为了找到你的来源

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


除此之外:我怀疑提交后钩子是否是您想要的:如果您成功提交,
git.tex
将在之后更改,并且您有一个修改过的文件

pre-commit hook是一个更好的选择:在提交之前,调用hook,修改
git.tex
,然后将其添加到提交中

另一个选择是为您的
git.tex
文件()设置一个污迹和干净的过滤器。每次你要做一些事情,比如发布,就做一个

git add git.tex
这将调用生成
git.tex
内容的干净过滤器。该内容将发送至回购协议。文件签出时将运行污迹过滤器。它的职责是将文件清空,所以它只是

echo '' > git.tex

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

非常感谢你的回答,但不是这样;查看我的编辑。您的编辑最好是对您自己的问题的回答,而不是对您的问题的编辑。