【发布时间】:2015-06-07 12:50:03
【问题描述】:
我正在从 CVS 迁移到 git。在 CVS 中,我可以在我的 cmets 部分使用 $Log$,CVS 将在 $Log$ 处写入 cmets。在 git 中有没有等价的?
我已经查看并看到了强大的命令行和附加工具可供我使用,如果没有等效工具,我将使用这些工具,但我只是想知道是否存在等效工具。
【问题讨论】:
我正在从 CVS 迁移到 git。在 CVS 中,我可以在我的 cmets 部分使用 $Log$,CVS 将在 $Log$ 处写入 cmets。在 git 中有没有等价的?
我已经查看并看到了强大的命令行和附加工具可供我使用,如果没有等效工具,我将使用这些工具,但我只是想知道是否存在等效工具。
【问题讨论】:
Git 不支持这种设计,因为您无法在提交后使用提交信息更新文件,因为 git 先校验文件。
解决方法是使用attributes,使用“涂抹”和“清洁”过滤器以及提交后hook。这些基本上所做的就是在文件签出后使用信息更新文件,并在签入之前删除信息。
我对@987654324@ 和$Revision$ 关键字(后者被实现为使用标签)的解决方案(用Python 编写)是available on github。您应该可以将其扩展为 $Log$。
但是:
如果你想要这个,你应该仔细考虑,因为这种方法有潜在的问题;
post-commit 钩子。最后但并非最不重要的一点是 git 命令,例如git log 和 git diff 可以为您提供比静态日志消息更多的信息。
【讨论】: