搭建自己的repo代码服务器
架构

一、环境准备
安装openssh-server用于远程登录,git用于管理工程,keychain用于公私钥管理工具
1 | sudo apt-get install openssh-server git keychain |
gitolite搭建
客户代码服务器端操作(NCU本地mirror代码服务器)
以NCU作为服务器,IP地址192.168.31.12
- 创建git账户:
1 |
|
以“git”账户登录服务器
确保“/.ssh/authorized_keys”为空或者不存在/git.pub”
拷贝服务器管理员的公钥到“
- 下载gitolite源码
1 | git clone https://github.com/sitaramc/gitolite.git |
- 在git用户目录下创建bin目录
1 | mkdir -p ~/bin |
- 执行下列命令安装gitolite,不同版本安装方法不同,请参考源码中的文档:
1 | gitolite/install -to ~/bin |
- 设置管理员
1 | ~/bin/gitolite setup -pk gary.pub |
客户端操作(开发者电脑)
以Ubuntu18DEV作为客户端,IP地址192.168.31.11
- 克隆服务器的gitolite管理仓库:
1 | git clone ssh://git@1192.168.31.21/gitolite-admin.git |
- 添加用户公钥到gitolite目录下
1 | cp gary.pub keydir/gary.pub |
- 添加管理员用户
1 | vi conf/gitolite.conf |
二、repo镜像搭建
客户代码服务器端操作
- 用git账号登入服务器
- 在根目录下载repo工具
1 | git clone ssh://git@www.rockchip.com.cn:2222/repo-release/tools/repo |
- 在repositories目录下新建RK_Android11_mirror目录,repositories目录在搭建完gitolite后会自动生成。
1 | cd repositories |
- 进入 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 | .repo/repo/repo list -n > android_r.conf |
客户端操作
账户权限,工程配置
将客户代码服务器端的android_r.conf拷贝到客户端的·gitolite-admin/conf/·下
添加组权限
1 | vim conf/android_r.conf |
1 | vim conf/gitolite.conf |
- 新建自己的manifests仓库
1 |
|
将以上gitolite-admin仓库的修改内容push到客户代码服务器端上面,然后就就可以下载代码了。
android_r.conf 完整内容
(Toggle content)
gitolite.con完整内容
(Toggle content)
客户端操作
在客户端下载自己的manifests_mg仓库
在客户端电脑上下载客户代码服务器的manifests_mg.git仓库
1 | git clone ssh://git@192.168.31.21/RK_Android11_mirror/manifests_mg.git |
- 在客户端下载RK的原始manifests仓库
1 | git clone ssh://git@192.168.31.21/RK_Android11_mirror/manifests.git |
提交manifest.xml文件到新建的manifest_mg仓库中
将原始manifests下面的文件拷贝到的manifests_mg内
1 | cd manifests_mg |
- 查看拷贝文件
1 | git status |
1 | git show 61323bc496193b06c38e2a63413404f7060f82e0 --stat |
- 本地提交
1 | git add -A |
- push到远程分支
1 | git push origin master:master |
三、创建自己的代码下载链接
- 在根目录下下载repo工具
1 |
|
按以上步骤操作后,自己的代码下载链接如下:
1 | mkdir android11 |
如果需要频繁密码认证,在终端输入如下命令:
其中:192.168.31.13 是本地代码镜像服务器端地址
通过以上步骤就可以完成自己的repo服务器搭建,把代码服务器链接分享给同事,即可协同开发。
四、代码管理
通过以上步骤搭建代码服务器后大部分代码仓库都使用RK默认的分支,如果有仓库需要修改自己的代码,可以参考下面的步骤进行操作。
切换自己的代码分支
进入需要修改的代码仓库,以kernel目录为例
切换到一个自己的本地分支
push mt8099 分支到原远程服务器
进入 /home/gary/Workspace/manifests_mg 目录,修改include/rk_modules_repository.xml里面指定的分支
提交修改的manifest到远程分支
代码修改提交
按上面步骤切换完分支后就可以在自己分支上提交自己的修改了, 提交直接push到mt8099分支上面。
同步RK的代码
- 同步RK代码需要在服务器端进行sync操作
1 | cd RK_Android11_mirror |
- 客户端合并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上。
这步也可以确认自己修改了哪些仓库,在下一步中将进行修改仓库的合并。
- 有自己切分支的目录需要手动把RK的修改merge到自己的分支上面
以kernel为例:
- 查看当前指向的远程分支
1 | gary @ UbuntuDEV in ~/Workspace/android11/kernel on git:mt8099 o [17:39:10] C:130 |
可以看到当前指向的是:remotes/m/master -> rk29/mt8099
- 创建本地分支(从自己的远程分支上切)
1 | git checkout remotes/m/mt8099 -b local_mt8099_branch |
- 确认当前RK发布的最新TAG