gitolite – 导入 Android 代码镜像仓库

平时在github上创建仓库、推拉代码、创建 Pull/Merge Request、发起 Issue 。
如果是本地代码 git 只能跟踪的代码信息,无法完成如上操作。本文介绍利用 gitolite 搭建本地git存档信息平台,可以实现类似功能。
本文以搭建鸿蒙代码仓库为例,讲解 gitolite 导入鸿蒙源码镜像仓,以管理代码授权密钥管理授权源码同步。


提示:此文章仅为搭建repo镜像仓,下一篇为 repo代码反向生成 repo镜像仓。

文章目录

  • gitolite -- 导入 Android 代码镜像仓库
  • Gitolite 实现目标
  • 1. 同步 repo 仓库代码
    • 1.1 配置git和安装repo
    • 1.2 安装 git-lfs
    • 1.3 下载harmony代码
  • 2. 部署repo镜像仓到 gitolite
    • 2.1 整理harmony 仓库路径配置信息
    • 2.2 验证用户下载代码
    • 2.3 repo 常见问题分析
  • 总结

Gitolite 实现目标

a) 搭建本地Androi SDK repo 仓库,创建 Pull/Merge Request
b) 增加私有代码仓,不影响代码迭代更新
c) 管控授权密钥,分配用户仓库


1. 同步 repo 仓库代码

如果当前用也有Andoid 代码镜像仓可跳过此步骤;本文以搭建鸿蒙本地代码镜像仓为例。

1.1 配置git和安装repo

git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper storecurl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/bin/repo
chmod a+x /usr/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

提示 安装repo时如提示无权限,可下载至其他目录,并将其配置到环境变量中。
或者使用系统默认安装提示。

$ repoCommand 'repo' not found, but can be installed with:sudo snap install git-repo

1.2 安装 git-lfs

sudo apt-get install git-lfs

1.3 下载harmony代码

使用 repo 下载代码格式如下:
repo init -u ssh://user_name@IP:path/xxx_manifestsgit -b branch_name -m manifest_name.xml --mirror
注意 -b选择分支,比如master或OpenHarmony-3.1-Beta; --mirror 下载镜像模式

mkdir -p ~/repositories/harmony
cd ~/repositories/harmony
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Beta --no-repo-verify --mirror
repo sync -c
repo forall -c 'git lfs pull'
sudo bash build/prebuilts_download.sh

注意:执行 “bash build/prebuilts_download.sh” 会因网络异常终中断,支持断点下载,重新下载即可。须确保预编译的工具都下载完成。

2. 部署repo镜像仓到 gitolite

2.1 整理harmony 仓库路径配置信息

生成harmony repo list

cd ~/repositories/harmony
.repo/repo/repo list -n > harmony.conf
sed -i 's/^/harmony\//g' harmony.conf
sed -i 's/\n/ /g' harmony.conf
sed ':a;N;s/\n/ /;t a' harmony.conf > .harmony.conf; mv .harmony.conf harmony.conf
sed -i 's/^/@harmony = /g' harmony.conf

添加 harmony.conf 到 gitolite

cp harmony.conf ~/gitolite-admin/conf
cd  ~/gitolite-admin
vi conf/gitolite.conf #尾行添加 引用 include harmony.conf, @user 用户组成员,RW+     =   @users 读写授权用户组
include "harmony.conf"
@users = git
repo @harmonyRW+     =   @users
$ git diff
diff --git a/conf/gitolite.conf b/conf/gitolite.conf
index ae1dc08..96517a3 100644
--- a/conf/gitolite.conf
+++ b/conf/gitolite.conf
@@ -1,2 +1,8 @@
repo gitolite-adminRW+     =   git
+
+include "harmony.conf"
+
+@users = git
+repo @harmony
1.    RW+     =   @users

提示 harmony.conf 需一同提交;本地提交完成后,再推送到远程方可生效。

2.2 验证用户下载代码

客户下下载代码
repo init -u ssh://user_name@IP:path/xxx_manifests.git -b master -m manifest.xml
path是相对 repositories中代码仓路径,xxx_manifests.git 为 manifest.git 相对harmony(代码镜像仓)路径

mkdir -p ~/harmony
cd ~/harmony
repo init -u git@127.0.0.1:harmony/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Beta --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
sudo bash build/prebuilts_download.sh

注意 如果gitolite管理用户名非“git”,请替换 git@ 中git为实际用户名;127.0.0.1是回环IP,实际使用中请替换为host IP。

2.3 repo 常见问题分析

ConfigParser.ParsingError: File contains parsing errors: /data/git/.gitosis.conf
  • 配置文件不同步引起,解决方法
cp ~/gitolite-admin/gitosis.conf ~/.gitosis.conf
  • repo init 建仓成功,但是同步是提示无原始仓权限
Please make sure you have the correct access rights
and the repository exits.
git@www.rockchip.com.cn: Persmission denied (publickey).
fltal : Could not read from remote repository.

原因:本地使用 .repo/xxx_manifest.xml 的 ssh路径未修改为本地镜像仓库

vi .repo/manifest.xml<?xml version="1.0" encoding="UTF-8"?>
<manifest>
- <remote fetch="ssh://git@www.rockchip.com.cn/linux/" name="rk"/>
+ <remote fetch="ssh://git@192.168.1.88/rk3288_linux/" name="rk"/>
  • repo 代码同步提示无分支
fatal: Couldn't find remote ref refs/heads/harmony
fatal: The remote end hung up unexpectedly

此情况请核对检出分支名是否正确

repo init -u grrit_URL -b branch(分支名不对) -m manifest.xml
  • repo 初始化代码仓库未开通权限,但是其它代码有设定此用户密钥。
FATAL: R any rk288_linux/rockchip/platform/manifests user DENIED by fallthru
(or you mis-spelled the reponame)
fatal: Could not read from remote repository.

解决方法:开通要同步仓库权限即可


总结

万事皆有因果,刨根问底方知原委。尝试不用git用户搭建gitolite,发现躺坑很多,各种查资料,问题解决特此记述。
希望我的前车之鉴能为你省点时间。

gitolite 搭建Android仓库(二)相关推荐

  1. gitolite 搭建 Android仓库(一)

    gitolite – 搭建授权管理 平时在github上创建仓库.推拉代码.创建 Pull/Merge Request.发起 Issue . 如果是本地代码 git 只能跟踪的代码信息,无法完成如上操 ...

  2. gitolite 搭建Android仓库(三)

    gitolite – 代码仓库管理 前两文 gitolite 代码仓库基本构建完成,使用中会遇到要新建.删除分支仓库.或者增加外部代码仓库,问题来咯.如何在现有基础上构建新代码仓? 如何在现在代码仓中 ...

  3. 「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像

    手把手教你搭建镜像仓库 一.选择镜像仓库 二.使用 Docker 官方仓库 1. 注册账号并登录 2. 创建私有仓库 3. 设置私有秘钥 3. 登录 Docker 仓库 4. 上传镜像到 Docker ...

  4. Android基础新手教程——1.5.2 Git之使用GitHub搭建远程仓库

    Android基础新手教程--1.5.2 Git之使用GitHub搭建远程仓库 标签(空格分隔): Android基础新手教程 本节引言: 在上一节中.我们学习了怎样使用Git.构建我们的本地仓库.轻 ...

  5. 最新jfrog artifactory搭建Android本地仓库教程

    提高gradle编译速度 jfrog artifactory本地仓库搭建 前言 什么是本地仓库 jfrog本地仓库搭建 更改项目仓库地址 解决Received status code 401 from ...

  6. Android Studio(13)--- Git之使用GitHub搭建远程仓库

    Git之使用GitHub搭建远程仓库 在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等:读者肯定不满足与本地是吧,假如是多个人一起来开发一个程 ...

  7. Android 应用开发(30)---Git之使用GitHub搭建远程仓库

    Git之使用GitHub搭建远程仓库 本节引言: 在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等:读者肯定不满足与本地是吧,假如是多个人一起 ...

  8. 使用Gitolite搭建Gitserver

    Gitolite是一款Perl语言开发的Git服务管理工具.通过公钥对用户进行认证.并可以通过配置文件对些操作进行基于分支和路径的精细控制. Gitolite採用的是SSH协议而且使用SSH公钥认证. ...

  9. 使用Gitolite搭建Git服务器

    Git服务的管理工具,主要有如下几种. Gitosis- 轻量级, 开源项目,使用SSH公钥认证,只能做到库级的权限控制.目前项目已经停止开发,不再维护. Gitolite - 轻量级,开源项目,使用 ...

最新文章

  1. SpringBoot学习平台
  2. jquery引入标红叉
  3. count followers
  4. JavaFX UI控件教程(七)之Checkbox
  5. Proximal Algorithms--Accelerated proximal gradient method
  6. UVA - 12096:The SetStack Computer
  7. PXE自动化安装系统工具介绍与部署
  8. 山东建筑大学计算机期末试题,2018年山东建筑大学计算机科学与技术学院900计算机专业综合之计算机操作系统考研基础五套测试题...
  9. Hive 基础及安装
  10. 鸿蒙系统源码获取_Hi3861_HI3516DV编译环境搭建记录
  11. 西瓜播放器xgplayer的简单使用demo
  12. cpc cpa cpm cps 什么意思
  13. win10系统mysql重新配置密码
  14. 【数电笔记】加法器、减法器
  15. Matlab之绘制瀑布图
  16. apache代理503
  17. 互联网老炮儿谈用户,怎一个精字了得
  18. perf + 火焰图用法 小结
  19. 融合柯西变异和反向学习的改进麻雀算法
  20. React路由 简单实现一个导航

热门文章

  1. mac os Spotlight使用技巧:直接在谷歌搜索
  2. stm32h750电路_基于STM32H750的开发板,可用于评估,学习和开发
  3. Generics的方法参数,Set 两集合进行并、交、差
  4. GPA-游戏优化方法论
  5. sumo设置公交车站_SUMO 中的交通信号灯设置
  6. k8s部署kube-prometheus
  7. T460/s 安装Sierra 10.12.2 成功分享……
  8. xxl-job registry fail, registryParam:RegistryParam{regist
  9. jq bind click dblclick
  10. ONE Tech推出可直接在MCU中嵌入和训练AI模型的世界首个边缘AI开发套件