它在 SVN 中是可行的,但我可以告诉你,你将面临很多不同的问题。如果您真的希望重构到每个分支,请三思而后行?将重构的代码合并到发布分支(这是用于发布生产版本的小修复的维护分支)似乎并不合理。
虽然 SVN 可以让你从任意分支合并到任意分支,但是在分支和起源分支之间合并总是更合理。因此,如果你有这样的事情:
Rel-1.0 /---------------->
Rel-1.1 / /------------------->
Trunk --------------------------------*------>
FeatureA \--------> \ \ ^ (rev. X)
FeatureB \--> \ |
Refactor \--->
与其在 Refactor 中进行重构工作并将其合并到每个其他分支,不如将 Refactor 分支中的更改重新集成到 Trunk(假设在修订版 X 中),然后将修订版 X 从 Trunk 合并到需要此更改的其他分支. 对于发布分支(Rel-1.0、Rel-1.1),它很可能是一个选择。对于功能分支 A/B,它将赶上 Trunk(通过合并 Trunk 中的所有东西)。
请注意,如果您的分支偏离主干更多,合并变得更加困难。因此,如果您确实需要合并重构代码以发布分支(这很可能非常偏离主干),请三思。
另请注意,SVN 中的重命名跟踪并没有很好地实现。例如,您将主干中的文件 F 重命名为 FNew,SVN 处理的是通过从 F 复制添加 FNew,然后删除 F。如果将其合并到分支,afaik,SVN 所做的是通过从主干/复制添加分支/FNew F,并删除分支/F。因此,如果您曾经修改过分支/F,对于较新版本的 SVN(可能 >=1.5),它会产生树冲突,而在旧版本的 SVN 中您甚至会丢失修改。尽管较新的版本处理得更好,但它们都没有处理“正确”重命名的合并(将分支/F移动到分支/FNew)。这将导致您在合并时付出额外的努力,并且在两个分支偏离很多的情况下导致合并更加困难。