在“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时)?
答案 0 :(得分:3)
我不建议拆分从其他来源导入的库。
如果libcomplex什么的话,你将陷入依赖合并+升级噩梦,但是微不足道。
答案 1 :(得分:1)
或许最简单的方法是首先只将您需要的文件提交到存储库中。这使得Subversion方面的问题变得微不足道。如果您可以编写一个脚本,从您从供应商处获取的drop中提取所需的库子集,那么整个过程可以自动完成。如果必须手动完成提取,这仍然是可行的,但这有点烦人。无论哪种方式,它很可能会变成维护头痛。第三方库通常不会被拆分,因此每当库进行任何结构更改时,您都可能需要进行手动更改。
一种完全不同的方法是将库(或其子集)编译为二进制文件,然后仅将该二进制文件提交到源树中。这就是我在我工作的项目上所做的事情。我们为供应商的库提供了一个单独的存储库。自定义makefile将构建svn://vendor_repo/trunk
并生成svn://vendor_repo/trunk/libs
(与每个新drop一起提交),这是libs
子文件夹,我们使用{{1}将其拖入主存储库}。使用此方法,我们的代码不知道(或关心)lib是子集还是整个库。他们所看到的只是一个链接的二进制文件。我们必须手动维护的代码范围是我们用来构建供应商库的自定义makefile。
答案 2 :(得分:0)
它目前更适合提取目录而不是单个文件,但假设这没问题,请使用--depth选项来限制您检出的内容数量。