2

我正在尝试为 git 实现 rcs 关键字替换。要求是在进入 git repo 之前必须过滤工作副本。因此,在提交后,我的工作树中的更改与 repo 中的更改相同。

我尝试使用过滤器来实现它,希望在提交后脚本中重新签出文件。它通常可以工作,但是......在删除文件并检查它之后,它会获得“修改”状态。并且存在真正的区别,例如日期或提交 ID。所以,我迷路了。此外,它与“ident”没有任何问题

所以,这是我所做的快照:

.gitattribute --> *hpp filter=rcs-kwdsubst
.git/config --> [filter "rcs-kwdsubst"] clean=my-filter
%> git commit file.hpp -m "blah"
%> rm file.hpp
%> git checkout file.hpp
%> git status
    ... modified file.hpp ...

为什么???如何解决?

4

1 回答 1

0

至少部分回答我自己的问题。看起来 git 中的过滤器不仅在提交/签出时运行,而且在“差异”时运行,并且可能在合并时运行。这是一团糟。

我假设最初的想法是通过在提交之前将文件“清理”到存储库中的“标准”状态来避免与版本相关的一些合并问题,这样版本字符串中的合并冲突自然会消失。它只会修改签出文件中的版本。

好吧,它产生了一个不同的问题,破坏了版本控制系统的想法:

  1. 团队中的每个人都有不同版本的文件。
  2. 无法返回到特定的过去版本,因为结帐时文件会有所不同。

我不知道是否有办法在不使用自己的每次提交脚本的情况下绕过它。过滤器和钩子都不起作用,因此无法对文件进行版本控制。

于 2012-11-19T22:08:11.193 回答