標籤:
1. 配置repo
1.1 下載git-repo.git(B端)
mkdir -p ~/gitCfgcd ~/gitCfggit clone https://gerrit.googlesource.com/git-repo git-repo.git
如果上面的地址無法串連,可以嘗試下面的地址:
git clone https://review.mfunz.com/git-repo git-repo.git
1.2 配置repo(B端)
a) 將git-repo.git目錄下的repo拷貝到 /usr/bin:
cd git-repo.gitsudo cp repo /usr/bin/repo_gitadmin
b) 修改 repo
vi /usr/bin/repo_gitadmin
修改
REPO_URL = ‘https://gerrit.googlesource.com/git-repo‘REPO_REV = ‘stable‘
為
REPO_URL = /home/gitadmin/gitCfg/git-repo.gitREPO_REV = ‘master‘
其中,
REPO_URL: repo 所調用庫和管理引用倉庫;
REPO_REV: 本文設定分支為master,可進入git-repo.git用命令git branch查看:
cd git-repo.gitgit branch -avv
2. 建立版本根目錄(A端)
2.1 如果已經存在 /home/git/repositories 目錄,就不需要建立,否則:
sudo su gitcd /home/gitmkdir repositories
2.2 初始化manifest倉庫
cd repositoriesgit init --bare 17435/manifest.git
3. 配置default.xml檔案(B端)
default.xml是跟Android代碼配套的,可參考google Android源碼下的repo(.repo/manifests/default.xml)進行修改。
3.1 複製manifest.git
mkdir/home/gitadmin/17435cd /home/gitadmin/17435git clone [email protected]:17435/manifest.gitcd manifest.git
3.2 配置default.xml
vi default.xml
本文的配置如下:
<?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 到倉庫:
git add .git commit -m "Init Commit"git push 或者 git push --all
4. 建立相關的git 倉庫(A端)
4.1 擷取需要建立的倉庫目錄列表
cd /home/git/repositories/17435cat default.xml | cut -d ‘"‘ -f 4 > repos_17435.txt
在repos_17435.txt中刪除不必要的行,如manifest, Makefile等。
4.2 建立指令碼repos_17435.sh
#/bin/bashset -xset -epwd=${PWD}cd /home/git/repositories/17435while read line; do if [ -z "$line" ]; then echo $work_dir not exist !!!!!!!!!! 1>&2 continue fi git init --bare $line.git echo ==== $line pwddone
4.3 使用如下命令建立倉庫
cat repos_17435.txt | . repos_17435.sh
5. 上傳代碼到倉庫(B端)
5.1 拷貝Android代碼到目錄,
/home/gitadmin/17435/src
並清除其中git和svn等版本控制資訊。
5.2 通過default.xml得到需要上傳的倉庫目錄儲存在src_17435.txt中
cd /home/gitadmin/17435/srccat /home/gitadmin/17435/manifest.git/default.xml | cut -d ‘"‘ -f 2 > src_17435.txt
編輯src_17435.txt,清除不必要的行。
5.3 建立指令碼src_17435.sh如下:
#/bin/bashset -xset -epara1=work_dir=$1pwd=${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 使用如下命令上傳代碼到倉庫:
cat src_17435.txt | . src_17435.sh
6. 下載代碼
mkdir -p /home/gitadmin/17435/descd /home/gitadmin/17435/desrepo_gitadmin init -u git://192.168.1.126/17435/manifest.git
repo_gitadmin sync -f -j4
Ubuntu下搭建repo伺服器(三): 搭建Android repo伺服器