TortoiseSVN:如何在不将工作副本切换到主干的情况下将分支合并回主干?

时间:2010-03-01 07:43:49

标签: svn tortoisesvn merge branch

我们在团队环境中使用TortoiseSVN。在处理更大的功能时,我创建了一个功能分支,在那里工作一周,每隔一天合并从主干到我的分支的更改,当功能完成后,我将它合并回主干。

合并时,我总是这样做:

  1. 将所有内容提交到分支
  2. 将整个工作副本切换到主干,更改(主要是删除)数百个文件
  3. 使用“重新整合分支”选项,合并30秒前已经在磁盘上的分支的已更改/新文件
  4. 验证代码是否已编译
  5. 提交到主干
  6. 这对我来说似乎效率低下 - 我创建了一堆文件,在切换到trunk时删除它们,然后在合并到trunk时再次创建它们。

    有没有其他方法可以使用TortoiseSVN将分支合并到主干,这样可以提高效率,而不需要两个单独的工作副本? (在我们的场景中实际上效率不高,因为一些依赖项使用绝对路径,当我想从另一个工作副本编译时我需要手动更改它们)

4 个答案:

答案 0 :(得分:13)

如果没有干线的工作副本(即合并目标),则无法在SVN中合并和提交。这不是可以直接在存储库上执行的操作,因为它正在修改文件,并且您需要在提交之前验证它们是否已正确合并。

所以我猜你基本上想要一个切换和合并动作(或者 switch-and-merge-reintegrate )。据我所知,这个命令不是由SVN或TortoiseSVN提供的,所以你不会按照你描述的方式去做。

答案 1 :(得分:0)

我始终保留两者的工作副本。

如果你检查了主干和分支下面的根,那么你们都可以使用,所以不需要来回切换。只需像正常的文件结构一样在树上上下移动。

答案 2 :(得分:0)

我知道我迟到了,但有一个想法是使用subst命令使虚拟驱动器指向活动的工作副本:

cd \myproject\trunk
subst z: .
... use the trunk ...
cd \myproject\branchxy
subst /d z:
subst z: .
... use the branch xy ...

这样,您只需在传入的外部依赖项中使用subst - 创建的驱动器号。

答案 3 :(得分:-2)

以下是SVN书籍的摘录:

  

您需要/ trunk的工作副本。您可以通过执行svn checkout,从磁盘上某处挖掘旧的主干工作副本或使用svn开关来获取一个(请参阅“遍历分支”一节)。