背景介绍
在某些情况下展开多人写作开发工作时,由于环境和保密的要求,无法将代码上传至开发环境下的代码仓库(例如多人在现场部署车辆代码),此时需要搭建一个多机的中央仓库,便于代码同步与更新。在寻迹项目中,cookoo作为车载工控机,搭建了中央仓库,开发机可以直接与中央仓库同步代码,主要执行本文的4,5两个步骤的操作。
1、首先在cookoo上创建本地仓库
在目录/home/cookoo/01_tracing_ws/src/下面,分别创建了core_HMI、 core_planner、tune_planning、common、core_localizer、Doc workstation_UI、core_controller、core_perception、messages仓库;创建方法可以将其它源码仓库直接copy过去,也可以直接在本地创建仓库,然后添加源码;
2、在cookoo上创建中央仓库
中央仓库的作用是供多机同步使用的;
2.1 创建中央仓库的文件夹目录/home/cookoo/02_tracing_bare;
2.2 由原始代码库创建中央仓库,一次将所有仓库创建到中央仓库:
git clone --bare /home/cookoo/01_tracing_ws/src/messages/ ./messages-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/common/ ./common-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/core_localizer/ ./core_localizer-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/core_perception/ ./core_perception-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/core_controller/ ./core_controller-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/core_planner/ ./core_planner-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/core_HMI/ ./core_HMI-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/workstation_UI/ ./workstation_UI-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/tune_planning/ ./tune_planning-bare.git
git clone --bare /home/cookoo/01_tracing_ws/src/Doc/ ./Doc-bare.git
3、建立cookoo本地仓库与本地中央仓库同步关系
依次进入本地仓库,将中央仓库作为remote添加至本地:
common仓库
cd /home/cookoo/01_tracing_ws/src/common/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/common-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
messages仓库
cd /home/cookoo/01_tracing_ws/src/messages/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/messages-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
core_localizer仓库
cd /home/cookoo/01_tracing_ws/src/core_localizer/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/core_localizer-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
core_perception仓库
cd /home/cookoo/01_tracing_ws/src/core_perception/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/core_perception-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
core_controller仓库
cd /home/cookoo/01_tracing_ws/src/core_controller/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/core_controller-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
core_planner仓库
cd /home/cookoo/01_tracing_ws/src/core_planner/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/core_planner-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
core_HMI仓库
cd /home/cookoo/01_tracing_ws/src/core_HMI/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/core_HMI-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
workstation_UI仓库
cd /home/cookoo/01_tracing_ws/src/workstation_UI/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/workstation_UI-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
tune_planning仓库
cd /home/cookoo/01_tracing_ws/src/tune_planning/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/tune_planning-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
Doc仓库
cd /home/cookoo/01_tracing_ws/src/Doc/
git remote add cookoo-bare /home/cookoo/02_tracing_bare/Doc-bare.git
git push cookoo-bare master
git branch --set-upstream-to=cookoo-bare/master master
4、建立开发机与cookoo中央仓库的关系
4.1 如果本地没有仓库,则可在代码目录下clone远程仓库,直接建立关系:
新建本地目录~/00_proj/ws_tracing/src/;
在目录下执行如下操作:
git clone ssh://cookoo@192.168.0.200:/home/cookoo/02_tracing_bare/Doc-bare.git ./Doc
这样会在本地新建Doc文件夹,里面创建一个仓库,进入此文件夹后可以看到clone下来的代码,执行git status命令,能看到如下信息:
origin ssh://cookoo@192.168.0.200:/home/cookoo/02_tracing_bare/Doc-bare.git (fetch)
origin ssh://cookoo@192.168.0.200:/home/cookoo/02_tracing_bare/Doc-bare.git (push)
如果本地已经有仓库,则添加远程仓库关系
增加本地与cookoo的远程关系(注意正确填写仓库路径)
git remote add cookoo-bare ssh://cookoo@192.168.0.200:/home/cookoo/02_tracing_bare/common-bare.git
下拉更新远程的代码
git pull cookoo-bare master
上推本地代码
git push cookoo-bare master
5、将cookoo上的源码仓库与中央仓库同步
在将开发机代码推送到cookoo的中央仓库后,需要将cookoo的本地源码仓库与中央仓库同步;
进入源码的仓库目录,执行同步指令:
git pull cookoo-bare master