36

我可能只是没有考虑过这一点,或者我只是不知道 Subversion 中已经存在的选项(我当然不是专家)。

我只是想知道,如果我已经创建了一个分支来开始开发一些新功能,是否有一种更简单的方法可以让分支与trunk的最新修订保持同步,而不必经历所有的麻烦合并一系列修订。我希望能够简单地更新并从主干(当然还有分支)获取所有修订而我提交的更改只影响分支。这可能吗?我问的有意义吗?

我想这与合并一系列修订版并没有什么不同。只是我使用了 AnkhSVN,它在允许合并之前执行所有这些最佳实践检查,有时感觉它比它需要的复杂得多。我的想法是,我希望让我的分支与其他开发人员可能对主干所做的任何提交保持同步,这样当我最终将的分支合并到主干时,一切都会(尽可能)顺利(尽可能)。

4

5 回答 5

34

使您的分支与最新的主干签入保持最新状态称为合并。

我知道合并有时可能是一场王室噩梦,但这正是合并的意义所在。

于 2010-03-03T15:22:48.750 回答
25

TL;博士; 不,你必须合并,这里有一些说明

它并不像你想象的那么糟糕。我将概述我使用的命令行中的步骤。我将使用 vimidiff 来管理您可以使用 Meld 或其他您喜欢的差异工具的冲突。命令前面带有井号“#”标记

<in branch first time from copy>
# svn log --stop-on-copy | tail 
<read the revision that was the copy instruction in this case r229>
# cd ../../trunk
# svn up
<I make note of the latest rivision which is r334>
<now I go back to the branch>
# cd ../branches/branch 
# svn merge -r229:334 svn://url.to.svn.server/project/trunk
<a whole bunch of stuff happens>
< now I check for conflicts >
# svn status | grep ^C
<which outputs something like>
C       public/tools/Diagnostic.class.php
C       public/domain/Report_Setup_Parameter.class.php
C       public/modules/mReports.module.php
<I now revert all these and manually merge them>
# svn revert public/tools/Diagnostic.class.php
...
<revert done now manuall doinng the merge
# vimdiff public/tools/Diagnostic.class.php ../../trunk/public/tools/Diagnostic.class.php
...
<now all the changes are done>
# svn commit -m "Merging trunk into branch 'branch' r:229:334"
commited revision 335

完成了,如果你经常这样做,那么变化并不多。第一次合并后,您需要使用最后一次合并的修订号。因此,在未来的某个时间,该命令将在 svn 日志中查找上次合并的修订版本,在本例中为 335。合并命令看起来像这样

# svn merge -r335:370 svn://url.to.svn.server/project/trunk

所有其他步骤都相同。

于 2010-03-03T15:36:05.537 回答
3

我的想法是,我希望让我的分支与其他开发人员可能对主干所做的任何提交保持同步,这样当我最终将我的分支合并到主干时,一切都会(尽可能)顺利(尽可能)。

为此,您需要从主干进行范围修订合并。实际上,不时对分支进行这种合并是一种很好的做法,以便及时了解主干中发生的情况。

我不了解 AnkhSVN 的工具,但“纯”SVN 有非常好的工具,可以使合并操作变得非常简单。TortoiseSVN是一个很棒的 Windows 工具,如果你喜欢Netbeans,它也有一个非常好的图形支持合并。

于 2010-03-03T15:21:22.323 回答
0

我对 AnkhSVN 不熟悉,但你所描述的正是svn merge它的用途。所以你的问题的答案是否定的。

但是,您可以查看该--reintegrate选项,看看这是否让您的生活更轻松。

请参阅这些博客文章:

简而言之, Subversion 合并重新
集成 Subversion 1.5 合并跟踪

于 2010-03-03T15:21:16.367 回答
0

如果您使用的是 PHPStorm,您可以尝试使用 GUI 界面 https://www.jetbrains.com/help/idea/2016.1/integrating-changes-to-from-feature-branches.html

于 2016-05-31T13:57:27.547 回答