使用分支的SVN策略,以及将更改从主干合并到分支

19

我长期使用SVN,但在分支/标记方面经验不足,而且当我这样做时,我怀疑我并没有真正正确地使用它或充分利用它。

我有我的主干,在其上添加新功能等。此代码库用于多个网站,在其中我们根据每个项目从主干创建一个分支。

每个分支通常都具有特定于该项目的修改,我们认为可重复使用的任何内容都将添加到主干中,并使该功能可以在各个项目上切换开和关。

目前,当我们对主干进行更改并希望在早期日期的分支中进行这些修改时,我必须手动合并某些修订版本并重新提交它们。这不理想,容易漏掉一些东西。

所以,我的问题是...是否有办法使用主干的所有更改更新我的分支,并将它们视为带有冲突的标准主干更新处理?

我已经了解过将分支重新整合到主干中,但由于我在这种情况下使用的分支方式,这不是我想做的事情。


你是使用命令行还是像TortoiseSVN这样的GUI界面来使用svn? - Étienne Miret
6
我是 SVN 的长期用户,几乎使用它的整个历史。虽然你可以通过折腾 SVN 来实现部分需求,但我必须坦白:git 在这方面要好得多(想象一下 "更多的分支")。如果你需要大量处理分支合并和追踪任务,我建议你将 SVN 仓库转换为 git 仓库,并从那里开始。这样你会更加愉快(我将一个使用 SVN 十多年的项目转换成了 git,现在我更有信心知道我的补丁已经应用到了所有地方)。 - Wes Hardaker
我使用智能SVN(可能还有更多)和命令行的组合。 - Horse
有趣的是,我曾经简单地看过git,但当我之前看它时,它似乎过于复杂了,尽管现在我在这个项目中使用svn + 分支设置,所以用法已经有所演变。我会再次仔细研究一下。 - Horse
@WesHardaker最终我转移到了Git,你是对的,它更好。除了真正的老项目,我几乎不再使用SVN了。 - Horse
@Horse 欢迎来到分布式俱乐部!哈哈!好选择! - Wes Hardaker
1个回答

22

是的,这是可能的。基本上,您需要从干净的工作副本中运行svn merge(一个没有本地修改的分支):

是的,这是可能的。基本上,您需要从干净的工作副本中运行svn merge(一个没有本地修改的分支):

$ pwd
/home/user/mybranch
$ svn status # Does not display anything
$ svn update # Make sure your local copy is up to date.
Updating '.':
At revision X.
$ svn merge url/to/repository/trunk
Updates, additions, deletions and conflicts.
$ #handle conflicts.
$ svn commit -m "Merging changes from the trunk".

请参考 SVN 书籍中的Keeping a Branch in Sync章节。

第一次合并可能会引入许多冲突,特别是如果分支较早就被派生出来了,但是后续的合并将会更加顺利,尤其是经常合并时。


我这样做了,然后当我试图从分支更新主干时,所有从主干更新的新类都发生了冲突。我做错了什么吗?还是必须这样发生? - Sertage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接