繁体   English   中英

Subversion供应商分支机构

[英]Subversion Vendor Branches

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

示例文件夹结构:

Project1
 /tags
 /branches
 /trunk

Project2
 /tags
 /branches
 /trunk
  1. 我在哪里放置供应商文件夹以及它应该具有哪些结构?
  2. 是否有使用tortoisesvn客户端的示例?

Subversion手册中有一节专门针对供应商分支

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

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

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

对于稍后来到这里的人来说,值得一提的是,从SVN版本1.8开始,詹姆斯对此问题的回答中描述的处理供应商分支的文档化方法已经改变。

在撰写本文时,新文档仍在最终确定,请参阅SVN Book第4章的供应商分支部分: http//svnbook.red-bean.com/nightly/en/svn。 advanced.vendorbr.html 请注意该页面顶部的警告是正在进行的文档。

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

当你将供应商项目导入你的subversion存储库时(并且使用一个很大的供应商项目,比如apache httpd 2.2),你会发现由于那里的事实导致无法在每个目录上导入svn:ignore属性不存在任何只能通过访问WebDAV界面才能执行此操作的导出工具(有svn管理工具可以导出svn道具但需要直接访问供应商存储库)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM