【问题标题】:Is there a git equivalent for CVS's $Log$ in Comment History? [duplicate]评论历史中是否有与 CVS 的 $Log$ 等效的 git? [复制]
【发布时间】:2015-06-07 12:50:03
【问题描述】:

我正在从 CVS 迁移到 git。在 CVS 中,我可以在我的 cmets 部分使用 $Log$,CVS 将在 $Log$ 处写入 cmets。在 git 中有没有等价的?

我已经查看并看到了强大的命令行和附加工具可供我使用,如果没有等效工具,我将使用这些工具,但我只是想知道是否存在等效工具。

【问题讨论】:

    标签: git cvs


    【解决方案1】:

    Git 不支持这种设计,因为您无法在提交后使用提交信息更新文件,因为 git 先校验文件。

    解决方法是使用attributes,使用“涂抹”和“清洁”过滤器以及提交后hook。这些基本上所做的就是在文件签出后使用信息更新文件,并在签入之前删除信息。

    我对@9​​87654324@ 和$Revision$ 关键字(后者被实现为使用标签)的解决方案(用Python 编写)是available on github。您应该可以将其扩展为 $Log$

    但是:

    如果你想要这个,你应该仔细考虑,因为这种方法有潜在的问题;

    • 它需要外部程序。
    • 如果你想使用它,你必须设置一个post-commit 钩子。
    • 它可能不便携(我没有在 ms-windows 上尝试过)。
    • 如果您将源代码和已编译的程序都签入到存储库中,则可能会导致循环。

    最后但并非最不重要的一点是 git 命令,例如git loggit diff 可以为您提供比静态日志消息更多的信息。

    【讨论】:

    • 它可以工作,并且在提交后会更新到最新的日期和修订版,但是当其他用户执行 git pull 时它不起作用。它没有反映最新的日期和修订。有什么解决办法吗?
    • @hexacool 当有人拉出一个 repo 时,他们不会得到 post-commit 钩子,也不会得到 smudge 和 clean 过滤器。所以这对他们不起作用。
    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2017-02-13
    • 2023-01-30
    • 1970-01-01
    • 2020-12-18
    相关资源
    最近更新 更多