4

我有一个布局非常糟糕的 svn 存储库,我没有重新构建的权限。在存储库根目录的不同深度,有几个子项目分布在存储库中。我希望能够检查所有的树干(但不是任何分支或标签文件夹),无论它们处于什么深度。我认为这将是 wget 解决的一个好问题。我最初使用 wget 看起来像这样:

wget -r -X 'tags' -I "base/of/repo" "http://www.urlrepo.com/"

运行此命令时遇到的一些问题:

  1. 即使我认为 -X 标志应该排除它们,Wget 仍然抓住了标签文件夹
  2. 下载的文件放在文件夹“base/of/repo”中,这并不可怕,但最好不要保存到这个路径

想法?

4

2 回答 2

4

您可以使用稀疏结帐 递归bash地执行此操作。svn

就像是:

svn co --depth immediates svn://repo/trunk

然后在每个子文件夹上,如果它是“标签”:

svn up --set-depth empty tags

别的:

svn up --set-depth infinity dirName
于 2013-04-05T15:24:11.273 回答
1

尽管它可能有效,但它依赖于一些不能 100% 保证的东西:当您使用 httpd 作为您的 Subversion 存储库服务器时,您可以使用浏览器。

您可以通过使用--depth参数 onsvn co--set-depth参数 when doing来限制结帐svn update。这将允许您只签出您想要的那些文件夹和目录,而无需拉下所有内容。这有时被称为稀疏结帐。作为奖励,这是一个实际的结帐。你可以做提交——有些事情wget不会让你做:

$ # I want to just checkout the immediate files under the URL:
$ svn co --set-depth=immediates $REPO/trunk/foo
A foo/first
A foo/second
A foo/third
# I want to checkout everything in first and third, but nothing in second:
$ cd foo
$ svn up --set-depth=none second #Removes directory second
$ svn up --set-depth=infinity first third

使用它应该适用于您的原始示例:

$ svn co --depth=none http://www.urlrepo.com/ workdir
$ cd workdir
$ svn up --set-depth=none base
$ cd base
$ svn up --set-depth=none of
$ cd of
$ svn up --set-depth=infinity repo
于 2013-04-05T15:25:10.650 回答