基于文件类型的 SVN 关键字
SVN keywords based on filetype
我正在使用 subversion 来跟踪一组文件,并希望在整个工作流程中携带修订关键字。但由于设置方式,我 运行 遇到了一些问题。
工作流程遵循以下格式:
- 文本文件(svn:keywords 已启用)导入到;
- Xml 包含从文本文件导入的关键字的类型文件。然后这个脚本得到 运行 并吐出另一个;
- Xml 理想情况下包含 1&2 的修订信息的类型文件。
文件修订要求1 < 2 < 3 1的修订显示在2中,1&2的修订显示在3中
所以问题出现在文件 2 中,我显然不能启用 svn:keywords,因为这将在提交时覆盖文件 1 中的条目。
理想情况下,我希望根据文件类型使用不同的关键字,但这在 SVN 中似乎是不可能的。
我研究了 pre/post-commit 钩子,但根据我的理解,不允许使用不同的关键字,这些钩子无济于事。
我想到了一个可能的解决方案,我会在文件 1 中输入一些关键字,这些关键字对于文件 2 来说是唯一的。然后当我提交文件 2 时,我会编写一个小脚本来查找那些关键字并用类似的信息填充这些条目(即通过检查存储库修订号来抢占修订号,添加一个并将其放入文件 2 然后提交)。然而,这需要外部脚本,这不是开发的问题,但如果可能的话,我想将它保留在 SVN 内部。
有什么方法可以单独使用 SVN 来实现吗?
需要说明的是,我不希望也不关心文件中包含文件 3 的修订号,只要文件 1 和 2 的修订存在即可。
感谢您的帮助!
恐怕,但您似乎做出了一些错误的假设并且没有调试您的工作流程
- 即使在旧的 1.8 之前的 SVN 中(它添加了“自定义关键字”,可以 模拟 keyword-per-filetype),但我 不会推荐使用今天展开的关键字,粘贴到另一个版本对象中不会再次“展开”
- 使用 1.8+ SVN,您 可以 有一组名称不同但值相同
%r
的关键字,但在您的情况下不需要
详情:
当您将关键字 $Rev$
添加到版本化文件中(并执行正确的 svn propset svn:keywords
或在配置中启用扩展)时,在 commit/update 循环之后您将在文件中的 WC 中看到像 $Rev: 12 $
而不是 只是关键字占位符 ,并且这个字符串,粘贴在任何其他来源中,将“按原样”使用,而不是作为目标文件中的另一个关键字放置
所以我能够弄清楚这个特例。在总体文件夹中,我为两种文件类型设置了 svn:auto-props,例如
*.txt = svn:keywords=修订作者
*.xml = svn:keywords=XMLRevision=%r XMLAuthor=%a
现在我在第一个文件中有两组关键字,其中第一组由 txt 文件的提交选取,第二组由 xml 提交选取。这两个集合也显示在第三个文件中。
注意:可以从 repo 浏览器设置 auto-props,但它似乎不起作用。检查总体文件夹并从工作副本中执行它就可以了。
注意 2:显然还必须从 repo 中删除文件 2 (xml) 并再次添加它以获取新的 auto-props.
我正在使用 subversion 来跟踪一组文件,并希望在整个工作流程中携带修订关键字。但由于设置方式,我 运行 遇到了一些问题。
工作流程遵循以下格式:
- 文本文件(svn:keywords 已启用)导入到;
- Xml 包含从文本文件导入的关键字的类型文件。然后这个脚本得到 运行 并吐出另一个;
- Xml 理想情况下包含 1&2 的修订信息的类型文件。
文件修订要求1 < 2 < 3 1的修订显示在2中,1&2的修订显示在3中
所以问题出现在文件 2 中,我显然不能启用 svn:keywords,因为这将在提交时覆盖文件 1 中的条目。
理想情况下,我希望根据文件类型使用不同的关键字,但这在 SVN 中似乎是不可能的。
我研究了 pre/post-commit 钩子,但根据我的理解,不允许使用不同的关键字,这些钩子无济于事。
我想到了一个可能的解决方案,我会在文件 1 中输入一些关键字,这些关键字对于文件 2 来说是唯一的。然后当我提交文件 2 时,我会编写一个小脚本来查找那些关键字并用类似的信息填充这些条目(即通过检查存储库修订号来抢占修订号,添加一个并将其放入文件 2 然后提交)。然而,这需要外部脚本,这不是开发的问题,但如果可能的话,我想将它保留在 SVN 内部。
有什么方法可以单独使用 SVN 来实现吗?
需要说明的是,我不希望也不关心文件中包含文件 3 的修订号,只要文件 1 和 2 的修订存在即可。
感谢您的帮助!
恐怕,但您似乎做出了一些错误的假设并且没有调试您的工作流程
- 即使在旧的 1.8 之前的 SVN 中(它添加了“自定义关键字”,可以 模拟 keyword-per-filetype),但我 不会推荐使用今天展开的关键字,粘贴到另一个版本对象中不会再次“展开”
- 使用 1.8+ SVN,您 可以 有一组名称不同但值相同
%r
的关键字,但在您的情况下不需要
详情:
当您将关键字 $Rev$
添加到版本化文件中(并执行正确的 svn propset svn:keywords
或在配置中启用扩展)时,在 commit/update 循环之后您将在文件中的 WC 中看到像 $Rev: 12 $
而不是 只是关键字占位符 ,并且这个字符串,粘贴在任何其他来源中,将“按原样”使用,而不是作为目标文件中的另一个关键字放置
所以我能够弄清楚这个特例。在总体文件夹中,我为两种文件类型设置了 svn:auto-props,例如 *.txt = svn:keywords=修订作者 *.xml = svn:keywords=XMLRevision=%r XMLAuthor=%a 现在我在第一个文件中有两组关键字,其中第一组由 txt 文件的提交选取,第二组由 xml 提交选取。这两个集合也显示在第三个文件中。 注意:可以从 repo 浏览器设置 auto-props,但它似乎不起作用。检查总体文件夹并从工作副本中执行它就可以了。 注意 2:显然还必须从 repo 中删除文件 2 (xml) 并再次添加它以获取新的 auto-props.