如何优雅的一键同步OpenHarmony代码到gitlab?请关注【itopen:gitlab_sync】

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx地址重写rewrite

nginx地址重写rewrite 1.nginx重写rewrite 1.rewrite相关语句 ifrewritesetreturn 2.if语句 应用环境 server,location语法 if () #可以支持&#xff1a; ~ #正则匹配(区分大小写) ~* #正则匹配(不区分大小写) !~ #正则不匹配(区分大小写) !~* #正则不匹配…

使用fetch加载阿里云的在线json 出现403错误

在做地图项目的时候&#xff0c;引用了阿里云的在线JSON地图数据。 问题描述&#xff1a; 但是本地开发使用fetch请求json地址的时候接口却出现了403错误&#xff0c;把地址直接复制到浏览器上却能正常打开。 https://geo.datav.aliyun.com/areas_v3/bound/330000_full.json …

06-操作元素

在前面的文章中重点介绍了一些元素的定位方法&#xff0c;定位到元素后&#xff0c;就需要操作元素了。本篇通过简单案例来介绍app应用中的一些常用操作。 一、案例介绍 下面列表中有四个字典&#xff0c;每个字典中的num1代表第一个操作数&#xff0c;num2代表第二个操作数&a…

力扣 面试题17.04.消失的数字

数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 示例 1&#xff1a; 输入&#xff1a;[3,0,1] 输出&#xff1a;2 示例 2&#xff1a; 输入&#xff1a;[9,6,4,2,3,5,7,0,1] 输出&#x…

GIT----使用技巧之保存现场回退新建分支继续开发

GIT----使用技巧之保存现场回退新建分支继续开发 前言&#xff1a; 故事是这样的&#xff0c;有一个比较复杂的项目使用的是STM32F103VCT6&#xff08;资源flash-256k,RAM-48k&#xff09;,开发到一半发现RAM不够用了&#xff0c;换容量更大的芯片STM32F103VGT6&#xff08;资源…

再谈量化策略失效的问题

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

【qt5生成软件-can卡-上位机-无法加载ControlCAN.dll错误代码(0xc0150002)等相关问题-WIN11系统-尝试解决】

【qt5生成软件-无法加载ControlCAN.dll&错误代码0xc0150002&#xff1a;-等相关问题-WIN11系统-尝试解决-总结整理】 1.前言2.环境说明3.问题说明4.尝试方法总结&#xff08;1&#xff09;更新支持包c库&#xff08;2&#xff09;更新USB相关驱动&#xff08;3&#xff09;…

Sqlite3数据库基本使用

一、基本概念 数据&#xff1a;能够输入计算机并能被计算机程序识别和处理的信息集合 数据库&#xff1a;长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS&#xff1a;位于用户与操作系统之间的一层数据管理软件&#xff0c;用于操纵和管理数据库 二、安装 在线…

一文读懂Java线程池之自定义线程池、设置合适的线程数量、线程池阻塞队列、线程拒绝策略

在上篇我们学习了线程池各个参数的含义,线程池任务处理流程,使用线程池的好处等内容,本篇我们学习如何创建一个适合我们业务的线程池。为此,我们有必要先学习一下如何大概确定我们线程池核心线程数、怎么设置阻塞队列的类型与大小、当线程池没有能力处理任务了该如何使用拒…

JS中操作符是什么

在JavaScript中&#xff0c;操作符是用于执行特定任务&#xff08;如加法、减法、比较等&#xff09;的特殊符号。这些操作符根据其功能可以分为几类&#xff1a; 算术操作符&#xff1a; &#xff1a;加法-&#xff1a;减法或取反*&#xff1a;乘法/&#xff1a;除法%&#xf…

经验分享,16进制与字符串的互相转换网站

分享一个16进制与字符串的互相转换的网站&#xff0c;比较实用。 网址&#xff1a; https://www.bejson.com/convert/ox2str/ 截图&#xff1a;

C++中priority_queue的模拟实现(注释详解)

首先我们要了解什么是 priority_queue &#xff0c;priority_queue 优先队列是一种数据结构&#xff0c;它存储了元素以及它们的优先级。在优先队列中&#xff0c;元素按照其优先级的顺序进行移除&#xff0c;优先级较高的元素首先被移除。优先队列通常使用堆数据结构来实现&am…

Linux内核编程(六)平台总线plantform驱动模型

本文目录 前述&#xff1a;为什么引入平台总线模型一、知识点1. 什么是平台总线模型2. 平台总线模型使用3. 平台总线是如何工作的4. 平台总线模型的优点 二、平台总线设备层1. 常用API&#xff08;1&#xff09; 注册一个平台设备&#xff08;2&#xff09; 注销一个平台设备&a…

最好用的智能猫砂盆存在吗?自用分享智能猫砂盆测评!

在现代都市的忙碌生活中&#xff0c;作为一名上班族&#xff0c;经常因为需要加班或频繁出差而忙碌得不可开交。急匆匆地出门&#xff0c;却忘了给猫咪及时铲屎。但是大家要知道&#xff0c;不及时清理猫砂盆会让猫咪感到不适&#xff0c;还会引发各种健康问题&#xff0c;如泌…

SolidityFoundry 安全审计测试 Delegatecall漏洞2

名称&#xff1a; Delegatecall漏洞2 https://github.com/XuHugo/solidityproject/tree/master/vulnerable-defi 描述&#xff1a; 我们已经了解了delegatecall 一个基础的漏洞——所有者操纵漏洞&#xff0c;这里就不再重复之前的基础知识了&#xff0c;不了解或者遗忘的可…

HTML入门教程:深度解析HTML,开启你的前端技术之旅

一、引言 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是前端开发的基础&#xff0c;它负责构建网页的结构和内容。作为前端技术栈的基石&#xff0c;HTML的掌握程度直接影响到网页的开发效率和用户体验。本教程将带你从零开始&#xff…

C语言从头学23——参数的传值与传址引用

在前面学习函数时&#xff0c;曾学习过函数的参数。函数的参数可以是具体的值&#xff0c;也可以是变量。当函数的参数是变量时&#xff0c;就涉及到参数如何传递到函数中。一般有两种方式&#xff1a;传值引用方式、传址引用方式。 一、传值引用&#xff1a;函数的参数以…

微信小程序学习(四):模板语法、数据绑定、数据监听

1、声明和绑定数据 小程序页面中使用的数据均需要在 Page() 方法的 data 对象中进行声明定义在将数据声明好以后&#xff0c;需要在 WXML 中绑定数据&#xff0c;数据绑定最简单的方式是使用 Mustache 语法&#xff08;双大括号&#xff09;将变量包起来。在 {{ }} 内部可以做…

使用vue自定义指令directive写一个div移动指令

使用vue自定义指令directive写一个div移动指令 1、在src/utils目录创建drag.js文件。在注册指令名称时不需要‘v-’&#xff1b; import Vue from vueVue.directive(drag, {bind(el,binding){// 鼠标是否按下let dragging false;// 鼠标距离当前元素的x轴向距离let offsetX …

(新)Spring Security如何实现登录认证(实战篇)

一、回顾认证流程详解 概念速查: Authentication接口: 它的实现类&#xff0c;表示当前访问系统的用户&#xff0c;封装了用户相关信息。 AuthenticationManager接口&#xff1a;定义了认证Authentication的方法 UserDetailsService接口&#xff1a;加载用户特定数据的核心接…