11

设置 subversion 以使用供应商分支时的最佳实践是什么?我们的存储库是针对单个项目构建的。我们正在使用颠覆 1.6.2 和 tortoiseSVN 1.6.3。

示例文件夹结构:

Project1
 /tags
 /branches
 /trunk

Project2
 /tags
 /branches
 /trunk
  1. 我应该把供应商文件夹放在哪里,它应该有什么结构?
  2. 有没有使用 tortoisesvn 客户端的例子?
4

3 回答 3

14

Subversion 手册有一节专门介绍Vendor Branches

基本思想是您通过一组跟踪外部更改(只是外部更改,而不是您对它的修改)的文件夹将未修改的当前版本导入存储库。类似“.../repos/vendor/(software)/current”的东西。然后立即分支到“.../repos/vendor/(software)/(software-version)”。随着新版本的发布,更新“当前”目录并创建一个新分支,例如“.../repos/vendor/(software)/(next-version)”。这让您(和 svn)可以对未修改的源进行差异化,以得出外部更改的内容。

对于您对软件的修改,将“(software-version)”分支到您自己的项目中,例如“.../repos/(my-project)/trunk/(software)”。当您升级到第三方源的下一个版本时,告诉 svn 将“(software-version)”和“(next-version)”之间的差异合并到“trunk/(software)”的工作副本中。这会将所有外部更改拉入主干,巧妙地升级项目源。正常分支和标记项目。

Subversion 发行版包含一个名为“svn_load_dirs.pl”的 Perl 脚本,它可以在升级“vendor”项目时提供帮助。它会发现已删除、添加和重命名的文件,并根据需要修改您的工作副本,例如“(当前)”。

于 2009-06-22T14:05:14.757 回答
4

对于以后遇到这个问题的人来说,值得知道的是,从 SVN 版本 1.8 开始,James 对这个问题的回答中描述的处理供应商分支的记录方法已经改变。

在编写新文档时,新文档仍在定稿中,请查看 SVN 手册第 4 章的供应商分支部分:http: //svnbook.red-bean.com/nightly/en/svn。高级.vendorbr.html。请注意该页面顶部的警告,说明文档正在进行中。

于 2013-11-15T11:29:14.413 回答
0

你说的是真的,但在实践中你会看到一个非常大的问题。

当您将供应商项目导入您的 subversion 存储库时(假设供应商项目是一个大项目,比如说 apache httpd 2.2),您会发现不可能在每个目录上导入 svn:ignore 属性,因为存在不存在任何只能通过访问 WebDAV 界面才能执行此操作的导出工具(有可以导出 svn 道具但需要直接访问供应商存储库的 svn 管理工具)。

因此,当您导入供应商项目时,您必须首先从供应商 svn 存储库中导出原始项目,然后将文件导入您的 svn 后,您将为项目中的每个目录手动设置 svn 属性。一种非常完整的方法,但如果您真的想修改供应商项目并跟上他们的修改,这是唯一的方法。

于 2010-01-19T10:42:14.003 回答