我正在尝试设置一个过滤器,以便在结帐时它会向我的文件注入一些git相关信息,并在提交时将删除此信息。我已经确认,当我提交文件时,它已被正确清理。此外,如果我删除文件然后结帐,文件就会被污染。
我的问题如下。 如果我对文件进行了更改并提交了更改,则涂抹过滤器不会运行。这是预期的行为吗?有没有办法在提交时运行涂抹过滤器? (也许是通过提交后立即进行提交?)
答案 0 :(得分:9)
干净/涂抹过滤器绝对不是将基于提交的信息可靠地添加到工作树文件中的地方。正如您所发现的那样,原因是在不必将新版本的文件写入工作树的操作中不会触及该文件。如果这些提交未触及给定文件,则可以合并或快进许多提交,而不应用过滤器。
您可能会更好地使用模板文件,该文件可以通过构建步骤转换为具有嵌入式提交信息的忽略的实际文件,该步骤使用git rev-parse HEAD
或git describe
之类的内容来检索当前提交信息。