搭建自己的repo代码服务器(一)

本文档详述了如何搭建个人的repo代码服务器,包括安装openssh-server、git和keychain,部署gitolite,以及客户端操作。还介绍了repo镜像的搭建过程,涉及到RK_Android11的SDK镜像下载,并提供了代码管理、切换分支和提交的指导。
摘要由CSDN通过智能技术生成

目录

一、环境

二、gitolite搭建

1.服务器端操作

2.客户端操作

总结


一、环境

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

sudo apt-get install openssh-server git keychain

二、gitolite搭建

1.服务器端操作

        (以服务器地址:10.10.10.206为例进行说明)

         1. 创建git账户:

sudo adduser --system --shell /bin/bash --group git 
sudo passwd git
   2. 以“git”账户登录服务器
   3. 确保“~/.ssh/authorized_keys”为空或者不存在
   4. 拷贝服务器管理员的公钥到“~/YourName.pub” 
   5. 下载gitolite源码
git clone https://github.com/sitaramc/gitolite.git
6. 在git用户目录下创建bin目录
mkdir -p ~/bin
7. 执行下列命令安装gitolite,不同版本安装方法不同,请参考源码中的文档:
gitolite/install -to ~/bin8. 设置管理员
~/bin/gitolite setup -pk YourName.pub

2.客户端操作

1. 克隆服务器的gitolite管理仓库:

git clone ssh://git@10.10.10.206/gitolite-admin.git

2. 添加用户公钥到gitolite目录下

cp username.pub keydir/username.pub

3. 添加管理员用户

vi conf/gitolite.conf

@admin = admin1 admin2 admin3

repo gitolite-admin

RW+ = @admin

3.repo镜像搭建

服务器端操作

1. 用git账号登入服务器
2. 在根目录下载repo工具

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


3. 新建RK_Android11_mirror目录

mkdir RK_Android11_mirror

4. 进入 RK_Android11_mirror目录

cd RK_Android11_mirror

5. 下载RK Android11 SDK镜像

~/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

6. 创建仓库组权限

.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. 添加组权限

vi conf/android_r.conf

@usergroup = user1 user2 user3

repo @android_r

R = @usergroup

RW+ = @admin

vi conf/gitolite.conf

include "android_r.conf"

5. 新建自己的manifests仓库

vi conf/android_r.conf

@android_r = Android_R/manifests_xxx

客户端操作

1. 在客户端下载manifests_xxx仓库
在其他客户端电脑上下载manifests_xxx.git仓库

git clone ssh://git@10.10.10.206/Android_R/manifests_xxx.git

2. 在客户端下载原始manifests仓库

git clone ssh://git@10.10.10.206/Android_R/manifests.git

3. 提交manifest.xml文件到新建的manifest_xxx仓库中
将原始manifests下面的文件拷贝到的manifests_xxx内

cd manifests_xxx

cp -rf manifests/*.xml manifests_xxx/

查看拷贝文件

git status

Android11.xml

Android11_Express.xml

default.xml

include/partner_gms_express.xml

include/partner_modules_express.xml

include/rk3288_repository.xml

include/rk3326_repository.xml

include/rk3399_repository.xml

include/rk356x_repository.xml

include/rk_checkout_from_aosp.xml

include/rk_modules_repository.xml

remote.xml

remove_r.xml

本地提交

git add -A

git commit -m "init xxx"

 push到远程分支

git push origin master:master

7. 创建自己的代码下载链接
在根目录下下载repo工具

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

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

mkdir Android11

cd Android11

~/repo/repo init -u ssh://git@10.10.10.206/Android_R/manifests_xxx.git -m Android11.xml

其中:
//10.10.10.206 是你的服务器端地址
通过以上步骤就可以完成自己的repo服务器搭建了,可以把自己的代码服务器链接分享给同事们一起工
作了。

代码管理

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


切换自己的代码分支


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

cd kernel

2. 切换一个本地分支

git checkout remotes/m/master -b xxx_branch

3. push xxx_branch分支到远程服务器

git push rk29 xxx_branch:xxx_branch

其中 rk29 是remote 可以直接tab键自动补全
4. 进入.repo/manifests目录修改manifest里面指定的分支
进入.repo/manifests目录通过grep kernel可以找到kernel仓库对应的manifest的位置

cd .repo/manifests

--- a/include/rk_modules_repository.xml

+++ b/include/rk_modules_repository.xml

@@ -10,7 +10,7 @@

<project path="hardware/rockchip/libgraphicpolicy"

name="rk/hardware/rk29/libgraphicpolicy" remote="rk

revision="refs/tags/android-11.0-mid-rkr8" />

<project path="hardware/rockchip/libhwjpeg"

name="rk/hardware/rk29/libhwjpeg" remote="rk" revision="refs/tags/android-11.0-mid-rkr8"/> <project path="u-boot" name="rk/u-boot" remote="rk"

revision="refs/tags/android-11.0-mid-rkr8"/>

- <project path="kernel" name="rk/kernel" remote="rk29" revision="refs/tags/android-11.0-mid-rkr8"/>

+ <project path="kernel" name="rk/kernel" remote="rk29" revision="xxx_branch"/>

<project path="bootable/recovery/rkupdate" name="platform/bootable/recovery/rk_update" remote="rk"

revision="refs/tags/android-11.0-mid-rkr8"/>

<project path="bootable/recovery/rkutility" name="platform/bootable/recovery/rk_utility" remote="rk"revision="refs/tags/android-11.0-mid-rkr8"/>

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

git add include/rk_modules_repository.xml

git commit -m "change kernel branch on xxx_branch"

git push origin default:master

提交manifests仓库后,其他同事就可以同步到你们自己的分支的kernel代码了。


代码修改提交


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

同步RK的代码

1. 同步RK代码需要在服务器端进行sync操作

cd RK_Android11_mirror

.repo/repo/repo sync -c


2. 客户端合并RK对manifests的修改
下载RK原始manifests仓库

git clone //10.10.10.206/wlq/test/manifests.git

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

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

3. 有自己切分支的目录需要手动把RK的修改merge到自己的分支上面
以kernel为例:

查看当前指向的远程分支

wlq@wlq:~/home1/test2/kernel$ git branch -av

* android-11.0-mid-rkr7 0bde59fad73a ARM: configs: rockchip_defconfig enable ION_CMA_HEAP

xxx_branch 0bde59fad73a ARM: configs: rockchip_defconfig enable ION_CMA_HEAP

remotes/m/master -> rk29/xxx_branch

remotes/rk29/xxx_branch 0bde59fad73a ARM: configs: rockchip_defconfig enable ION_CMA_HEAP

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

创建本地分支(从自己的远程分支上切)

git checkout remotes/m/xxx_branch -b local_xxx_branch

确认当前RK发布的最新TAG        

wlq@wlq:~/home1/test2/kernel$ git tag | grep rkr

android-10.0-mid-rkr1

android-10.0-mid-rkr10

android-10.0-mid-rkr11

android-10.0-mid-rkr13

android-10.0-mid-rkr2

android-10.0-mid-rkr3

android-10.0-mid-rkr4

android-10.0-mid-rkr5

android-10.0-mid-rkr6

android-10.0-mid-rkr7

android-10.0-mid-rkr8

android-10.0-mid-rkr9

android-11.0-ebook-rkr1

android-11.0-ebook-rkr2

android-11.0-ebook-rkr3

android-11.0-ebook-rkr4

android-11.0-ebook-rkr5

android-11.0-ebook-rkr6

android-11.0-mid-rkr1

android-11.0-mid-rkr2

android-11.0-mid-rkr3

android-11.0-mid-rkr4

android-11.0-mid-rkr4.1

android-11.0-mid-rkr5

android-11.0-mid-rkr6

android-11.0-mid-rkr7

android-11.0-mid-rkr7-prev

android-11.0-mid-rkr8

可以看到当前最新的Android11的tag是 android-11.0-mid-rkr8
合并 android-11.0-mid-rkr8 到本地分支

git merge android-11.0-mid-rkr8

查看是否有冲突,如果有冲突先解决冲突,没有冲突在执行下一步
 push合并完的代码到远程分支

git push rk29 local_xxx_branch:xxx_branch

其他切分的目录都按这个方式进行合并提交即可


总结

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值