Subversion:仅使用供应商分支中的一些文件

时间:2012-02-12 05:26:16

标签: svn version-control vendor-branch

在“Version Control with Subversion”中,Vendor Branches section为“libcomplex”设置供应商分支,然后使用以下命令将libcomplex复制到主开发分支中:

$ svn copy http://svn.example.com/repos/vendor/libcomplex/1.0  \
           http://svn.example.com/repos/calc/libcomplex        \
           -m "bringing libcomplex-1.0 into the main branch"

但是,如果我们只需要libcomplex的一部分功能(以及文件的子集)呢?

将libcomplex的一部分复制到主分支是否可以?或者这可能会导致问题(特别是在升级libcomplex时)?

3 个答案:

答案 0 :(得分:3)

我不建议拆分从其他来源导入的库。

如果libcomplex什么的话,你将陷入依赖合并+升级噩梦,但是微不足道。

答案 1 :(得分:1)

或许最简单的方法是首先只将您需要的文件提交到存储库中。这使得Subversion方面的问题变得微不足道。如果您可以编写一个脚本,从您从供应商处获取的drop中提取所需的库子集,那么整个过程可以自动完成。如果必须手动完成提取,这仍然是可行的,但这有点烦人。无论哪种方式,它很可能会变成维护头痛。第三方库通常不会被拆分,因此每当库进行任何结构更改时,您都可能需要进行手动更改。

一种完全不同的方法是将库(或其子集)编译为二进制文件,然后仅将该二进制文件提交到源树中。这就是我在我工作的项目上所做的事情。我们为供应商的库提供了一个单独的存储库。自定义makefile将构建svn://vendor_repo/trunk并生成svn://vendor_repo/trunk/libs(与每个新drop一起提交),这是libs子文件夹,我们使用{{1}将其拖入主存储库}。使用此方法,我们的代码不知道(或关心)lib是子集还是整个库。他们所看到的只是一个链接的二进制文件。我们必须手动维护的代码范围是我们用来构建供应商库的自定义makefile。

答案 2 :(得分:0)

您使用sparse directories

它目前更适合提取目录而不是单个文件,但假设这没问题,请使用--depth选项来限制您检出的内容数量。