跟踪SVN中的现有标记

时间:2013-01-16 03:21:08

标签: svn tagging

目前,我们正在使用一个流程,将代码库标记为CVS中的生产代码,然后进行正常的开发。提交到主干和新标签可能会发生,但prod标签在生产版本发布之前无法更改,此时prod版本的标签将成为新的prod标签。因此,只要需要生产代码,就只需要检查prod标签。 prod标签在更传统的开发过程中基本上像行李箱头一样。

我们现在转向SVN,计划是保留当前的方法。我想知道在SVN中为特定代码库维护生产代码的最佳/标准方法是什么?是否有可能创建一个永远不会更改的单个标记,直到新的生产版本,生产代码将合并到标记中?只有生产标签历史的能力也不错。

1 个答案:

答案 0 :(得分:2)

对你来说是坏消息:你必须改变习惯。标签是Subversion(传统上)不可变的,即关系URL-OF-TAG< - >在项目的生命周期内,修订不会(不得)改变。

你可以:

  1. 每次发布​​时忽略约定并重新创建PROD标记。即
    • 首次创建PROD svn cp REPO/TRUNK@R1 REPO/tags/PROD
    • 在每个下一个版本svn rm REPO/tags/PROD & svn cp REPO/TRUNK@RN REPO/tags/PROD
  2. 在主干外的repo中使用任何路径作为特殊用途的分支(可变子树):“MergeTo Only”并合并到此PROD发布的代码
    • 首次创建PROD svn cp REPO/TRUNK@R1 REPO/PROD... REPO/branches/PROD
    • 在每个下一个版本的合并主干(或版本分支的版本标签或HEAD)上进入PROD
  3. 使用外部
    • 第一次创建PROD:在某个地方添加(p.2中的注释适用)“虚拟文件夹”使用svn:externals到存储库中的某些点(树和历史)(我将PROD添加到分支,将使用trunk-root上的propset svn propset svn:externals . branches/PROD REPO/TRUNK@R1 & svn ci &svn up
    • 在每个下一个版本中:更改PROD svn propedit svn:externals .的外部资源定义(再次在trunk的根目录中),并将REPO/TRUNK@R1替换(在文本编辑器中)propedit到新路径(为了便于自动化) propdel可以替换为propset + {{1}})