2014-02-24 48 views
1

我正在使用关键字扩展,如书中Pro Git所述。然而,在提交后需要做的,例如,提交后git关键字扩展

rm file 
git checkout file 

有在工作文件正确的关键字扩展(因为涂抹只结账后适用)。

如何在提交后自动进行关键字扩展?

当然,我可以使用钩子去除/重新签出,但这似乎不是一个好的解决方案。此外,我将不得不手动检查,提交哪个文件。

有没有更优雅的方式?例如,我可以在提交后自动运行过滤器的污迹吗?

回答

2

如何在提交后自动进行关键字扩展?

你不这样做,这就是为什么Git没有“真正”支持关键字扩展,正如我在“Git equivalent of subversion's $URL$ keyword expansion”中详细说明的那样。

另一种方法(列在“Git hook, modify commit files”中)是使用git notes将元数据附加到提交(不修改其SHA1)。

+0

我理解上没有关键字扩展Git的理念。我使用“git svn”(用于编写tex文档)。直接使用subversion时我有关键字扩展;它用于将修订号添加到打印出来的PDF中以供参考。因此,我也希望在我的git世界中拥有它。 –

+0

@DanielKrenn我明白了。我会推荐'git notes'来添加*你想提交的任何*信息。 – VonC

0

我相信一个post-commit挂钩确实可以解决您的问题。

添加下面的post-commit钩子:

#!/bin/sh 
    BRANCH=$(git branch | awk 'sub(/^\*[[:space:]]+/,""){print;exit}') 
    git show --name-only -z --format= | 
      xargs -r0 git reset "${BRANCH:-master}" --