【问题标题】:How to merge two checked out branches of Subversion ( Offline Merge )?如何合并 Subversion 的两个签出分支(离线合并)?
【发布时间】:2012-05-11 16:17:32
【问题描述】:

我在 Linux 上使用带有 rabbit-vcs 的 Subversion:

  • 在合并下,它仅显示在线浏览我的分支svn url 的选项
  • 没有将离线 svn 文件夹作为分支的选项。

既然我是 Subversion 的新手,那么实际上可以在 svn 上离线合并 2 个分支吗?

我有两个分支已经签出:

  • /home/user/branch1
  • /home/user/trunk

【问题讨论】:

    标签: linux svn version-control merge offline


    【解决方案1】:

    首先,read this。更好的是,read this 也是如此。可以说,了解合并是了解如何正确使用 SVN 的最重要部分(首先,您会在创建新分支之前思考数千次 :))。

    请注意,您将两个已提交的来源合并为一个工作副本。也就是说,即使您将其中一个源指定为工作副本,它仍将使用其 URL 进行合并。所以这是一种客户端可能支持也可能不支持的语法糖。其原因是合并操作需要识别源的共同祖先并将它们逐个更改合并。该信息不存在于工作副本中。

    请注意此处可能造成混淆的来源:在许多(大多数?)实例中,工作副本参数可能指定两个要合并的来源工作副本到合并到)。

    这是我的意思的一个示例:假设您将 S1 和 S2 合并到 W。S1 和 W 包含文件 F。S2 不包含。现在,至少有两种可能:(1) S1 和 S2 的共同祖先 S 包含该文件,并在 S2 中被删除。然后合并应该从 W 中删除它; (2) S不含F,在S1中加入。那么 F 应该保留在 W 中。关于 S 的信息根本不存在于本地,因此必须联系存储库。

    要准确找出您的离线工作副本来自的分支 URL,请在 branch1trunk 中运行 svn info

    【讨论】:

    • 合并两个分支的svn 命令是什么(没有互联网连接?)
    • 抱歉,您对“离线”的含义有些困惑。不,您不能这样做(除非您在本地镜像存储库)。编辑了我的答案。
    • [在云上使用 svn 存储库] 但是这不是有线的,因为我们拥有离线合并所需的所有信息。那为什么它会阻止我们离线合并呢?
    • 我现在明白了.. 好的,所有信息都不能离线使用。嗯.. 那么我们总是需要互联网连接 - 你确定吗?
    • “总是”是什么意思?通常你可以离线工作,只需要连接更新和提交。无论如何,您通常在提交后合并,因此此时您无论如何都需要连接。您似乎想同时在两个分支上工作一段时间。这是一个相当罕见的情况。考虑 Git 或 Mercurial。 AFAIK 使用这些工具,您可以做到。
    猜你喜欢
    • 2016-05-29
    • 1970-01-01
    • 2015-10-15
    • 2010-11-25
    • 2019-04-15
    • 2011-10-10
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多