使用SVN中项目的当前Trunk版本替换Branched项目

时间:2009-11-05 10:34:54

标签: svn tortoisesvn

我有\ trunk \ root \,其中包含文件夹ProjectA,ProjectB等。 我创建了root分支 - > \分支\任务\根\

现在我对包括ProjectB在内的任务项目进行了大量更改。

然而,\ trunk \ root \ ProjectB也已转移到使task \ Root \ ProjectB中的所有更改都冗余的点。

我想用\ trunk \ root \ ProjectB的内容完全替换\ branches \ task \ root \ ProjectB的内容。没有合并只是让任务版本ProjectB与trunk版本相同。请注意,当将任务重新合并到trunk时,我不希望在ProjectB中发生任何奇怪的事情,SVN应该只看到它是ProjectB中现在的旧版本并且不会更改其中的任何内容。

任何人都可以通过使用TortoiseSVN来指导一个像我这样知识渊博的SVN(也恰好是一个完整的CLI)吗?

4 个答案:

答案 0 :(得分:3)

  1. 删除分支上的当前ProjectB,在svn repo上执行此操作
  2. 将主干ProjectB再次复制到该分支位置(以前是ProjectB)。
  3. 还原,或者更好的是,重新检查ProjectB。
  4. 如果你对失去历史感到满意就可以了。

    保留历史记录的另一种方法 - 但这将使用Eclipse IDE

    1. 从主干
    2. 结帐ProjectB
    3. 从分支机构检出ProjectB(到Eclipse中的其他项目)
    4. 比较两个版本的ProjectB,并将Trunk Project B中的所有更改引入分支ProjectB
    5. Checkin Branch Project B

答案 1 :(得分:3)

  1. Switch工作副本到/branches/task/root/ProjectB(或checkout来自此网址的新WC
  2. 右键单击并选择Merge
  3. 选择Merge two different trees
    • 来自:/branches/task/root/ProjectB
    • 收件人:/trunk/root/ProjectB
  4. 将其他选项保留为默认值,然后点击Merge(或Test merge
  5. 通过选择文件的中继版本
  6. 解决所有冲突

    这将带来必要的更改,使您的分支与主干相同。然后你可以提交。

答案 2 :(得分:0)

在乌龟中您可以右键单击并执行相当于“svn delete”的操作,即删除要杀死的分支。

然后你需要做一个Tortoise副本并放入新的路径。

答案 3 :(得分:0)

通常情况下,您应该定期将主干中所做的更改重新整合到分支中,以避免出现这种情况。

为什么不保留以前的分支,而是改为新分支?在结构中使用版本是很常见的,如:

branches/task/version1.0
branches/task/version2.0
tags/task/version1.0
tags/task/version2.0
trunk

要使用TortoiseSVN执行此操作,请移动您的分支:

  • 打开repo-browser(上下文菜单,TortoiseSVN - > repo-browser
  • 创建分支/ task / version1.0目录(任务上的Create folder
  • 将分支/任务重命名为branches / task / version1.0(任务中Rename

然后你可以正常进行:

  • (签出的中继目录上的上下文菜单)TortoiseSVN - > Branch/Tag
  • 指定新分支的To URL(branches / task / version2.0)
  • 指定是否要从工作副本或其他地方创建新分支(我强烈建议先提交并从HEAD分支)

(或者您可以使用repo-browser并从主干中执行Copy to

当工具警告你时,你仍然需要切换:

  • (同一目录上的上下文菜单)TortoiseSVN - > Switch
  • 指定新分支的To URL(branches / task / version2.0)

你会有更清洁的东西。

如果你选择删除分支,你可以通过指定要合并的修订范围(其中一个字段用TortoiseSVN填写)来避免混淆。确保排除与已删除分支相关的任何内容。但说实话,我会避免这种情况。