上傳Android代碼到gerrit服務器


1. 配置default.xml

default.xml是跟Android代碼配套的,可參考google Android源碼下的default.xml(.repo/manifests/default.xml)進行修改。

新建倉庫all/manifest.git,

ssh -p 29418 admin@192.168.130.10 gerrit create-project --empty-commit all/manifest

clone到本地,

git clone ssh://admin@192.168.130.10:29418/all/manifest.git

配置default.xml,

cd manifest
vi default.xml

內容如下,

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
 
  <remote  name="origin"
           fetch=".." />
  <default revision="master"
           remote="origin"
           sync-j="8" />
 
  <project path="build" name="platform/build" groups="pdk" >
    <copyfile src="core/root.mk" dest="Makefile" />
  </project>
 
  ... ...
 
</manifest>

上傳到遠程倉庫,

git add .
git comm -am "add default.xml"
git push origin master

 

2. 創建git倉庫

進入Android代碼目錄,新建腳本文件,

cd src
vi gerrit_create.sh

內容如下:

LOCAL_PATH=`pwd`
MANIFEST_XML_FILE=$LOCAL_PATH/../manifest/default.xml

USER_NAME="admin"
SERVER_IP="192.168.130.10"
SERVER_PORT="29418"

OUTPUT_PROJECT_LIST_FILE_NAME=$LOCAL_PATH/project_list_name
OUTPUT_PROJECT_LIST_FILE_PATH=$LOCAL_PATH/project_list_path

function getNameAndPath()
{
    echo > $OUTPUT_PROJECT_LIST_FILE_NAME
    echo > $OUTPUT_PROJECT_LIST_FILE_PATH

    while read LINE
    do
        command_line=`echo $LINE | grep "<project"`
        if [ "$command_line" ]
        then
            #echo $LINE

            reposity_name_sec=${LINE#*name=\"}
            reposity_path_sec=${LINE#*path=\"}

            if [ "$reposity_name_sec" ] && [ "$reposity_path_sec" ]
            then
                reposity_name=${reposity_name_sec%%\"*}
                reposity_path=${reposity_path_sec%%\"*}
                echo "$reposity_name" >> $OUTPUT_PROJECT_LIST_FILE_NAME
                echo "$reposity_path" >> $OUTPUT_PROJECT_LIST_FILE_PATH
            fi
        fi
    done  < $MANIFEST_XML_FILE
}

function creatEmptyGerritProject()
{
    for i in `cat $OUTPUT_PROJECT_LIST_FILE_NAME`;
    do
        echo $i
        echo "ssh -p $SERVER_PORT $USER_NAME@$SERVER_IP gerrit create-project --empty-commit $i"
        ssh -p $SERVER_PORT $USER_NAME@$SERVER_IP gerrit create-project --empty-commit $i
    done
}

function removeFiles()
{
	rm -rf $LOCAL_PATH/project_list_name
	rm -rf $LOCAL_PATH/project_list_path
}

getNameAndPath
creatEmptyGerritProject
removeFiles

運行腳本,創建git倉庫,

. gerrit_create.sh

 

3. 上傳代碼到遠程倉庫

新建腳本gerrit_push.sh

vi gerrit_push.sh

內容如下,

LOCAL_PATH=`pwd`
MANIFEST_XML_FILE=$LOCAL_PATH/../manifest/default.xml

USER_NAME="admin"
SERVER_IP="192.168.130.10"
SERVER_PORT="29418"

function pushLocalToRemote()
{

    while read LINE
    do
        cd $LOCAL_PATH
        command_line=`echo $LINE | grep "<project"`
        if [ "$command_line" ] 
        then
            #echo $LINE
            reposity_name_sec=${LINE#*name=\"}
            reposity_path_sec=${LINE#*path=\"}

            if [ "$reposity_name_sec" ] && [ "$reposity_path_sec" ]
            then
                reposity_name=${reposity_name_sec%%\"*}
                reposity_path=${reposity_path_sec%%\"*}

                src_path=$LOCAL_PATH/$reposity_path

                if [ -d "$src_path" ]; then
                    cd $src_path
                    echo `pwd`

                    rm -rf .git
                    rm -rf .gitignore
                    git init
                    git remote add origin ssh://$USER_NAME@$SERVER_IP:$SERVER_PORT/$reposity_name.git
                    git pull origin master
                    git add -A .
                    git commit -am "init commit"
                    git push origin master
                    cd -
                fi
            fi
        fi

    done  < $MANIFEST_XML_FILE
}

pushLocalToRemote

運行腳本,push代碼,

. gerrit_push.sh

 

4. 下載代碼

mkdir -p ../des
cd ../des
repo init -u ssh://admin@192.168.130.10:29418/all/manifest.git
repo sync -f -j8

 


免責聲明!

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



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