Ubuntu下搭建repo服務器(三): 搭建Android repo服務器


1. 配置repo

1.1  下載git-repo.git(B端)

mkdir -p ~/gitCfg
cd ~/gitCfg
git 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.git
sudo 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.git
REPO_REV = 'master'

其中,

REPO_URL: repo 所調用庫和管理引用倉庫;

REPO_REV: 本文設置分支為master,可用命令git branch查看:

git branch -avv 

 

2. 創建版本根目錄(A端)

2.1 如果已經存在 /home/git/repositories 目錄,就不需要創建,否則:

sudo su git
cd /home/git
mkdir repositories

2.2 初始化manifest倉庫

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

mkdir /home/gitadmin/17435
cd  /home/gitadmin/17435
git clone git@192.168.1.126:17435/manifest.git

3.2 配置default.xml

cd manifest
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/17435
cat default.xml | cut -d '"' -f 4 > repos_17435.txt

在repos_17435.txt中刪除不必要的行,如manifest, Makefile等。

4.2 新建腳本repos_17435.sh

#/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 使用如下命令新建倉庫

cat repos_17435.txt | . repos_17435.sh

4.4 修改倉庫的文件屬性

sudo chmod 777 -R /home/git/repositories/17435

 

5. 上傳代碼到倉庫(B端)

5.1 拷貝Android代碼到目錄,

/home/gitadmin/17435/src

並清除其中git和svn等版本控制信息。

5.2 通過default.xml得到需要上傳的倉庫目錄,並保存在src_17435.txt中

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如下:

#/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 使用如下命令上傳代碼到倉庫:

cat src_17435.txt | . src_17435.sh

 

6. 下載代碼

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM