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

标签 svn version-control external patch vendor-branch

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

SVN Book 似乎推荐了一个“vendor branch”方案,我们保留了“vendor drops”的补丁版本。这会起作用,除了供应商还使用 SVN 并为我们提供对其 reop 的读取权限。

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

所以我的问题是:

有没有一种方法可以让一个修补过的“供应商分支”也能以某种方式保持对供应商文件历史的访问?

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

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

谢谢

最佳答案

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

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

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

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

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

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

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

关于SVN:供应商分支+补丁+历史?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321525/

相关文章:

sql - 如何开始在 SQL 2005 中使用版本控制/共享代码?

hive - 外部表不返回其文件夹中的数据

database - 从外部源加载 Hibernate 属性 (HashMap)

eclipse - 使用 svn 意外恢复

regex - SVN 标签版本号从命令行递增

svn - 错误 : Retrieval of mergeinfo unsupported by 'svn://IP.Address' ?

.net - 在 SVN 中组织共享 .net 程序集的最佳方式是什么?

c# - 是否有用于包装多个 SCM 提供商 API 的 c# 库?

源代码行的 git 历史

javascript - 从另一个 JS (jQuery) 动态加载 JS