【问题标题】:Subversion: Add revision data to code file on commitSubversion:在提交时将修订数据添加到代码文件
【发布时间】:2011-01-01 19:18:27
【问题描述】:

是否有一种简单的方法可以在提交文件时自动将信息插入代码文件本身(如作者、提交评论、提交日期等)?我希望将此信息附加到每个已提交文件顶部的块中。基本上整个修订历史都应该记录在每个代码文件中......

我看到有一种方法可以使用颠覆属性来实现类似的东西,但我看不到如何将实际的提交评论放入文件中,我也看不到如何保持运行日志整个修订历史记录,而不仅仅是最后一次提交信息。

我个人认为这不是一个好主意,因为代码文件中应该只包含代码,但不幸的是,这是我当前项目的要求。

【问题讨论】:

    标签: svn


    【解决方案1】:

    Subversion 支持各种关键字,如@9​​87654324@、$Author$$Revision$ 等。要使用这些,您需要相应地set the svn:keywords property。但是,您不能像$Log$ 那样插入提交评论。请参阅subversion FAQ 了解有关原因,我只能同意那里给出的原因。将提交 cmets 放入文件中只是被设计破坏了,任何此类评论都是错误的,当您无法根据存储库检查它时。

    其他版本控制系统也不支持这一点,而且大多数都有类似的理由(例如,git)。

    请不要争论这样的事情是“项目的要求”。如果发布的代码必须包含更改历史记录,您可以在使用一些帮助脚本创建发布时轻松添加此历史记录。至少,颠覆根本不支持它。我会强烈不鼓励尝试使用预提交挂钩来实现这一目标。提交挂钩应该从不更改提交的数据。

    【讨论】:

    • 您能详细说明原因吗?
    【解决方案2】:

    我知道这不是您要寻找的答案,但我会尝试说服他们不要这样做。

    最好的办法是使用关键字替换,但 SVN 没有提供 $Log$ 关键字是有充分理由的(请参阅 http://subversion.tigris.org/faq.html#log-in-source),这与我用来反对让登录代码。

    【讨论】:

    • 这些是永远不必合并的代码文件。其他开发人员希望在处理文件时查看文件中的更改日志。我试着解释说他们可以在 2 次点击内很容易地看到更新日志,但答案是“嗯,这 2 次点击太多了!”
    【解决方案3】:

    我看到有一种方法可以使用颠覆 实现某事的属性 类似,但我不知道如何获得 实际提交评论到 文件,而且我也不知道如何保存 具有完整的运行日志 修订历史,而不是仅仅 最后一次提交信息。

    您不希望文件中出现提交注释。毕竟,这就是svn log 的用途。

    【讨论】:

    • 我知道这是个坏主意,但正如我在问题中提到的,我必须这样做!
    【解决方案4】:

    我建议改用CVS。它内置了这种能力。CVS 大约有 24 年的历史。听起来您的文档要求可能来自版本控制不常见的时代,因此您可能最好使用在那个时代创建的工具。

    【讨论】:

    • 他询问 SVN,你告诉他使用 CVS。嘘。
    【解决方案5】:

    除此之外,正如您自己所说,作为一个愚蠢的想法,我想不出使用 SVN 板载方法的简单方法。您必须在通过脚本签出(或更新)后检查每个文件,在该文件中标识一个“更改日志”块,并使用svn log 的输出更新该块。可以完成,但工作量很大,您必须监视每个工作副本的更改,并且非常耗费资源。

    除此之外,提交后挂钩可能是最好的工作方式,但如果可能的话,在修订上下文之外操作存储库内的文件听起来很可怕。

    【讨论】:

      【解决方案6】:

      我们在一些源文件中使用$Revision: 9584 $,并且每次该特定文件的修订版本更改时都会更新修订版本。但我很确定你的意思是不同的。

      【讨论】:

      【解决方案7】:

      这是一种方法。 使用第二个版本控制工具,例如 Visual Source Safe,它有一个 History 关键字。下面我会说 VSS,但您可以使用任何具有 History 关键字或 Log 关键字的旧工具。 然后遵循两步过程。 [1] 将源文件检入VSS。这允许您编写 cmets,VSS 将更新源文件本身的修订历史记录。如果方便,您可以一步进行多文件签入,并在所有签入的文件中插入相同的注释。或者,您可以逐个文件执行 cmets 文件。 [2] 像往常一样在 Subversion 中检查生成的文件,该文件现在已插入最新的修订注释进行更新。

      顺便说一下,就风格而言,我发现将修订历史记录在源文件的底部而不是顶部更方便。大多数人从顶部阅读,不会在底部看到修订历史,因此不会打扰他们。此外,源代码行号保持不变,因为当修订历史记录位于文件底部时,修订历史记录之外没有源代码。这在您不希望每次签入时更改源代码行号的某些类型的调试中很方便。

      【讨论】:

        猜你喜欢
        • 2016-07-18
        • 2011-02-23
        • 1970-01-01
        • 2010-10-08
        • 2021-08-06
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多