SVN:供应商分支机构+修补程序+历史记录?

问题描述:

我们有一个相当大的库,我们需要定期导入(然后打补丁)到我们的代码库。SVN:供应商分支机构+修补程序+历史记录?

SVN书似乎推荐一个“供应商分支”计划,在那里我们保留我们修补版的“供应商下降”。这将起作用,除了供应商也使用SVN并且让我们读取他们的reop。

当我们需要更新我们的补丁时,能够访问供应商文件的历史将是一件非常好的事情。

所以我的问题是:

有没有办法有一个补丁“卖主分支”也不知何故保持访问历史记录的供应商档案?

(我见过提及svn:外部文件夹,但我不确定我是否真的了解挂钩修订的完整分支,以及我们如何维护自己的修补程序。)

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

感谢

+0

这不是你所期望的答案,但是(即使我真的很喜欢svn),如果你期望与分支机构密切合作,那么SVN对你来说可能不是一个好的决定。我建议你去看看Mercurial或GIT Mercurial更简单,我将它用于我的私人项目,而GIT更强大。 – zerkms 2010-12-01 05:46:23

+1

@zerkms是的,可悲的是,SVN是一个“业务需求”。在这件事上没有选择。 – nonot1 2010-12-01 05:57:25

好了,这里有个致命的,你要供应商的来源与历史一起,但你也将您的补丁应用到供应商的来源。让他们的历史来源很容易。通过历史获取他们的源代码,然后应用您的补丁程序并持续执行此操作,这很困难。

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

如果您希望供应商的源代码和历史记录一起使用,您可以为供应商资源库设置svnsync并定期提取其更改。 Svnsync是一种以完整的历史记录作为本地副本远程获取某些内容的绝妙方式。但是,svnsync的一个警告是,存储库变为只读。所以你不能将补丁应用到它们的源代码中。

现在,由于您每年只进行一次或两次这样的操作,因此您可以使用svnsync通过下拉他们存储库的新副本的过程。打破同步并使供应商的回购副本可写,然后应用您的修补程序。

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

无论选择哪种方式,每次执行此过程时都必须将补丁重新应用到供应商存储库的副本。至少你一年只做一次或两次。

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