在我的产品开发中寻找有关如何使用SVN的建议。
目前我正在使用我的产品的2.2版,并开始使用带有eclipse的SVN来跟踪我的代码。但是,我将开始研究该产品的第3版,该版本与2.2基本相同,只有一些大修和一些新功能。
问题是虽然2.2仍然会进行错误修复和一些次要功能/调整,可能还有2-3个版本才能成为文具,并且不再进行任何工作 - 希望及时发布版本3。所以目前如果我的行李箱是2.2,并且此时有稳定的标签,我该从哪里开始?请记住,我希望3在行李箱中从这个标签分支,但是如果我做了一个小的改动或错误修复,2.2和3有类似的类我希望它在版本3中重新实现而不是必须实现错误修复两次,在v2.2(主干)和v3分支。
还值得注意的是,我的v3分支可能在其上有分支,用于“实验”功能,可能无法进入该特定产品的第一个稳定版本。
对于这种情况的最佳实践的任何想法将不胜感激。
答案 0 :(得分:1)
基本方法是为每个功能分支开发一个单独的svn分支。
这样做的一个实例就是创建一个2.x分支,它将在2.2,2.3,2.4,...系列中进行所有开发。这将基于您当前的任何位置,您可以使用标记来表示每个发布点。如果它们出现(例如,2.3.x),您还可以在将来为关键版本修复产生新的分支。然后你可以在trunk上继续你的主要开发。
当然,如果有必要,您可以使用svn merge
(如http://svnbook.red-bean.com/en/1.5/svn.branchmerge.html所述)来处理分支之间的合并。我强烈建议使用最新版本的Subversion(比如1.5),因为旧版本需要您手动跟踪已经合并的更改,而较新的版本会处理为您跟踪的信息。
要处理要在分支之间向下或向下合并的简单错误修复,可以使用cherry-picking在分支之间移动这些更改。
答案 1 :(得分:1)
考虑此存储库
ROOT |-- trunk |-- tags | `-- 2.2 => copy of branches/version_2 `-- branches |-- version_2 => copy of trunk at 2.2 |-- version_3_experimental => copy of trunk at 2.2 `-- version_3 => copy of trunk at 2.2
您在trunk中为您的第3版进行了每次开发,并且任何错误修复都在version_2分支中完成。如果为版本2开发的任何内容应该在版本3中,则将其合并到trunk中。之后,您将在branches / version_3中合并您的主干。这样,根据版本3,您的主干继续增长。
完成版本2后,请从version_2分支创建标记。
希望这有帮助。
答案 2 :(得分:0)
您可以使用svn merge合并代码分支。
答案 3 :(得分:0)
您的开发将如下所示:
branch
2.x -------------->
| |bring some more
| trunk 3.0 |changes if necessary
trunk --------------------------------------------------------------->
2.2 stable | | | | * incorporated
| | | | | |Merge
create branch periodically bring | |branch 3 back
| | changes from trunk | |to trunk
* * * * * |
branch------------------------------------X branch ends
3 here
我的建议是在将3.x合并到trunk之前延迟创建2.x分支。 这样可以减少合并次数。
从那里进行的任何更改都可以带到trunk(3.x),但不是另一种方式。当逐步淘汰2.x而不是3.x时,这是典型的方法。