SVN:供应商分支+补丁+历史?

时间:2010-12-01 05:38:25

标签: svn version-control external patch vendor-branch

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

SVN Book似乎推荐了一个“供应商分支”计划,我们保留了“供应商丢弃”的修补版本。除非供应商也使用SVN并为我们提供对其reop的读取权限,否则这将起作用。

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

所以我的问题是:

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

(我已经看到过提到svn:外部文件夹,但我不确定我是否真正了解了修订版本的全部后果,以及我们如何维护自己的修补程序。)

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

由于

1 个答案:

答案 0 :(得分:2)

好的,这就是问题,您需要供应商的来源以及历史记录,但您也将补丁应用于供应商的来源。获取历史资料很容易。获取历史记录,然后应用补丁并不断地执行此操作,这很难。

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

如果您希望供应商提供历史记录,您可以为供应商存储库设置svnsync并定期提取其更改。 Svnsync是一种很好的方式,可以远程获取具有完整历史记录的本地副本。但对svnsync的一个警告是存储库变为只读。因此,您无法将补丁应用于其源。

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

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

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

现在,如果您必须在源代码中使用其源代码,仍然执行上述操作,但请使用您在问题中提到的svn:external。您仍然需要将供应商所需的任何补丁应用于供应商存储库的副本。