Chinaunix首页 | 论坛 | 博客
  • 博客访问: 952074
  • 博文数量: 113
  • 博客积分: 7235
  • 博客等级: 少将
  • 技术积分: 2101
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-14 11:24
文章分类

全部博文(113)

文章存档

2013年(7)

2012年(5)

2011年(6)

2010年(8)

2009年(15)

2008年(72)

分类: LINUX

2011-07-22 14:18:29

在使用repo sync下载代码的时候,经常由于网络不稳定等因素导致下载失败,于是写了一个脚本,主要功能为对于下载失败的工程暂时忽略,继续下载下一个工程,等全部工程下载完后,在重新尝试下载之前失败的工程直到所有工程都下载成功。


ALL_PKG=`grep project .repo/manifest.xml |awk '{print $3}' |cut -d'"' -f2`
ERR_PKG=""
T_PKG=$ALL_PKG

while [ 1 ]
do
    for i in $T_PKG
    do
        grep "$i" success.pkg >/dev/null 2>&1
        if [ $? -eq 0 ]; then
            continue
        fi
        repo sync $i
        if [ $? -ne 0 ];then
            echo "SYNC Error $i"
            ERR_PKG="$ERR_PKG $i"
            continue
        else
            grep "$i" success.pkg >/dev/null 2>&1
            if [ $? -ne 0 ]; then
                echo "$i" >> success.pkg
            fi
            echo "SYNC Success $i"
        fi
    done

    if [ "$ERR_PKG" = "" ];then
        echo "SYNC ALL"
        exit 0
    else
        T_PKG=$ERR_PKG
        ERR_PKG=""
    fi
done


阅读(8520) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

rancec2016-05-24 17:31:22

很荣幸使用了这段代码,之前同事也用了类似的获取返回值强行sync的操作,不过稍显野蛮了些;

我在用的过程发现有不兼容的bug(由于manifest的多样性导致的),贴上来参考一下,欢迎指正:

# echo \'run \"${repo} sync\" by script in http://blog.chinaunix.net/uid-20729605-id-1884374.html\'
ALL_PKG0=`grep \"project groups=\" .repo/manifest.xml |awk \'{print $3}\' |grep \"name=\"|cut -d\'\"\' -f2`
ALL_PKG1=`grep \"project name=\" .repo/manifest.xml |awk \'{print $2}\' |grep \"name