首页 > 解决方案 > 基于文件类型的SVN关键字

问题描述

我正在使用颠覆来跟踪一组文件,并希望通过工作流程携带修订关键字。但是由于这种设置方式,我遇到了一些问题。

工作流程遵循以下格式:

  1. 被导入的文本文件(svn:keywords enabled);
  2. 包含从文本文件导入的关键字的 XML 类型文件。然后该脚本运行并吐出另一个;
  3. xml 类型文件,理想情况下包含 1 和 2 的修订信息。

文件修订要求为 1 < 2 < 3,1 的修订显示在 2 中,1 & 2 的修订显示在 3。

所以问题出现在文件 2 中,我显然不能启用 svn:keywords,因为这将在提交文件 1 时覆盖它。

理想情况下,我希望根据文件类型使用不同的关键字,但这在 SVN 中似乎是不可能的。

我已经研究了提交前/提交后的钩子,但根据我的理解,不允许使用不同的关键字,这些都无济于事。

我想到了一个可能的解决方案,在文件 1 中输入一些对文件 2 唯一的关键字。然后,当我提交文件 2 时,我会编写一个小脚本来查找这些关键字并填充这些条目具有类似的信息(即通过检查存储库修订号来抢占修订号,添加一个并将其放入文件 2 然后提交)。但是,这需要外部脚本,这不是开发的问题,但如果可能的话,我想将其保留在 SVN 内部。

有没有办法单独使用 SVN 来实现这一点?

需要明确的是,只要文件 1 和 2 的修订存在,我不想也不关心文件中包含文件 3 的修订号。

谢谢你的帮助!

标签: svnversion-controlrevision

解决方案


恐怕,但您似乎做了一些错误的假设并且没有调试您的工作流程

  • 即使在旧的 1.8 之前的 SVN 中(添加了“自定义关键字”,它可以模拟每个文件类型的关键字),无论如何我都不建议使用今天的扩展关键字,粘贴到另一个版本化对象中不会再次“扩展”
  • 使用 1.8+ SVN,您可以拥有一组名称不同但值相同的关键字,但%r在您的情况下不需要它

细节:

当您将关键字添加$Rev$到版本化文件中(并执行正确svn propset svn:keywords或在配置中启用扩展)时,在提交/更新周期之后,您将在文件中的 WC 中看到类似$Rev: 12 $的内容,而不仅仅是关键字 placeholder和此字符串,粘贴在任何其他源中, 将按“原样”使用,而不是作为目标文件中的另一个关键字放置


推荐阅读