使用开关而不是合并

时间:2010-10-19 19:36:30

标签: svn

此时此刻,我是唯一一个参与svn项目的人。为了保持合法性,我想要对分支进行更改然后将这些更改合并到trunk中:所以我的分支和主干基本相同。目前我有两个工作副本,一个用于分支,一个用于主干。我对分支工作副本进行了更改并提交了这些更改,然后我从分支位置对主干工作副本执行svn合并,然后提交这些更改。问题:我是否可以更改我的进程以便我只有一个工作副本并在分支和主干之间切换如下?:1)切换到分支,进行更改和提交。 2)切换到trunk,commit。 3)重复。

3 个答案:

答案 0 :(得分:5)

您可以再做一个步骤。

  

1)切换到分支,进行更改和   承诺。 2)切换到trunk, svn   合并提交分支更改,   承诺。 3)重复。

答案 1 :(得分:4)

如前面的答案所示,通过来回切换,可以保留一份工作副本。它在技术上没有任何问题,操作在语义上是相同的。但是,由于以下原因,我会留下两份工作副本:

  • 您仍然需要在切换后合并更改,因为交换机会恢复(现在已提交)更改,如第一个答案所指出的那样。
  • 通过在切换后快速复制您的更改,您无法避免合并,因为合并操作会记录提交的元数据(svn:= s中的= s,信息链接,由Richard Fearn评论链接)。
  • 使用单独的工作副本,您可以为分支机构提供“干净”的测试环境,而无需更改/未提交的主干更改。
  • 如果您的主干工作副本中有未提交的更改,因为您在需要修复分支时正在使用主干,那么您可能会意外地提交一些不属于修复程序的内容。两次 - 首先在分支提交中,然后在trunk commit中。

拥有两个工作副本(至少我可以看到)的唯一缺点是你可能必须在进行修复之前进行svn更新。您没有提到想要改变流程的原因吗?

答案 2 :(得分:0)

是的,您可以使用svn switch执行此操作。

如果您的工作副本当前来自分支机构,并且您已将更改提交到分支机构:

svn switch svn://server/path/to/repo/trunk

然后回到分行:

svn switch svn://server/path/to/repo/branches/xxx