使用多个存储库检出的svn目录更新

Gad*_*lin 0 svn bash

我有一个开发目录,其中包含来自svn存储库的检出项,这些存储库保留在非svn目录中.我想更新svns中的所有dirs.

目录结构类似于下面的一个:

替代文字

你会如何解决这个问题?

我带来了"蛮力"解决方案,但它不是很聪明:

for i in `find . -mindepth 1 -maxdepth 3 -type d | grep -v .svn`; do svn up $i; done
Run Code Online (Sandbox Code Playgroud)

如果有这样的话会很高兴:

svn --recursive update development_dir.
Run Code Online (Sandbox Code Playgroud)

小智 6

不幸的是,svn不支持此功能.但是,你可以做的是通过消除循环和管道到grep来优化你的命令.该命令应如下所示:

find . -mindepth 1 -maxdepth 3 -name "*.svn" -type d -exec svn up {}/.. \;
Run Code Online (Sandbox Code Playgroud)

为了简化生活,您可以设置Bash别名,例如:

alias svn_up_recursive='find . -mindepth 1 \
-maxdepth 3 -name "*.svn" -type d -exec svn up {}/.. \;'
Run Code Online (Sandbox Code Playgroud)

...并使用svn_up_recursive命令调用整个脚本.或者创建一个shell脚本并将其放入您的bin目录中.我个人更喜欢shell脚本,因为它更容易支持,扩展它们,处理命令行参数等.