Subversion:定期将供应商的源代码版本合并到主线

时间:2009-11-05 19:52:20

标签: svn version-control merge vendor-branch

我定期收到供应商软件的新版本,作为压缩包中的源代码提供,我无法访问供应商的源代码库。我们在其版本之间更改供应商的源代码。我们的更改未合并到他们的版本中,但我需要将其版本中的更改合并到我的主线中。

我的存储库布局如下所示:

  • / branches / Vendor X release 1.0
  • / branches / Vendor X release 1.1
  • /中继/

我遵循的工作流程是:

  1. 我将 Vendor X版本1.0 添加为分支,然后将其复制到主干。
  2. 我们对主干上的源代码进行了一些更改,然后收到 Vendor X版本1.1
  3. 我将 Vendor X版本1.1 添加到分支机构。现在,我想将 Vendor X版本1.1 合并到主干中。
  4. 我遇到的问题是无论我如何尝试,我最终都会导致合并导致无法更改主干,或者每个文件都被报告为树冲突。

    我认为我想以某种方式执行以下操作:告诉Subversion合并每个文件而不考虑文件的修订号。我认为Subversion报告了每个文件的树冲突,因为这些文件并非来自修订历史记录中的同一点。但是,在许多情况下,这些文件是相同的。

    提前感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

在非颠覆术语中,您希望将Vendor X版本1.0和Vendor X版本1.1之间的更改集成到您的主干中。

我只创建一个Vendor X分支并使用标签来识别版本号。每当您收到新的供应商X版本时,请检查分支,将新版本的文件复制到您的工作目录中,根据需要应用svn addsvn delete并提交。 Subversion现在拥有供应商X在两个版本中所做的一切的正确差异信息。之后,您可以合并最后两个供应商版本(也就是供应商X分支中的最后一个tweo版本)与主干之间的更改。

答案 1 :(得分:2)

恕我直言,你可以避免合并。这是它:

  1. 创建1.0分支
  2. 复制1.0至1.1
  3. 在1.1
  4. 上执行所有必需的更改
  5. 将1.1复制到主干。
  6. 如果您仍坚持合并,那么:

    1. 创建1.0
    2. 将1.0复制到主干
    3. 复制1.0至1.1
    4. 对1.1
    5. 进行必要的更改
    6. 将对1.1的更改合并到trunk。这些变化从1.1开始到结束。
    7. This也许有帮助

答案 2 :(得分:1)

我遵循的解决方案是:

  1. 为供应商软件创建了一个版本/行。
  2. 1.0版添加到发布/行。
  3. 分支发布/创建主干/然后替换主干/包含我在发布1.0 之后所做的所有更改的工作副本。
  4. 检出1.0版的工作副本,并在1.1版中添加。提交。
  5. 合并发布/进入trunk /。没有树冲突或合并冲突。