如何获取Subversion外部引用而不获取所有其他目录和子目录

7
我有一个名为“repo”的Subversion仓库。在repo中包含trunk/和branches/目录。branches/中有几十个发行分支,例如1.0/,1.1/等。这些branches/目录包含一个相对较大的应用程序。
我想在repo的根目录下添加一个名为“myExternal”的外部文件。当我定义外部文件时,唯一让SVN创建myExternal/目录的方法是从repo的根目录运行“svn up”。然而,这也会导致检出branches/目录的全部内容,这是不可接受的(我们有很多开发人员需要将myExternal/添加到他们的repo副本中,不能让所有人都检出不需要的gigabytes分支)。
我尝试过“svn up --set-depth immediates”,但似乎并没有获取外部文件。有没有办法告诉SVN获取myExternal/而不获取所有的branches/?
使用SVN 1.7。
2个回答

6

Externals就是svn的checkouts,所以你可以手动地检出它们。

你也可以使用这样的命令。如果你的externals格式不同,你可能需要稍微修改一下。

svn propget svn:externals | awk '{print $2, $1}' | xargs -L1 svn co

1
在我的情况下,svn propget svn:externals | xargs -L1 svn co 是有效的。 - Fedir RYKHTIK
svn propget svn:externals | sed -e 's/ / .//' | sed -e 's/'//g' | xargs -L1 svn co - 对我很有用。 - TCS
我应该澄清一下,我们已经在手动检查中了。我的意图是看看是否有一种原生的方法来使用最初的“checkout”进行操作。 - egherrmann

4

是的,这是Subversion已知的问题,外部引用只有在depth=infinity时才会被创建

我认为没有其他办法来重新设计你的目录结构,以便将myExternal附加到其子文件夹而不是repo,例如设置在trunk和branches中的每个文件夹上。

或者您可以创建一个脚本,首先获取repo的immediates,然后获取在repo上设置的外部引用(它可以通过读取repo的属性:svn propget svn:externals来获取)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接