本文主要是介绍Ubuntu下搭建repo服务器(三): 搭建Android repo服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转自 http://www.cnblogs.com/eastnapoleon/p/5909471.html
1. 配置repo
1.1 下载git-repo.git(B端)
1 2 3 | mkdir -p ~/gitCfg cd ~/gitCfg git clone https: //gerrit.googlesource.com/git-repo git-repo.git |
如果上面的地址无法连接,可以尝试下面的地址:
1 | git clone https: //review.mfunz.com/git-repo git-repo.git |
1.2 配置repo(B端)
a) 将git-repo.git目录下的repo拷贝到 /usr/bin:
1 2 | cd git-repo.git sudo cp repo /usr/bin/repo_gitadmin |
b) 修改 repo
1 | vi /usr/bin/repo_gitadmin |
修改
1 2 | REPO_URL = 'https://gerrit.googlesource.com/git-repo' REPO_REV = 'stable' |
为
1 2 | REPO_URL = /home/gitadmin/gitCfg/git-repo.git REPO_REV = 'master' |
其中,
REPO_URL: repo 所调用库和管理引用仓库;
REPO_REV: 本文设置分支为master,可用命令git branch查看:
1 | git branch -avv |
2. 创建版本根目录(A端)
2.1 如果已经存在 /home/git/repositories 目录,就不需要创建,否则:
1 2 3 | sudo su git cd /home/git mkdir repositories |
2.2 初始化manifest仓库
1 2 | cd repositories git init --bare 17435/manifest.git |
3. 配置default.xml文件(B端)
default.xml是跟Android代码配套的,可参考google Android源码下的default.xml(.repo/manifests/default.xml)进行修改。
3.1 克隆manifest.git
1 2 3 | mkdir /home/gitadmin/17435 cd /home/gitadmin/17435 git clone git@192.168.1.126:17435/manifest.git |
3.2 配置default.xml
1 2 | cd manifest vi default .xml |
本文的配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?xml version= "1.0" encoding= "UTF-8" ?> <manifest> <remote name= "origin" fetch= "git://192.168.1.126" /> < default revision= "master" remote= "origin" sync-j= "4" /> <project path= "build" name= "platform/build" groups= "pdk" > <copyfile src= "core/root.mk" dest= "Makefile" /> </project> <project path= "abi/cpp" name= "platform/abi/cpp" groups= "pdk" /> ... ... </manifest> |
将上面的default.xml 文件push 到仓库:
1 2 3 | git add . git commit -m "Init Commit" git push 或者 git push --all |
4. 建立相关的git 仓库(A端)
4.1 获取需要新建的仓库目录列表
1 2 | cd /home/git/repositories/17435 cat default .xml | cut -d '"' -f 4 > repos_17435.txt |
在repos_17435.txt中删除不必要的行,如manifest, Makefile等。
4.2 新建脚本repos_17435.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #/bin/bash set -x set -e pwd=${PWD} cd /home/git/repositories/17435 while read line; do if [ -z "$line" ]; then echo $work_dir not exist !!!!!!!!!! 1>&2 continue fi git init --bare $line.git echo ==== $line pwd done |
4.3 使用如下命令新建仓库
1 | cat repos_17435.txt | . repos_17435.sh |
4.4 修改仓库的文件属性
1 | sudo chmod 777 -R /home/git/repositories/17435 |
5. 上传代码到仓库(B端)
5.1 拷贝Android代码到目录,
1 | /home/gitadmin/17435/src |
并清除其中git和svn等版本控制信息。
5.2 通过default.xml得到需要上传的仓库目录,并保存在src_17435.txt中
1 2 | cd /home/gitadmin/17435/src cat /home/gitadmin/17435/manifest/ default .xml | cut -d '"' -f 2 > src_17435.txt |
编辑src_17435.txt,清除不必要的行。
5.3 新建脚本src_17435.sh如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #/bin/bash set -x set -e para1= work_dir=$1 pwd=${PWD} while read line; do 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 if [ "$line1" = "device" ]; then git push -- set -upstream git: //192.168.1.126/17435/$line.git master elif [ "$line1" = "vendor" ]; then git push -- set -upstream git: //192.168.1.126/17435/$line.git master else git push -- set -upstream git: //192.168.1.126/17435/platform/$line.git master fi cd - done |
5.4 使用如下命令上传代码到仓库:
1 | cat src_17435.txt | . src_17435.sh |
6. 下载代码
1 2 3 4 | mkdir - p / home / gitadmin / 17435 / des cd / home / gitadmin / 17435 / des repo_gitadmin init - u git: / / 192.168 . 1.126 / 17435 / manifest.git repo_gitadmin sync - f - j4 |
这篇关于Ubuntu下搭建repo服务器(三): 搭建Android repo服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!