2012-01-30 88 views
1

我有超过250个SVN项目需要从我的服务器结帐,我想知道是否有一种方法可以实现流程的自动化。所有的项目都在同一个文件:如何在一个命令中签出多个SVN存储库?

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

是否有一个命令,我可以在命令做线来自动化的过程?手动操作250次以上会很痛苦。

谢谢!

+1

我认为_'projects'_你的意思是_repositories_?我想这只是为什么建议创建单个根回购并向其添加子回购的一个原因。 – 2012-01-30 15:15:17

+0

我同意上面的评论。如果它们只是同一个存储库下的项目,那么您只需签出存储库根目录。如果他们是不同的存储库,我认为你需要编写一个脚本。 – ken 2012-01-30 15:23:44

回答

1

由于缺乏定义1'meta'-repo,所有项目都定义为外部项目,所以我想不出纯粹的svn解决方案。

根据您的访问服务器的其他方法可以采用,比如使用ssh:

for repo in `ssh [email protected] 'ls /var/svn-repos'`;do svn co <method of connecting/path>/$repo $repo;done; 

总之:您需要一个非SVN方法列出所有回购。

1

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

C:> SVN帮助结帐
结帐(共):从仓库签出工作副本。
用法:结帐URL [@REV] ... [PATH]

如果REV指定在哪个版本的URL是第一
抬头。

如果省略PATH,则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行。

+1

_'On运行Microsoft Windows XP或更高版本的计算机上,可以在命令提示符处使用的字符串的最大长度为8191个字符。在运行Microsoft Windows 2000或Windows NT 4.0的计算机上,可以在命令提示符下使用的字符串的最大长度为2047个字符.'_ http://support.microsoft.com/kb/830473 – 2012-01-30 15:37:13

+0

svn checkout url1 url2 url3等工作!我只需输出所有网址列表即可运行。非常感谢你! – user1178343 2012-01-30 18:58:51

+0

有250个单独的命令是首选,因为您可以轻松地将其中一些命令,错误检查/处理等。 – 2012-01-31 15:06:20

相关问题