itopen组织:
1、提供OpenHarmony优雅实用的小工具
2、手把手适配riscv + qemu + linux的三方库移植
3、未来计划riscv + qemu + ohos的三方库移植 + 小程序开发
4、一切拥抱开源,拥抱国产化
一、概述
项目中有需求要将 OpenHarmony 整套代码同步到项目的 gitlab 中进行二次开发,这时怎么办呢?我要将每个仓都进行一次 fork 吗?
不用怕小编又来了,为方便大家操作,特地写了一套优雅的一键自动化同步的脚本工具。如果觉得好用,辛苦动动小手,点个赞
脚本下载请关注:itopen: 一键自动化同步OpenHarmony代码到gitlab
二、环境准备
权限要求
gitlab的用户必须要有maintainer及以上的权限,否则无法上传代码
主机环境
Ubuntu系统
Python版本要求
python3.8以上
python-gitlab模块安装
pip install --upgrade python-gitlab
三、脚本使用介绍
3.1 使用前准备
ssh配置
必须提前将本地ssh的public-key内容添加到gitlab账号下,具体操作不介绍,百度上很多
git配置
执行如下命令,配置好本地git
git config --global user.name "yourname" git config --global user.email "your-email-address" git config --global core.editor vim git config --global credential.helper store git config --global http.sslverify false
本地下载gitlab任意一个仓,如果没有自行创建一个仓,如果Ubunut是首次访问该gitlab会要求输入账号和密码
test@pc220522:~/test$ git clone https://isrc.iscas.ac.cn/gitlab/riscv/polyosmobile/gitlab_code_update.git Cloning into 'gitlab_code_update'... Username for 'https://isrc.iscas.ac.cn': wen_fei # 输入gitlab的用户名 Password for 'https://wen_fei@isrc.iscas.ac.cn': # 输入gitlab的密码 remote: Enumerating objects: 65, done. remote: Counting objects: 100% (65/65), done. remote: Compressing objects: 100% (64/64), done. remote: Total 65 (delta 32), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (65/65), done.
结束后检查
~/.git-credentials
中是否出现了如下的一条记录,如果没有可以手动创建该文件并手动添加进去https://user_name:passwd@ip# 样例 https://zhang_san:123456aA@gitee.com https://zhang_san:123456aA@192.169.1.100
repo首次下载配置
如果Ubuntu是首次使用repo下载代码,则先使用repo配置一下环境,因为有一个测试颜色输出,直接输入y回车即可
test@pc220522:~/test$ mkdir -p ~/test && cd ~/test test@pc220522:~/test$ repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verifyYour identity is: wenfei <wenfei@163.com> If you want to change this, please re-run 'repo init' with --config-nameTesting colorized output (for 'repo diff', 'repo status'):black red green yellow blue magenta cyan whitebold dim ul reverse Enable color display in this user account (y/N)? y # 输入y然后回车repo has been initialized in /home/test/test
3.2 脚本配置
3.2.1 Access Tokens配置
登录到gitlab后点击个人头像选择Edit profile
左侧点击Access Tokens
在右侧的Token name内随便填写一个名字
下面的Expiration date日期自行配置表示创建的Access Tokens有效期时间
Select scopes下面的所有选项全部勾选,表示python-gitlab通过Access Tokens能获取哪些权限
点击下方的Create personal access token按钮创建Access Tokens
将上方的Your new personal access token下面的字符串记录下来,离开该界面后就找不回来了,就得重新申请
点击小眼睛就能看到Access Tokens的值,点击后面的小电池符号就能复制
打开脚本main.py,在最下方的
if __name__ == '__main__':
里添加一个变量保存Access Tokens的值isrc_tokenid = "glpat-zzQNqTiVAnc5zsyMe7D2"
3.2.2 gitlab同步ohos官方代码
变量gitlab_url,该变量必须定义
表示gitlab的链接地址
变量tokenid,该变量必须定义
表示gitlab申请的Access Token值
变量ohos_path,该变量必须定义,且必须是绝对路径
下载好要提交到gitlab的代码路径,必须是绝对路径
变量main_group,该变量必须定义
表示代码同步到指定的group下面,如果没有则创建,但是名称必须是唯一的
变量sub_group,默认为None
表示代码通过到指定main_group下面的某个sub_group内,如果没有则创建,该值默认是None
变量branch,默认是master分支
gitlab仓要创建的branch名称
变量id,默认为None
将代码同步到指定id的group里,同时也会匹配name,只有name和id同时满足则将代码同步到该group下,否则新建group
变量protected_permission,默认为True
gitlab创建的分支是否为保护分支,如果是保护分支,后期删除时每个仓都要手动删除,默认是True
# 参考配置
if __name__ == '__main__':warnings.filterwarnings('ignore')tokenid = "glpat-3S6xygUp46w5xQ7k6Zx9"ohos_branch = "OpenHarmony-v4.1-Release"gitlab_url = "https://10.20.72.31:8088/gitlab.com"main_group = "ohos"sub_group = "dayu800"gitlab_upload_by_code(gitlab_url=gitlab_url,token=tokenid,ohos_path=ohos_path,main_group=main_group,sub_group=sub_group,branch=ohos_branch,protected_permission=True)
3.2.3 脚本执行
配置好上面所有步骤后直接运行main.py即可
./main.py