3

我们有一个相当大的库,我们需要定期将其导入(然后修补)到我们的代码库中。

SVN Book 似乎推荐了一个“供应商分支”方案,我们在其中保留了“供应商丢弃”的修补版本。这会起作用,除了供应商也使用 SVN 并允许我们读取他们的 reop。

当我们需要更新补丁时,访问供应商文件的历史记录会很棒。

所以我的问题是:

有没有办法让修补的“供应商分支”也以某种方式保持对供应商文件历史记录的访问?

(我已经看到提到 svn:external 文件夹,但我不确定我是否真的了解挂钩修订的全部后果,也不知道我们将如何维护自己的补丁。)

在这里走的正确路线是什么?(FWIW,供应商每月发布一次。我们打算每年拉一次/两次更新。)

谢谢

4

1 回答 1

2

好的,问题来了,您需要供应商的源代码以及历史记录,但您也将补丁应用于供应商的源代码。获取他们的历史来源很容易。获取他们的历史来源,然后应用你的补丁并不断地这样做,这很困难。

现在假设您没有将供应商的源目录放入源中(意味着您分别构建两个项目),如果您将两个源保存在单独的存储库中,您有几个选择。

如果您想要供应商的源代码和历史记录,您可以设置一个到供应商存储库的 svnsync 并定期拉取他们的更改。Svnsync 是一种以具有完整历史记录的本地副本远程获取某些内容的绝妙方法。但是对 svnsync 的一个警告是存储库变为只读的。所以你不能将补丁应用到他们的源代码上。

现在,由于您每年只执行一次或两次,因此您可以使用 svnsync 完成提取其存储库的新副本的过程。中断同步并使您的供应商存储库副本可写,然后应用您的补丁。

另一种选择是让供应商转储他们的回购并将其发送给您。然后您将该转储加载到您自己的存储库中并进行读/写。

使用任一选项,每次执行此过程时,您都必须将补丁重新应用到供应商存储库的副本中。至少你一年只做一两次。

现在,如果您必须在您的源代码中包含他们的源代码,仍然执行上述操作,但使用 svn:external 就像您在问题中提到的那样。您仍然需要将需要对供应商源代码制作的任何补丁应用到您的供应商存储库副本。

于 2010-12-01T15:06:33.637 回答