#!/bin/bash
while read line //读取导入文件的每行到变量$line直到文件结尾
do
Name=`echo $line |awk '{print $2}'` //awk 输出$line对应那行的第二列
ChangeID=`echo $line |awk '{print $1}'` //awk 输出$line对应那行的第一列
pwd=$PWD
URL=`cat .repo/manifest.xml |grep ${Name}\" | cut -d '"' -f 4 ` //找到manifestxml中包含$Name的用/分割后的第四部分,例如1/2/3/4 输出 4 ;/1/2/3/4 则为3
#echo $URL $ChangeID
echo "$Name $ChangeID $URL"
pushd $URL > /dev/null //pushd 本身会输出LOG,“> /dev/null“会使LOG不输出,即相当于传到一个空文件中
Merge=`git log --grep="Change-Id: $ChangeID" --oneline |awk '{print $2}'|head -1` //找到包含Change-Id: $ChangeID的第二列的第一个
if [ "$Merge" = "Merge" ];then
commitID=`git log --grep=$ChangeID --oneline |awk '{print $1}'|head -2 |tail -1 ` //tail -1最后一行,其他同上
if [ ${#commitID} = 0 ];then
echo "this is the merge summit, No need to cherry pick "
fi
else
commitID=`git log --grep="Change-Id: $ChangeID" --oneline |awk '{print $1}'| head -1 ` //同上
fi
if [ ${#commitID} = 0 ] ; then
mChangeID=`echo $ChangeID | cut -c 2- `
changeID=`git log $mChangeID -1|grep Change-Id:|awk -F: '{print $2}'`
if [ ! ${#changeID} = 0 ] ; then
commitID=`git log --grep="$changeID" --oneline | awk '{ print $1}'|head -1`
fi
fi
echo "$Name $ChangeID $URL $commitID"
echo "----------------------"
echo "$commitID $URL changeID $ChangeID" >> $pwd/cherry-pick.list-work
git cherry-pick -x $commitID //cherry pick 对应的git 提交
#echo "-------------- $URL $ChangeID---------------"
popd > /dev/null //popd 本身会输出LOG,“> /dev/null“会使LOG不输出,即相当于传到一个空文件中
done < $1 //导入文件对应while read line 每行分别传到变量$line直到文件结尾