我有一个非常糟糕的svn存储库,我没有权限重新构建。有几个子项目分布在存储库根目录不同深度的仓库中。我想能够检查所有的中继(但不是任何分支或标签文件夹),无论它们的深度是多少。我认为这对于wget解决来说是一个很好的问题。我最初使用wget看起来像这样:
wget -r -X 'tags' -I "base/of/repo" "http://www.urlrepo.com/"
运行此命令时遇到的一些问题:
思想?
答案 0 :(得分:3)
您可以使用稀疏结帐使用bash
和svn
递归执行此操作。
类似的东西:
svn co --depth immediates svn://repo/trunk
然后在每个子文件夹上,如果是'tags':
svn up --set-depth empty tags
否则:
svn up --set-depth infinity dirName
答案 1 :(得分:1)
虽然可能正常工作,但它依赖于不是100%保证的东西:当您使用httpd作为Subversion存储库服务器时,可以使用浏览器。
您可以在执行--depth
时使用svn co
上的--set-depth
参数和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