我可以在不执行合并的情况下从主干更新分支吗?

Dan*_*Tao 34 svn merge branch trunk ankhsvn

我可能只是没有想到这一点,或者我可能根本没有意识到Subversion中已有的选项(我当然不是专家).

我只是想知道,如果我已经创建了一个分支来开始处理一些新功能,如果有一种更容易的方法来保持分支机构与主干的最新版本保持同步而不必经历所有麻烦合并一系列修订.我想能够简单地更新,并从行李箱(所有版本分支,当然),而我提交的修改只会影响分支.这可能吗?我问的问题有意义吗?

我认为这与合并一系列修订并不一定有所不同; 只是我使用AnkhSVN,它在允许合并之前执行所有这些最佳实践检查,有时感觉它比它需要的复杂得多.这个想法是,我要保持我的分支上最新与任何提交其他开发商可能使躯干,这样,当我最终我的分支合并到主干,一切顺利(AS)顺利(尽可能).

Jac*_*tti 33

让您的分支机构与最新的中继签到日期保持一致称为合并.

我知道合并有时可能是一场皇室噩梦,但这正是合并的原因.

  • @Dan:是的,更新也会这样做,而且它有时会受到伤害.但是,分支通常是因为事先是_known_而创建的,因此冲突的编辑将在更长的时间内发生 - 因此您更有可能遇到冲突.(并且不要忘记那些将具有冲突变化的两个分支合并到具有更多本地更改的工作副本的时间.这很有趣......) (2认同)

fla*_*ter 23

TL; DR; 不,你必须合并,这是一些指示

它没有你想象的那么糟糕.我将概述我使用的命令行中的步骤.我将使用vimidiff来管理你可以使用Meld或你喜欢的其他diff工具的冲突.命令前面是散列"#"标记

<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
Run Code Online (Sandbox Code Playgroud)

完成,如果你这么做,那么没有太多的变化.第一次合并后,您需要使用上次合并的修订版#.因此,将来的某个时间命令将在svn日志中查找最后一次合并的修订版本,在本例中为335.合并命令看起来像是

# svn merge -r335:370 svn://url.to.svn.server/project/trunk
Run Code Online (Sandbox Code Playgroud)

所有其他步骤都是相同的.