RKrepo代码服务器搭建

搭建自己的repo代码服务器

架构

一、环境准备

安装openssh-server用于远程登录,git用于管理工程,keychain用于公私钥管理工具

1
sudo apt-get install openssh-server git keychain

gitolite搭建

客户代码服务器端操作(NCU本地mirror代码服务器)

以NCU作为服务器,IP地址192.168.31.12

  1. 创建git账户:
1
2
3

sudo adduser --system --shell /bin/bash --group git
sudo passwd git

以“git”账户登录服务器
确保“/.ssh/authorized_keys”为空或者不存在
拷贝服务器管理员的公钥到“
/git.pub”

  1. 下载gitolite源码
1
git clone https://github.com/sitaramc/gitolite.git
  1. 在git用户目录下创建bin目录
1
mkdir -p ~/bin
  1. 执行下列命令安装gitolite,不同版本安装方法不同,请参考源码中的文档:
1
gitolite/install -to ~/bin
  1. 设置管理员
1
~/bin/gitolite setup -pk gary.pub

客户端操作(开发者电脑)

以Ubuntu18DEV作为客户端,IP地址192.168.31.11

  1. 克隆服务器的gitolite管理仓库:
1
git clone ssh://git@1192.168.31.21/gitolite-admin.git
  1. 添加用户公钥到gitolite目录下
1
cp gary.pub keydir/gary.pub
  1. 添加管理员用户
1
2
3
4
5
6
7
8
9
10
vi conf/gitolite.conf
@admin = git gary
repo gitolite-admin
RW+ = @admin

repo testing
# RW+ = @all
RW+ = gary

include "android_r.conf"

二、repo镜像搭建

客户代码服务器端操作

  1. 用git账号登入服务器
  2. 在根目录下载repo工具
1
git clone ssh://git@www.rockchip.com.cn:2222/repo-release/tools/repo
  1. 在repositories目录下新建RK_Android11_mirror目录,repositories目录在搭建完gitolite后会自动生成。
1
2
cd repositories
mkdir RK_Android11_mirror
  1. 进入 RK_Android11_mirror目录
1
cd RK_Android11_mirror

从RK代码服务器下载RK Android12 SDK镜像

1
~/repo/repo init --repo-url=ssh://git@www.rockchip.com.cn:2222/repo-release/tools/repo.git -u ssh://git@www.rockchip.com.cn:2222/Android_R/manifests.git -m Android11.xml --mirror
1
.repo/repo/repo sync -c
  1. 创建仓库组权限
1
2
.repo/repo/repo list -n > android_r.conf
sed -i 's/^/@android_r = RK_Android11_mirror\/&/g' android_r.conf

客户端操作

账户权限,工程配置

  1. 将客户代码服务器端的android_r.conf拷贝到客户端的·gitolite-admin/conf/·下

  2. 添加组权限

1
2
3
4
5
6
vim conf/android_r.conf
# 文件末尾添加
@usergroup = git gary
repo @android_r
R = @usergroup
RW+ = @admins
1
2
3
vim conf/gitolite.conf
# 文件末尾添加
include "android_r.conf"
  1. 新建自己的manifests仓库
1
2
3
4

vim conf/android_r.conf

@android_s = RK_Android11_mirror/manifests_mg

将以上gitolite-admin仓库的修改内容push到客户代码服务器端上面,然后就就可以下载代码了。

android_r.conf 完整内容

(Toggle content)

gitolite.con完整内容

(Toggle content)

客户端操作

  1. 在客户端下载自己的manifests_mg仓库

  2. 在客户端电脑上下载客户代码服务器的manifests_mg.git仓库

1
git clone ssh://git@192.168.31.21/RK_Android11_mirror/manifests_mg.git
  1. 在客户端下载RK的原始manifests仓库
1
git clone ssh://git@192.168.31.21/RK_Android11_mirror/manifests.git
  1. 提交manifest.xml文件到新建的manifest_mg仓库中

  2. 将原始manifests下面的文件拷贝到的manifests_mg内

1
2
cd manifests_mg
cp -rf manifests/*.xml manifests_mg/
  1. 查看拷贝文件
1
git status
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git show 61323bc496193b06c38e2a63413404f7060f82e0 --stat

Android11.xml | 23 +++
Android11_Express.xml | 6 +
default.xml | 823 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
include/partner_gms_express.xml | 4 +
include/partner_modules_express.xml | 5 +
include/rk3288_repository.xml | 4 +
include/rk3326_repository.xml | 4 +
include/rk3328_repository.xml | 4 +
include/rk3399_repository.xml | 4 +
include/rk3568_box_repository.xml | 4 +
include/rk356x_repository.xml | 4 +
include/rk_checkout_from_aosp.xml | 66 +++++++
include/rk_modules_repository.xml | 82 ++++++++
remote.xml | 8 +
remove_r.xml | 115 +++++++++++
15 files changed, 1156 insertions(+)

  1. 本地提交
1
2
git add -A
git commit -m "init MGSH android11"
  1. push到远程分支
1
git push origin master:master

三、创建自己的代码下载链接

  1. 在根目录下下载repo工具
1
2

git clone ssh://git@www.rockchip.com.cn:2222/repo-release/tools/repo

按以上步骤操作后,自己的代码下载链接如下:

1
2
3
4
mkdir android11
cd android11

~/repo/repo init -u ssh://git@192.168.31.13/RK_Android11_mirror/manifests_mg.git -m Android11.xml

如果需要频繁密码认证,在终端输入如下命令:

其中:192.168.31.13 是本地代码镜像服务器端地址
通过以上步骤就可以完成自己的repo服务器搭建,把代码服务器链接分享给同事,即可协同开发。

四、代码管理

通过以上步骤搭建代码服务器后大部分代码仓库都使用RK默认的分支,如果有仓库需要修改自己的代码,可以参考下面的步骤进行操作。

切换自己的代码分支

  1. 进入需要修改的代码仓库,以kernel目录为例

  2. 切换到一个自己的本地分支

  3. push mt8099 分支到原远程服务器

  4. 进入 /home/gary/Workspace/manifests_mg 目录,修改include/rk_modules_repository.xml里面指定的分支

  5. 提交修改的manifest到远程分支

代码修改提交

按上面步骤切换完分支后就可以在自己分支上提交自己的修改了, 提交直接push到mt8099分支上面。

同步RK的代码

  1. 同步RK代码需要在服务器端进行sync操作
1
2
cd RK_Android11_mirror
.repo/repo/repo sync -c
  1. 客户端合并RK对manifests的修改,下载RK原始manifests仓库
1
git clone ssh://git@192.168.31.13/RK_Android11_mirror/manifests.git

使用对比工具对比manifests(RK原始)和manifests_mg(自己的),将RK修改的差异部分合并到自己的仓库中(主要修改tag,增加删除仓库等)。

对比确认后将修改push到manifests_mg上。
这步也可以确认自己修改了哪些仓库,在下一步中将进行修改仓库的合并。

  1. 有自己切分支的目录需要手动把RK的修改merge到自己的分支上面

以kernel为例:

  • 查看当前指向的远程分支
1
2
3
4
5
6
# gary @ UbuntuDEV in ~/Workspace/android11/kernel on git:mt8099 o [17:39:10] C:130
$ git branch -av

* mt8099 fd0f5140ca95 增加温湿度传感器aht20的驱动
remotes/m/master -> rk29/mt8099
remotes/rk29/mt8099 fd0f5140ca95 增加温湿度传感器aht20的驱动

可以看到当前指向的是:remotes/m/master -> rk29/mt8099

  • 创建本地分支(从自己的远程分支上切)
1
git checkout remotes/m/mt8099 -b local_mt8099_branch
  • 确认当前RK发布的最新TAG
文章目录
  1. 1. 架构
  2. 2. 一、环境准备
    1. 2.1. gitolite搭建
      1. 2.1.1. 客户代码服务器端操作(NCU本地mirror代码服务器)
      2. 2.1.2. 客户端操作(开发者电脑)
  3. 3. 二、repo镜像搭建
    1. 3.1. 客户代码服务器端操作
    2. 3.2. 客户端操作
    3. 3.3. 客户端操作
  4. 4. 三、创建自己的代码下载链接
  5. 5. 四、代码管理
    1. 5.1. 切换自己的代码分支
    2. 5.2. 代码修改提交
    3. 5.3. 同步RK的代码