2

我正在尝试使用此处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-committhen./post-commit时,文件会正确生成。但是,当我实际提交时,不会执行钩子。可能是什么问题呢?

4

2 回答 2

3

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

尝试将 替换cd ../..pushd ../... 调用后git log,恢复目录popd


除此之外:我怀疑你在这里想要一个 post-commit 钩子:如果你做了一个成功的提交,git.tex之后将被更改并且你有一个修改过的文件。

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

另一种选择是为您的文件使用涂抹清洁过滤器( http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Keyword-Expansion)。每次你要做一个发布之类的事情时,只要做一个git.tex

git add git.tex

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

echo '' > git.tex
于 2013-02-27T13:27:52.283 回答
0

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

于 2013-02-28T09:57:08.470 回答