如何在一个命令中签出多个SVN存储库?

时间:2012-01-30 15:13:21

标签: svn command-line tortoisesvn

我需要从我的服务器检出超过250个SVN项目,我想知道是否有一种方法可以自动化该过程。所有项目都在同一个文件中:

数据/
..project1
..project2
..project3

我是否可以在命令行中执行命令来自动执行此过程?手动执行250次以上操作会非常严重。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果没有定义1'meta'-repo,所有项目都定义为外部,我想不出纯粹的svn解决方案。

根据您对服务器的访问权限,可以使用其他方法,例如使用ssh:

 for repo in `ssh user@host 'ls /var/svn-repos'`;do svn co <method of connecting/path>/$repo $repo;done;

简而言之:您需要一个非svn方法来列出所有回购。

答案 1 :(得分:1)

您必须学会使用命令行客户端。它与TortoiseSVN捆绑在一起,但您需要确保它已安装,因为安装程序将其作为可选组件提供。

  

C:&gt; svn help checkout
  checkout(co):从存储库中查看工作副本   用法:结帐网址[@REV] ... [路径]
  
   如果指定,REV确定URL首先在哪个版本中    抬起头来。
  
   如果省略PATH,则URL的基名将用作
   目的地。如果给出多个URL,则将检查每个URL    进入PATH的子目录,子目录的名称为    是URL的基本名称。

简而言之,您必须使用自己喜欢的文本编辑器来组成这样的行:

svn checkout https://example.com/path/to/repos/project1 ^
svn checkout https://example.com/path/to/repos/project2 ^
svn checkout https://example.com/path/to/repos/project3 ^
...
svn checkout https://example.com/path/to/repos/project250 ^
c:\path\to\working-copies

...然后保存为* .bat文件或复制并粘贴到命令行提示符中。 (^符号只是允许多行命令的技巧;您也可以将所有内容写入一行。)

个人想法:很难相信有一个尖头发的老板在那里期待你在250个不同的项目上工作。最有可能的是,您有250个同一产品的自定义项,并且有250个存储库是过去做出错误决定的结果。无论如何,祝你好运。

更新: Windows命令提示符很可能具有允许的最大命令大小。如果您想保持安全,请改为编写250条不同的svn checkout行。