你应该怎么做旧的SVN分支?

时间:2010-05-24 20:08:43

标签: svn

我们最近有一个SVN分支已经合并回主干,并且需要在该功能/功能区域进行更多的工作。我建议使用相同的分支,但有人告诉你,一旦它被集成到trunk中就不应该重新使用分支(SVN文档中的参考已经给出,我现在找不到它)。 这表明一旦你合并回主干,一个分支就没用了,所以我的问题是一旦不再需要一个分支,它是否只是被删除或保留?

6 个答案:

答案 0 :(得分:17)

当我整合分支时,我会将其从branches/移至branches/integrated/。保持branches/清洁,以便于查找当前的工作,但也可以轻松挖掘旧分支以查看所做的更改,而无需进行大量的修订版考古。

答案 1 :(得分:5)

SVN 1.5引入了“mergeinfo”属性,允许您轻松地将分支重新集成到主干,同时支持重复的分支更新。这允许您创建一个分支,从主干中perodiocally更新分支,最后将分支重新集成到主干(svn merge --reintegrate)。例如,当您创建分支以修复错误或开发功能时,这非常有用。

实现mergeinfo的方式不允许您进行后续重新集成,因此这就是为什么建议您不要重用分支的原因。

如果您希望在发布分支上开发错误修复程序并定期重新集成到主干,则“发布分支”会出现问题。

如果要重用分支,通常的模式是创建一个具有相同名称的新副本(分支):

  1. 删除分支
  2. 提交
  3. 重新创建分支(在具有相同名称的路径中分支)
  4. 提交
  5. 处理新分支
  6. 当你“重新创建”分支时,在步骤3中,恢复了mergeinfo,这样你就可以在没有问题的情况下重新集成。

    回到你的问题:“所以我的问题是,一旦不再需要分支,是否应该删除或保留?” 我会保留分支,因此它将在HEAD修订版中可见。分支消失令人困惑(“嘿,上周我们为0.1版本创建了一个分支吗?”“嗯,我不记得了......检查回购历史”)

    至于重用分支,我会使用约定永远不会重用分支,如果你需要“添加一些分支”,重新创建它。 但在我看来,使用不同的分支名称要清楚得多。您可能可以使用命名约定来标识分支。例如,原始的是branches / Issue-1和后续的扩展分支/ Issue-1.0,branches / Issue-1.1等

    Mergeinfo参考。

    http://blogs.open.collab.net/svn/2008/07/subversion-merg.html http://blogs.open.collab.net/svn/2009/11/where-did-that-mergeinfo-come-from.html

答案 2 :(得分:4)

From Wikipedia:“一旦分支被切割或以任何其他方式从其来源移除,它通常被称为棒”

所以我认为你应该在与分支

相同的级别创建一个“stick”目录

答案 3 :(得分:1)

在项目结束一段时间后,我删除了旧分支。

您可以重复使用分支名称,但为什么?名字很便宜。不要将您的分支称为“工作”,而是更加具体,如“data-conversion-phase-1”。

答案 4 :(得分:0)

我建议不要删除旧分支,除非它们导致问题。它实际上并没有为您节省任何空间,如果您需要,它可以很容易地查看旧版本。

在将分支合并到主干之后重新使用分支几乎肯定是个坏主意。

答案 5 :(得分:0)

在开发大型项目时,良好的做法是使用项目跟踪工具中的任务名称来命名您的分支:例如“DEV-1512”,“FEAT-512”或错误跟踪工具票:“BUG-5142”,等

任务完成后,在生产服务器上运行并运行,删除分支。您可以随时合并。

PS。 想象一下,$ repo / branches上的runung svn ls有9999个分支;)