检查一个svn版本库url不存在

我正在编写一个脚本,它将根据用户提供的名称在存储库中添加一个新项目。 其中一部分涉及检查存储库中是否存在具有相同名称的URL。

在存储库中,我们团队的所有项目都存储在

https://developernetwork.repo.net/svn/Projects/

假设用户想调用项目“计算器”并运行脚本。 在这种情况下,我们需要确保存储库中不存在以下内容

https://developernetwork.repo.net/svn/Projects/Calculator/

有一个svn命令,我可以用它来完成? 不幸的是我看不到在svn文档( http://svnbook.red-bean.com/en/1.0/svn-book.html )中可以使用的适当命令。

你可以使用

svn ls https://developernetwork.repo.net/svn/Projects/Calculator/ 

它会告诉你,如果存储库(目录)存在或不存在。

更新

对于具有许多文件的目录使用:

 svn ls http://server/svn/foo --depth empty 

而不是检查返回string,我只是检查返回码:

 svn ls REPOSITORY/PATH 

 svn info REPOSITORY/PATH 

如果一切正常,则返回0;如果发生错误,则返回1; 你可以快速检查出来:

 echo $? 

所以在一个bash脚本只是做一些事情:

 error=$? if [ $error -ne 0 ]; then YOUR ERROR HANDLING fi 

作品像一个治疗!

要接收有关任何现有存储库的信息(例如,可能会丰富错误消息),您也可以使用

 svn info https://developernetwork.repo.net/svn/Projects/Calculator/ 

对于一个不存在的项目,它只会返回

 svn: Could not open the requested SVN filesystem 

我面临着上述问题,我一路试过。 不工作的我..如果我们访问svn与不在svn的path它失败,错误和shell脚本将打破。

而不是访问未知的path,我所做的是得到父文件夹的目录列表,并检查是否匹配一个包含或不。

从父目录获取所有的项目(如果你想find一个特定的标签,那么你的父目录path应该是https://developernetwork.repo.net/svn/Projects/Calculator/tags

 projects=$(svn ls https://developernetwork.repo.net/svn/Projects/) 

然后检查你的项目文件夹是否存 请记住在项目名称后添加/之后。

 projectName="Calculator/" for i in $projects; do if [ "$i" == "$projectName/" ]; then echo Project Exist else echo Project does not exist fi done 

简单。

我已经评论了一个现有的答案,但我没有足够的声誉。

我想find一个文件是否已成功导入,所以我尝试“svn info”和“svn ls”与“echo $?”。 当我使用“svn ls”时,我只能得到一个零/非零的返回码:“svn info”总是返回零。

这是红帽RHEL6颠覆1.5.5。

就像@斯科特所说, echo $? 不能用来知道URL是否正确(我在Mac OS 10.11和SVN客户端1.9.5上)。

对于潜在的未来读者,我使用这个解决方法:

 content=$(svn info $SVN_TAG_URL) if [[ -z $content ]]; then echo "The SVN URL doesn't exist"; exit fi