前言
我们知道Android源码是由很多个小的git组成,这样可以只clone我们需要修改的部分而不用关心其他,但编译的时候需要整个源码,这就需要将所有源码都下载并同步,这时候就需要使用repo来管理,尤其是当我们从芯片厂商拿到平台源码之后,还需要搭建自己的gerrit服务器管理源码。
安装gerrit
安装gerrit服务器,下载gerrit-3.2.1.war或者其他版本
mkdir gerrit cd gerrit java -jar gerrit-3.2.1.war init -d review_site
编辑review_site/etc/gerrit.config(修改服务器ip)
启动/停止gerrit服务
cd /gerrit/review_sites/bin ./gerrit.sh start #启动gerrit服务 ./gerrit.sh stop #停止gerrit服务
在客户端的浏览器中输入服务器网址进入访问:http://192.168.15.128:8080
注册登录后第一个用户就是管理员,添加公钥,方便后续使用
gitweb安装
sudo apt-get install gitweb #/usr/share/gitweb/gitweb.cgi是为gitweb安装目录。 #可通过find /usr - name gitweb.cgi查找 git config --file /绝对路径/gerrit/review_site/etc/gerrit.config gitweb.cgi /usr/share/gitweb/gitweb.cgi git config --file /绝对路径/gerrit/review_site/etc/gerrit.config --unset gitweb.url
安装repo
利用gerrit创建自己的repo库
ssh -p 29418 192.168.15.128 gerrit create-project --branch stable --empty-commit repo;
提交自己的repo仓库
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo cd git-repo git checkout stable //将从google那里clone的repo提交到自己的服务器(在上一个步骤创建的) git push --mirror lost@192.168.15.128:/home/lost/lost/tools/gerrit/review_site/git/repo.git
安装repo
curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo chmod a+x /usr/bin/repo
修改repo的默认url,这样不用每次在repo init的时候指定url
## repo default configuration ## from __future__ import print_function REPO_URL='ssh://192.168.15.128:29418/repo.git' REPO_REV = 'stable'
创建Android源码的所有小git工程仓库
批量生成脚本create-gerrit-projects.sh
#!/bin/bash if [ $# -lt 1 ] ; then echo "usage : ./create-gerrit-projects.sh project.list"; exit 1; fi project_list=$1 for i in `cat ${project_list}`; do echo $i ssh -p 29418 192.168.15.128 gerrit create-project --branch Android-N/master --empty-commit Android-N/$i; done
将所有需要生成的工程,放在同一文件内project.list(一般获取到的源码的./repo/repo/有,可以直接拿来用)
创建所有小git工程仓库
./create-gerrit-projects.sh project.list
创建manifest工程仓库
创建仓库
ssh -p 29418 192.168.15.128 gerrit create-project --branch Android-N/master --empty-commit manifest;
添加default.xml(一般获取到的源码的./repo/repo/manifest有,可以直接拿来用)
git clone -bare ssh://192.168.15.128:29418/manifest -b Android-N/master cd manifest && scp -p -P 29418 lost@192.168.15.128:hooks/commit-msg .git/hooks/ cp ../share/default.xml . git commit -m "init default.xml" git push origin HEAD:refs/for/Android-N/master
同步代码
repo init -u ssh://192.168.15.128:29418/manifest.git -b Android-N/master
repo sync
新建本地mater分支(必须)
repo start master --all
转载请注明出处:http://www.wolfnx.com/2020/06/14/Android-Repo
作者 : wolfnx
邮箱 : wolfnx@outlook.com
邮箱2 : lostnx@gmail.com