2013-11-26 30 views
0

我读过http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html,但我没有看到我需要的信息。它(几乎没有)谈论propset,但不是propedit,这正是我想要的。我有v1.8客户端。如何使用svn externals在混合分支中创建多模块版本?

说我有在

root URL = https://mySvnRepo 

^/projects/trunk/module1 
^/projects/trunk/module2 
^/projects/trunk/module3 

以下模块层次说我支了整个项目/ *树

^/projects/branches/branch1/module1 
^/projects/branches/branch1/module2 
^/projects/branches/branch1/module3 

...和

^/projects/branches/branch2/module1 
^/projects/branches/branch2/module2 
^/projects/branches/branch2/module3 

我怎么能使用svn外部,所以我的工作副本看起来像

/home/svn/projects/module1 from http://mySvnRepo/projects/trunk 
/home/svn/projects/module2 from http://mySvnRepo/projects/branches/branch1 
/home/svn/projects/module3 from http://mySvnRepo/projects/branches/branch2 

例如。

我不需要对我为什么要/不应该做这样的讲座。我只是想知道如何。如果我在足部(或头部)开始自我射击,现在就可以了。我只是试图证明一个可能或不可行的工作流程。谢谢!

+0

其中哪些是SVN中的真实文件夹? 'projects'? '项目/ module1'? 'http:// mySvnRepo/trunk'会在'projects/module1'下进入名为'projects/module1/trunk'的文件夹吗? –

+0

谢谢,我澄清了这篇文章。 –

回答

2

将下面svn:externals定义在一个名为externals.txt的文本文件:

^/projects/trunk/module1 module1 
^/projects/branches/branch1/module2 module2 
^/projects/branches/branch2/module3 module3 

在工作拷贝,运行svn mkdir创建一个存储库的根目录下名为externals目录。然后,使用此新目录的路径运行svn propset svn:externals --file externals.txt

externals工作副本的svn update运行将获取外部目录。

+0

请详细说明“......它可能是最好把SVN:在外部组件新仓库”你的意思是创建的https // myNewRepo /外部组件,然后SVN共同的https // myNewRepo /外部组件/家/的外部,CD /家庭/外部,然后svn propset svn:外部 - 文件externals.txt,然后svn了? (注意:我省略了:在URL中避免使它们成为链接) –

+0

我怎样才能/将/应该设置原始回购以避免为svn:externals创建新的回购? –

+0

SVN具有[公约](http://svnbook.red-bean.com/en/1.7/svn.branchmerge.maint.html#svn.branchmerge.maint.layout)其中'trunk','branches',和'标签'目录在层次结构的同一级别组合在一起。没有其他目录应该在该级别。要在一个存储库中同时使用'svn:externals'和'svn:externals'指向的内容,请在'mySvnRepo'和'trunk/branches'的根目录之间插入一个目录。也许'产品'?然后在与'products'相同的级别创建'externals'目录。 –