gitolite 搭建Android仓库(二)
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仓库(二)相关推荐
- gitolite 搭建 Android仓库(一)
gitolite – 搭建授权管理 平时在github上创建仓库.推拉代码.创建 Pull/Merge Request.发起 Issue . 如果是本地代码 git 只能跟踪的代码信息,无法完成如上操 ...
- gitolite 搭建Android仓库(三)
gitolite – 代码仓库管理 前两文 gitolite 代码仓库基本构建完成,使用中会遇到要新建.删除分支仓库.或者增加外部代码仓库,问题来咯.如何在现有基础上构建新代码仓? 如何在现在代码仓中 ...
- 「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像
手把手教你搭建镜像仓库 一.选择镜像仓库 二.使用 Docker 官方仓库 1. 注册账号并登录 2. 创建私有仓库 3. 设置私有秘钥 3. 登录 Docker 仓库 4. 上传镜像到 Docker ...
- Android基础新手教程——1.5.2 Git之使用GitHub搭建远程仓库
Android基础新手教程--1.5.2 Git之使用GitHub搭建远程仓库 标签(空格分隔): Android基础新手教程 本节引言: 在上一节中.我们学习了怎样使用Git.构建我们的本地仓库.轻 ...
- 最新jfrog artifactory搭建Android本地仓库教程
提高gradle编译速度 jfrog artifactory本地仓库搭建 前言 什么是本地仓库 jfrog本地仓库搭建 更改项目仓库地址 解决Received status code 401 from ...
- Android Studio(13)--- Git之使用GitHub搭建远程仓库
Git之使用GitHub搭建远程仓库 在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等:读者肯定不满足与本地是吧,假如是多个人一起来开发一个程 ...
- Android 应用开发(30)---Git之使用GitHub搭建远程仓库
Git之使用GitHub搭建远程仓库 本节引言: 在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等:读者肯定不满足与本地是吧,假如是多个人一起 ...
- 使用Gitolite搭建Gitserver
Gitolite是一款Perl语言开发的Git服务管理工具.通过公钥对用户进行认证.并可以通过配置文件对些操作进行基于分支和路径的精细控制. Gitolite採用的是SSH协议而且使用SSH公钥认证. ...
- 使用Gitolite搭建Git服务器
Git服务的管理工具,主要有如下几种. Gitosis- 轻量级, 开源项目,使用SSH公钥认证,只能做到库级的权限控制.目前项目已经停止开发,不再维护. Gitolite - 轻量级,开源项目,使用 ...
最新文章
- SpringBoot学习平台
- jquery引入标红叉
- count followers
- JavaFX UI控件教程(七)之Checkbox
- Proximal Algorithms--Accelerated proximal gradient method
- UVA - 12096:The SetStack Computer
- PXE自动化安装系统工具介绍与部署
- 山东建筑大学计算机期末试题,2018年山东建筑大学计算机科学与技术学院900计算机专业综合之计算机操作系统考研基础五套测试题...
- Hive 基础及安装
- 鸿蒙系统源码获取_Hi3861_HI3516DV编译环境搭建记录
- 西瓜播放器xgplayer的简单使用demo
- cpc cpa cpm cps 什么意思
- win10系统mysql重新配置密码
- 【数电笔记】加法器、减法器
- Matlab之绘制瀑布图
- apache代理503
- 互联网老炮儿谈用户,怎一个精字了得
- perf + 火焰图用法 小结
- 融合柯西变异和反向学习的改进麻雀算法
- React路由 简单实现一个导航
热门文章
- mac os Spotlight使用技巧:直接在谷歌搜索
- stm32h750电路_基于STM32H750的开发板,可用于评估,学习和开发
- Generics的方法参数,Set 两集合进行并、交、差
- GPA-游戏优化方法论
- sumo设置公交车站_SUMO 中的交通信号灯设置
- k8s部署kube-prometheus
- T460/s 安装Sierra 10.12.2 成功分享……
- xxl-job registry fail, registryParam:RegistryParam{regist
- jq bind click dblclick
- ONE Tech推出可直接在MCU中嵌入和训练AI模型的世界首个边缘AI开发套件