將安卓代碼導入gerrit

#配置default.xml
創建*** all/manifest.gitt ***倉庫:

ssh -p 29418 [email protected] gerrit create-project --empty-commit all/manifest

clone 到本地:

git clone ssh://[email protected]:29418/all/manifest.git

配置default.xml:

cd manifest
vi default.xml

default內容如下:

<?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>

project標籤中的:

  • name: 唯一的名字標識project,同時也用於生成git倉庫的URL。格式如下:
    remotefetch/{remote_fetch}/{project_name}.git
  • path: 指定git clone出來的代碼存放在本地的子目錄。如果沒有指定,則以name作爲子目錄名。

上傳到遠程倉庫:

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

#創建GIT倉庫
進入Android源碼根目錄,新建腳本文件:

cd src<br>
vi gerrit_create.sh

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

#上傳代碼到遠程倉庫
新建腳本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

#下載代碼導本地

mkdir -p ../des
cd ../des
repo init -u ssh://[email protected]:29418/all/manifest.git
repo sync -f -j8

#提交代碼到遠程倉庫
增加 ‘commit-msg’ hook:

curl -Lo .git/hooks/commit-msg http://review.example.com/tools/hooks/commit-msg

review.example.com 換成自己的IP。

推送一個change:

git add ...
git commit 。。。。
git push ssh://sshusername@hostname:29418/projectname(origin) HEAD:refs/for/branchname

推送一個patch set :

git add ...
git commit --amend
git push ssh://sshusername@hostname:29418/projectname(origin) HEAD:refs/for/branchname
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章