台湾菜

SVN导入外部项目到本项目版本库

twcai • programming

为什么需要导入外部项目到本项目版本库

在项目开发的过程中我们很可能会遇到这种情况:我们手头开发的项目可能要用到其他项目的内容。

最容易想到的办法是从其他项目的版本库里取出那部分内容,拷贝并添加到本项目的版本库中。但如果我们要令其他项目那过来的那部分内容保持最新,就是一个非常繁琐的工作了。

有没有高效的办法

如果本项目的版本库自动取得被引用的外部项目的更新,例如每次"svn update"或者"svn checkout"都可以去外部项目的版本库取得最新的内容,那实在是非常方便。我们可以通过Subversion的外部定义功能来实现这个目的。外部定义是一组本地文件路径和URL的映射,使svn可以取得外部版本库的文件到本地路径。

主要要用到以下几个svn指令
svn propset  svn:externals PROJECT_NAME
svn propedit svn:externals PROJECT_NAME
svn propget  svn:externals PROJECT_NAME

前两个指令都可以用来设置对应PROJECT_NAME的svn:externals属性,一般推荐用第二个。svn:externals的属性列表指定项目中模块的相对路径,版本信息和对应的URL。

例如:

third-party/foo         svn://example.com/repos/foo
third-party/bar -r 1234 svn://example.com/repos/bar

Subversion 1.5及以上的版本也支持以下的格式:

        http://example.com/foo third-party/foo
-r 1234 http://example.com/bar third-party/bar

第三个指令则可以查询项目的外部定义的属性列表。

comments powered by Disqus