我正在尝试使用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
时,会正确生成文件。但是,当我实际进行提交时,钩子不会被执行。可能是什么问题?
答案 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
。