用于自动从远程存储库中提取代码的Shell脚本

时间:2013-12-17 11:15:48

标签: shell mercurial

下面是我遍历项目目录并从远程存储库中提取的简单shellcript。现在我遇到一个问题,当远程存储库要求输入密码并且我输入密码时,for循环停止执行,即迭代目录停止。所以我只想知道如何继续遍历目录并重复程序,即使我输入密码并拉出一个目录就完成了!??

for item in *
do
if [ -d $item ]
then
    cd $item
    hg pull
fi
done

1 个答案:

答案 0 :(得分:2)

您应该从工作流程中获取密码。如果您正在使用HTTP,请使用hgrc的[auth]部分,如果您使用的是ssh:// URL,则应使用ssh-agent。

你的循环虽然在手动输入密码之后会继续正常,但是在第一个密码之后它会在错误的目录中,因此无法进入下一个存储库。 hg拉后你需要cd ..。或者使用类似的东西:

for repo in $(find . -type d -name .hg) ; do
     hg pull --repository $(dirname $repo) pull
done

找到当前目录下的每个存储库,无论多深,并且拉动它 - 它会忽略不是存储库的目录和文件。