我正在为一个客户工作,他的项目代码是不同源代码控制系统的混合体。因此布局可能是这样的
project/a/.svn
/a/subfolder/.svn
/b/.hg
/c/subproject/.svn
/d/.hg
因此,我尝试整理一个简单的命令,当从项目文件夹将在每个项目中运行适当的 hg/svn 命令,即:
pushd a/
svn up
popd
pushd b/
hg pull
popd
:
由于客户有许多这样的项目,我希望不必在脚本中对文件夹结构进行硬编码。相反,我正在寻找类似于查找-exec其中SVN/HG命令在每次第一级匹配时自动执行(即svn 上传运行于项目/a文件夹但不在项目/a/子文件夹)这样的命令该如何构造?
答案1
一个想法:
find /project -maxdepth 1 -type d \( -name .svn -execdir svn up \; \
-o -name .hg -execdir hg pull \; \)
编辑:也许是类似
find /project \( -execdir test -d {}/.svn \; -execdir sh -c \
'cd {} && svn update' \; -o -execdir test -d {}/.hg \; \
-execdir sh -c 'cd {} && hg pull' \; \) -prune