Svn Subversion:仅使用来自供应商分支的部分文件
在“”中,为“libcomplex”设置供应商分支,然后使用以下命令将libcomplex复制到主开发分支中:Svn Subversion:仅使用来自供应商分支的部分文件,svn,version-control,vendor-branch,Svn,Version Control,Vendor Branch,在“”中,为“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" 然而
$ 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时)?我不建议拆分从其他源导入的库 如果librame很复杂,但很琐碎,那么您将陷入依赖项合并+升级的噩梦 您可以使用
目前,它更适合于提取目录而不是单个文件,但假设这样做没有问题,请使用--depth选项限制签出的内容量。也许最简单的方法是首先只将需要的文件提交到存储库中。这使得问题的颠覆方面变得微不足道。如果您可以编写一个脚本,从您从供应商处获得的drop中提取所需的库子集,那么整个过程都可以自动化。如果提取必须手动完成,这仍然是可行的,但这有点烦人。不管是哪种方式,它都很可能会变成一个维护头疼的问题。第三方库通常不会被拆分,因此每当库进行任何结构更改时,您都可能不得不进行手动更改
另一种完全不同的方法是将库(或其子集)编译成二进制文件,然后只将该二进制文件提交到源代码树中。这就是我在一个项目上所做的。我们为来自供应商的库提供了单独的存储库。自定义生成文件将生成
svn://vendor_repo/trunk
并生成svn://vendor_repo/trunk/libs
(与每个新的拖放一起提交),我们使用svn:externals
将这个libs
子文件夹拉入主存储库。使用这种方法,我们的代码不知道(或关心)libs是一个子集还是整个库。他们看到的只是一个要链接的二进制文件。我们必须手动维护的代码范围是我们用于构建供应商库的自定义makefile。除了您不希望这些文件出现在树上之外,还有其他原因吗?Cherry为安装或发布包挑选文件是另一回事。OP在分支之间的存储库中进行复制,而不是签出。