代码之家  ›  专栏  ›  技术社区  ›  AnthonyWJones

用SVN中项目的当前主干版本替换分支项目

  •  0
  • AnthonyWJones  · 技术社区  · 15 年前

    我有\trunk\root\,其中包含projecta、projectb等文件夹。 我已经创建了根的分支->\branches\task\root\

    现在,我对包括项目B在内的任务中的项目进行了相当大的更改。

    但是\trunk\root\projectb也移动到了一个点,使得task\root\projectb中的所有更改都是多余的。

    我想将\branches\task\root\projectb的内容完全替换为\trunk\root\projectb的内容。不需要合并,只需使任务版本项目B与主干版本相同即可。注意,当要将任务合并回主干时,我不希望在ProjectB中发生任何奇怪的事情,SVN应该只看到它是ProjectB中当前内容的旧版本,而不更改其中的任何内容。

    有谁能指导一个SVN通过使用Tortoissesvn来实现这一点而不了解我这样的人(谁也恰好是一个完全的CLI奇想)?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Michael Wiles    15 年前
    1. 删除分支上的当前项目B,在SVN报告上执行此操作
    2. 再次将主干项目B复制到该分支位置(项目B以前所在的位置)。
    3. 恢复,或者更好的是,重新检查项目B。

    如果你能接受失去历史的话。

    一种保存历史的替代方法——但这将使用Eclipse IDE

    1. 从主干签出项目B
    2. 从分支签出项目B(到Eclipse中的其他项目)
    3. 比较项目B的两个版本,并将主干项目B的所有更改引入分支项目B。
    4. 签入分支项目B
        2
  •  3
  •   Michael Hackner    15 年前
    1. Switch 工作拷贝到 /branches/task/root/ProjectB (或) checkout 来自此URL的新wc)
    2. 右键单击并选择 Merge
    3. 选择 Merge two different trees
      • 来自: /分支/任务/根/项目B
      • 到: /trunk/root/ProjectB
    4. 将其他选项保留为默认值,然后单击 合并 (或) Test merge )
    5. 通过选择文件的Trunk_s版本来解决任何冲突

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

        3
  •  0
  •   Stewart Robinson    15 年前

    在Tortoise中,您可以右键单击并执行相当于“SVN删除”的操作,即删除要删除的分支。

    然后你需要做一个乌龟复制到和放在新的路径。

        4
  •  0
  •   RedGlyph sumit sonawane    15 年前

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

    你为什么不保留你以前的分支机构,换一个新的呢?在结构中使用版本非常常见,如:

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

    要使用Tortoissesvn执行此操作,请通过以下方式移动分支:

    • 打开repo浏览器(上下文菜单, TortoiseSVN -gt; repo-browser )
    • 创建分支/task/version1.0目录( Create folder 关于任务)
    • 将分支/任务重命名为分支/任务/版本1.0( Rename 关于任务)

    然后您可以正常进行:

    • (已签出中继目录上的上下文菜单) 龟龟 -> Branch/Tag
    • 指定 To URL 新分支(分支/task/version2.0)
    • 指定是从工作副本创建新分支还是从其他位置创建新分支(我强烈建议先提交,然后从主管创建分支)

    (或者,您可以使用repo浏览器并执行 Copy to 从树干上)

    正如工具警告您的那样,您仍然需要切换:

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

    那样你会有更干净的东西。

    如果您仍然选择删除分支,那么在重新合并时,您将通过指定要合并的修订范围(要用Tortoissesvn填充的字段之一)来避免任何混淆。确保排除与已删除分支相关的任何内容。但老实说,我会避免的。