Svn 如何在SubVersion中重新合并从主干修订版重新创建的分支?
我的SVN存储库中有以下体系结构:Svn 如何在SubVersion中重新合并从主干修订版重新创建的分支?,svn,version-control,merge,tortoisesvn,revert,Svn,Version Control,Merge,Tortoisesvn,Revert,我的SVN存储库中有以下体系结构: /trunk /branches/TESTING /branches/STAGING /branches/PRODUCTION 以下是我的常规版本控制工作流: 创建从主干分支的要素 提交对要素分支的更改 测试后,将功能分支合并回主干 删除合并/提交到主干的要素分支 准备好部署后,将主干合并到/branchs/PRODUCTION 将/分支机构/生产中的更改部署到生产系统 此工作流在99%的时间内运行良好。然而,昨天出现了一种情况,我很难找到合适的工作 自从上
/trunk
/branches/TESTING
/branches/STAGING
/branches/PRODUCTION
以下是我的常规版本控制工作流:
这看起来像是版本控制的一个基本功能——备份更改并能够在将来重新合并它们——但我无法让它正常工作。SubVersion/TortoiseSVN还有其他方法可以做到这一点吗?我在您的工作流程中看到了一些错误、错误和误用
- 您删除了合并的分支。为什么?现有的“不再接触”分支不需要比上一次修订时在repo中占用更多的空间,删除分支不会减少repo的侧面。如果您希望在
节点下使用紧凑、易于读取的空间,可以使用哈希树而不是平面空间(类似于/branchs
)/branchs/YEAR/MONTH/BRANCHNAME
- 从合并要素分支的主干版本创建分支(在此分支中没有后续更改)几乎是零值操作:
- 如果trunk稍后的更改将与此修订版中的代码状态冲突,您仍必须执行手动解决冲突
- 在SVN中合并两棵树时,从branchpoint对这两棵树的更改将考虑在内(实际情况更复杂,但这是一种有效且正确的简化),而不是合并树中最新修订的状态。您的“justcopy”分支内部没有更改,它不会将任何内容带入合并结果
- 您总是可以再次重新合并已删除分支的头(这可能需要解决冲突,但我想,无论如何,您都会得到它,重新合并旧分支只会给您稍微多一点)
- 毕竟,具有撤消功能的主干状态分支是无用的:如果您想要返回修订,您可以通过反向合并修订来撤消,在任何时候您都可以(可能已经或必须)通过反向合并修订来完成,反向合并修订和功能(并在任意时间重复上一次反向合并的反向合并过程)
如果您想保留当前的工作流,我建议您首先恢复已删除的旧分支(更改发生在该分支上)。然后将该分支重新合并到主干中。或者,您可以从当前主干上分支,并在该分支中还原删除功能更改的更改。然后您应该能够o将新分支合并到主干。阅读有关反向合并操作的内容,并考虑反向合并修订版的反向合并。您的工作流程非常糟糕ugly@LazyBadger这不是我的“正常”工作流程-这是一个例外。我的客户说“6月17日部署”。然后6月17日来了,部署后,他们说“别担心,退出”。我正试图找到一种方法来满足这种需求,我们中的一些人偶尔会遇到这种需求。部署与VCS根本不相关-如果您发布了版本N,但它不好,请发布(与以前相同的方式)修订版N-1.或重新措辞question@LazyBadger重新措辞。一旦分支被合并回主干,它就不再需要了。与其拥有数百个已完成的分支,这些分支将永远不再被使用,而且确实使用了磁盘空间,我喜欢保持我的repo干净。不是错误,不是错误。Eric,除非你真的签出了整个存储库树,删除分支不会在任何地方节省任何磁盘空间。如果您签出整个存储库树,它只会在工作副本中节省空间,在这种情况下,您可以使用“稀疏签出”实现相同的结果。Lazy Badger,我没有想到使用“哈希树”正如您所建议的,这是非常聪明的。但是删除分支是完成任务的另一种方法