繁体   English   中英

使用wget“checkout”svn存储库

[英]Using wget to “checkout” svn repository

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

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

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

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

思考?

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

就像是:

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

然后在每个子文件夹上,如果是'tags':

svn up --set-depth empty tags

其他:

svn up --set-depth infinity dirName

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

您可以在执行svn update时使用svn co上的--depth参数和--set-depth参数来限制结帐。 这样您就可以只签出所需的文件夹和目录,而无需将所有内容都删除。 这有时被称为稀疏结账 作为奖励,这是一个实际的结账。 你可以做提交 - 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM