在添加repo源码仓库的时候,由于仓库非常多,如果手动去添加,一天就过去了。这里记录下使用的几个小脚本,节省一些时间。
一、首先创建manifest.xml文件
这一步因各种项目而异,一般需要手动去写,没办法省力
二、git服务器创建仓库
manifest.xml创建好后,repo仓库要先提交。
之后需要在gitolite服务器上建立所有的仓库,步骤如下:
-
使用如下命令生成src.txt
cat manifest.xml | cut -d '"' -f 2 > src.txt
-
批量写入仓库配置
gitolite-admin/conf目录下运行命令cat src.txt | ./con-tools.sh
con-tools.sh如下:
#/bin/bash
set -x #追踪代码执行情况
set -e #当脚本执行出现意料之外的情况时,立即退出,避免错误被忽略,导致最终结果不正确
work_dir=$1 #传入的第一个参数
pwd=${PWD}
echo $pwd start create gitrepo...
while read line; do
echo repo $line >> gitolite.conf #仓库名称
echo RW+ = @user >> gitolite.conf #权限配置
done
之后提交即可。
- 服务器端上传源码
拷贝manifest.xml和init.sh到源码目录下,运行./init.sh manifest.xml即可
init.sh文件如下:
#/bin/bash
set -x #追踪代码执行情况
set -e #当脚本执行出现意料之外的情况时,立即退出,避免错误被忽略,导致最终结果不正确
work_dir=$1 #传入的第一个参数
param_xml=$1 #传入的第一个参数
cat $param_xml |while read line;do
if [[ ${line:1:7} = "project" ]] #判断是否为project标签,if与[一定要有空格
then
echo $line | cut -d '"' -f 4 >> pro-name.txt
else
continue
fi
done
pwd=${PWD}
cat pro-name.txt | while read line; do
echo readline
line1=${line%%/*}
if [ -z "$line" ]; then
echo $work_dir not exist !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
if [ $(ls -A $pwd/$line | wc -l) -eq 0 ]; then
echo $work_dir empty !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
workdir=$pwd/$line
echo ==== $workdir
cd $workdir
rm -rf .git
git init . 1>&2
git add . -f 1>&2
git commit -m "Initial commit" 1>&2
//gitolite@192.168.1.104:/android/platform/9820e/根据实际路径来修改
git push --set-upstream gitolite@192.168.1.104:/android/platform/9820e/$line.git master --force
# fi
cd -
done
rm pro-name.txt
安静得等待吧,哈哈!!
网友评论