我们最近有一个SVN分支已经合并回主干,并且需要对该功能/功能区域进行一些更多的工作。我建议使用同一个分支,但被告知一旦它被集成到主干后就不应该重新使用分支(SVN文档中提供了一个参考,现在我找不到它)。 这表明一旦你合并回树干,一个分支是相当无用的,所以我的问题是一旦分支不再需要,它应该被删除还是保留?你应该如何处理旧的SVN分支?
回答
当我整合一个分支时,我将它从branches/
移动到branches/integrated/
。保持branches/
清洁,因此很容易找到当前的工作,但也可以很容易地挖掘旧分支,以查看做了哪些更改而无需执行大量修订号考古。
经过一段时间项目结束后,我删除了旧分支。
您可以重复使用分支名称,但为什么?名字很便宜。不要将你的分支称为“工作”,而是要更具体一些,如“数据转换阶段1”。
如果你删除了一个分支,然后尝试使用相同的名称创建另一个分支,会发生什么?在我们的例子中,我们有一个(我认为)像“数据转换”这样的特定名称,不知道我们会有一个阶段2! – 2010-05-24 20:17:42
分支(您删除的旧分支和使用相同名称创建的新分支)是不同的,并且不共享修订历史记录。它们的名称只有相似之处,但它们可能会被赋予不同的名称,因为您会得到相同的效果。 – 2010-05-24 20:19:07
您可以重复使用分支名称。我只是尽量不要。在你的情况下,我会做“数据转换”,然后当我发现第二阶段必须发生时,使它成为“数据转换阶段2”。 – 2010-05-24 20:34:58
我建议不要删除旧的分支,除非他们造成问题。它实际上并没有为你节省任何空间,如果你需要的话,它可以很容易地查看旧版本。
将分支合并到主干后重用分支几乎肯定是一个坏主意。
yup,重用分支名称就像重复使用昨天的袜子 – shfx 2010-05-24 22:09:02
SVN 1.5引入了“mergeinfo”属性,它允许您在支持重复分支更新的同时轻松地将分支重新集成到主干。这允许你创建一个分支,从主干更新分支,最后将分支重新集成到主干(svn merge --reintegrate)。例如,当您创建分支来修复错误或开发功能时,这很有用。
mergeinfo的实现方式不允许你做后续的重新集成,所以这就是为什么你不推荐重用分支的原因。
当您想要在发布分支上开发bug修复并定期重新集成到主干时,这对于“发布分支”是有问题的。
如果你想重用一个分支,通常的模式是创建一个新的副本(分支)具有相同的名称:
- 删除分支
- 提交
- 重建分支(分支在具有相同名称的路径)
- 提交新的分支
- 工作
当您“重新创建”分支时,在步骤3中,合并信息将被还原,因此您可以在未来重新整合而不会出现任何问题。
回到你的问题:“所以我的问题是一旦一个分支不再需要,应该只是删除或保留? 我会保留分支,所以它会在HEAD修订版中可见。分支消失是令人困惑的(“嘿,我们是否在上周创建了0.1版本的分支?”“嗯,我不记得...检查回购历史记录”)
至于重用分支,我会使用约定永远不会重用分支,并且如果您需要“添加一些问题”,请重新创建它。 但在我看来,使用不同的分支名称更清晰。您可能可以使用命名约定来识别分支。例如,原件将是分支机构/ Issue-1和后续分机分支机构/ Issue-1.0,分支机构/ 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
好做法,同时制定了大项目,就是名称中使用从项目跟踪工具的任务名称的分支:如“DEV-1512”,“FEAT-512”,或错误追踪系统门票:“BUG-5142”等
当任务完成后,在生产服务器上运行并运行,删除该分支。你总是可以合并回来。
PS。 想像$回购runung svn ls
/分支机构,9999个分支机构;)
我完全可以看到包含跟踪编号的好处,但我也有描述性的东西。 FEAT-132-image-blur-function,只是为了避免为其他团队成员查找这些数字。 – 2013-11-05 09:56:23
From Wikipedia:“一旦一个分支被切断或者从源删除任何其他方式,这是最常见的被称为棒”
所以我认为你应该在分支机构的同一级创建一个“棍子”目录
+1为聪明 – Kyle 2014-01-29 19:11:19
- 1. 你如何处理旧记录?
- 2. 你的svn客户端太旧错误,该如何解决?
- 3. 如何清理旧的git分支?
- 4. 测试期间应该如何处理陈旧的索引?
- 5. 如何用旧的替换当前的svn版本的分支?
- 6. 你应该在Github上分支还是分支?
- 7. 你应该如何处理NSStream堵塞的可能性?
- 8. 旧漏报期技术债务应该如何处理?
- 9. Git - 清理旧分支
- 10. SVN:将一个旧分支合并到一个新分支
- 11. 如何处理旧应用程序
- 12. 如何处理OpenGrok中的git分支?
- 13. 如何:SVN分支合并
- 14. 如何创建SVN分支
- 15. 你如何处理不同的Java IDE和svn?
- 16. 你如何处理移动应用程序中的陈旧缓存记录
- 17. 我应该如何:管理项目的2个生命分支
- 18. 清理旧的远程git分支
- 19. 你可以指定哪些svn分支与git svn?
- 20. 基于旧分支的本地文件的SVN签出新分支
- 21. 你如何处理你的web应用程序中的附件?
- 22. svn分支合并分支
- 23. 在SVN中处理供应商分支机构的最佳方式是什么?
- 24. 验证我对svn分支的理解
- 25. 我应该如何使用git分支?
- 26. SVN与git:如何处理我们的不规范,可能错误地支SVN
- 27. 如何调试Jenkins多分支扫描 - 不处理新分支
- 28. 我应该如何处理ASP.NET MVC部分视图的异常?
- 29. 迷你处理器的FSM卡在分支等循环中
- 30. Jenkins svn分支
我称它为分支坟墓。 – 2010-05-24 21:13:37
我用过“阁楼”。 – 2010-05-24 21:18:18
为了让自己开心,我还使用了“修剪过的旧分支”提交的评论 – 2011-07-28 13:28:57