python-gitlab API基本操作以及(下载指定文件或文件夹)

2023-05-16

一、使用python对gitlab进行自动化操作

1.python-gitlab模块官网文档

2.gitlab官网文档

二、常用使用功能

//1.登录gitlab
def login():
    gl = gitlab.Gitlab('https://git.4399.com', private_token='dfmkbarHTTSLSGDsdqwt4')
    return gl
gl = login()

//2.获取指定项目(项目ID)
project = gl.projects.get(4920)

//3.查看此项目所有分支
branches = project.branches.list()
print branches

//4.查找分支,存在则删除
try:
    branch = project.branches.get('ReplaceWeb')
    project.branches.delete('ReplaceWeb')
    print u"删除旧分支成功"
except gitlab.exceptions.GitlabGetError as error:
    print(error)
    print u"旧分支不存在"


//5.创建分支
try:
    branch = project.branches.create({'branch': 'ReplaceWeb', 'ref': 'develop'})
    print u"创建新分支ReplaceWeb成功"
except gitlab.exceptions.GitlabCreateError as error:
    print(error)

//6.上传多文件,可以多次执行create、update、delete、move、chmod等操作
//需要注意的是,对于二进制文件,压缩包文件需要使用base64进行编码
data = {
    'branch': 'ReplaceWeb',
    'commit_message': 'update web file',
    'actions': [
        {
            'action': 'update',
            'file_path': '/assist/src/main/AppConfig.h',
            'content': open('D:/WebContent/AppConfig.h').read(),
        },
        {
            'action': 'update',
            'file_path': '/bin/web_content/assist_web.zip',
            'encoding': 'base64',
            'content': base64.b64encode(open('D:/WebContent/assist_web.zip', "rb").read()),
        }
    ]
}
project.commits.create(data)


//7.请求合并操作
mr = project.mergerequests.create({'source_branch': 'ReplaceWeb',
                                       'target_branch': 'develop',
                                       'title': 'update oa_web pack'})

三、python-gitlab:下载文件或者指定文件夹

1.下载文件

//需要先创建本地目录,先删除再创建
def emptyFolder(pathName):
    if 1 == os.path.exists(pathName):
        shutil.rmtree(pathName)
allPath = 'D:/WebContent/'
emptyFolder(allPath)
os.makedirs(allPath)

//下载gitlab文件到本地,先打开本地文件,file_path是远程Git路径,ref是分支
with open('D:/WebContent/AppConfig.h', 'wb') as f:
    project.files.raw(file_path='/src/main/AppConfig.h', ref='ReplaceWeb', streamed=True, action=f.write)
    print u"下载AppConfig.h成功"

2.下载文件夹

//需要先创建本地目录,先删除再创建
def emptyFolder(pathName):
    if 1 == os.path.exists(pathName):
        shutil.rmtree(pathName)
allPath = 'D:/WebContent/'
emptyFolder(allPath)
os.makedirs(allPath)

//获取远程文件树(path是远程Git文件夹目录,ref是分支名,递归获取)
fileList = project.repository_tree(path='bin/tools/', ref='master', recursive=True, all=True)

//本地创建文件树中的目录
for i in fileList:
    if (i['type'] == "tree"):
        dirs = 'D:/WebContent/%s' % i['path']
        if not os.path.exists(dirs):
            os.makedirs(dirs)

print u"...下载文件中..."
//下载tools文件夹
for i in fileList:
    if (i['type'] == "blob"):
	    with open('D:/WebContent/%s' % i['path'], 'wb') as f:
		    project.files.raw(file_path=i['path'], ref='master', streamed=True, action=f.write)
		    print u"%s" %i['path']
print u"...文件下载完毕..."
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python-gitlab API基本操作以及(下载指定文件或文件夹) 的相关文章

随机推荐

  • 嵌入式Linux驱动笔记(二十一)------GPIO和Pinctrl子系统的分析和思考

    你好 xff01 这里是风筝的博客 xff0c 欢迎和我一起交流 好久都没有写东西了 xff0c 最近来广州某公司实习 xff0c 顺便记录下吧 吐槽下 xff0c 因为是二级保密单位 xff0c 公司里电脑不给联网 xff0c 贼难受 不
  • Feign和RestTemplate 的使用比较

    Feign和RestTemplate 的使用比较 一 RestTemplate 基于RestTemplate 进行远程服务调用 但是在调用之前基于loadBalancerClient对象去从nacos注册中心基于服务名查找服务实例 可能有多
  • ubuntu16.04 配置远程桌面

    sudo apt get y install xfce4 xrdp vnc4serverdpkg L xrdp 在显示的结果中有如下一行即可 xff1a etc xrdp xrdp ini配置xfce4桌面会话文件 软件安装完毕后 xff0
  • C++中构造函数的超详细讲解

    C 43 43 在C语言的基础上增加了类和对象的概念 xff0c 官方对类和对象的解释是 xff1a 对象是类的实例化 xff0c 类是对象的抽象 xff0c 其实这个概念也很抽象 xff0c 举一个简单的例子来说明这个关系 xff1a 在
  • 计算机网络实验三 路由协议的配置

    一 实验目的 1 掌握静态路由协议的配置 2 掌握RIP协议特点和其配置方式 xff1b 3 掌握OSPF协议的特点和其配置方式 xff1b 二 实验要求 1 掌握静态路由协议的配置 1 配置一个互联网络 xff0c 可如下图所示 xff1
  • C语言实现有限状态机

    以下是转载内容 xff1a 传说中的分隔符 来源 1 xff1a http www cnblogs com swingboat archive 2005 07 27 201488 html 转载 1 有限状态机的实现 lt script t
  • linux内核-中断的响应和服务

    搞清了i386 CPU的中断机制和内核中有关的初始化以后 xff0c 我们就可以从中断请求的发生到CPU的响应 xff0c 再到中断服务程序的调用与返回 xff0c 沿着CPU所经历的路线走一遍 这样 xff0c 既可以弄清和理解linux
  • Ubuntu的Java编辑器eclipse打不开闪退的解决方法

    Linux Ubuntu的eclipse安装上了 xff0c 但是打不开 xff0c 闪退的解决方法 xff1a 首先确保你已经在安装了eclipse 如果你已经安装了eclipse xff0c 你就可以向下进行 xff1a 你点击ecli
  • 马走棋盘之最短路径步数——C

    描述问题 输入测试例子数T xff0c 每个例子输入棋盘大小m行n列 1 lt 61 m n lt 61 500 再输入a b c d表示 a b gt c d xff0c 1 lt 61 a c lt 61 m 且 1 lt 61 b d
  • Go语言自学系列 | golang标准库os模块 - File文件写操作

    视频来源 xff1a B站 golang入门到项目实战 2021最新Go语言教程 xff0c 没有废话 xff0c 纯干货 xff01 持续更新中 一边学习一边整理老师的课程内容及试验笔记 xff0c 并与大家分享 xff0c 侵权即删 x
  • CentOS 下中文文件名显示乱码

    在windows上使用ftp上传文件到linux上 xff0c 中文名称在Linux系统中显示为乱码 虽然将Linux的env设置了LANG 61 en US UTF 8 xff0c 并且本地的Shell客户端编码也设置成UTF 8 xff
  • 树莓派centos 7.x版本 编译安装 PHP7.2

    下载安装包 树莓派上yum里没有的软件只能编译安装 wget http cn2 php net distributions php 7 2 0 tar gz tar zxvf php 7 2 0 tar gz cd php 7 2 0 安装
  • docker 利用docker拉取Nvidia/cuda官方镜像,部署深度学习环境

    利用docker拉取Nvidia cuda官方镜像 xff0c 部署深度学习环境 1 拉取Nvidia cuda官方镜像2 生成容器3 在容器内安装深度学习环境 看完这篇博文 xff0c 可以查看我总结的另一篇博文教程 xff1a 利用do
  • 树莓派安装anaconda

    树莓派安装anaconda 1 查看版本 xff1a 2 下载安装包 xff1a 3 安装 xff1a 4 查看 5 换源 xff1a 6 创建虚拟环境 7 解决部分异常问题 8 卸载 xff1a 1 查看版本 xff1a uname sp
  • QT 项目 实现基于TCP的文件服务器/客户端,支持上传和下载

    Demo xff1a 下载地址 https download csdn net download guorong520 12408371 没有csdn积分的小伙伴可以留言你的QQ邮箱 xff0c 我会发送Demo xff0c 相互交流学习
  • QT 常用setAttribute 、setWindowFlags

    文章目录 一 主界面1 窗体属性2 窗体标志 二 注意1 最大化按钮失效置灰的问题 一 主界面 1 窗体属性 span class token comment 设置为模态框 如果再设置无边框窗口 xff0c 那么模态会失效 xff0c 不会
  • QT 获取秒级、毫秒级时间戳

    一 时间戳 是指格林威治时间1970年01月01日00时00分00秒 北京时间1970年01月01日08时00分00秒 起至现在的总秒数 它的提出主要是为用户提供一份电子证据 xff0c 以证明用户的某些数据的产生时间 二 获取时间戳 秒级
  • Jenkins 执行Python脚本以及Bat(批处理)脚本

    文章目录 一 新建任务二 创建任务三 配置四 勾选参数化构建过程1 下拉框参数2 字符参数3 布尔参数4 git分支选项 五 执行脚本命令六 python文件存放路径七 配置以及构建效果图1 输入构建参数 xff0c 选中勾选框 xff0c
  • 为什么Ubuntu终端输入su会报错鉴定失败?

    Ubuntu刚刚安装上 xff0c 要输入一堆类似sudo apt install xxxxxx的命令进行装各种必须的软件 xff0c 老是打sudo很烦 xff0c 就su一下 xff0c 然后就能省略掉sudo xff0c 直接apt
  • python-gitlab API基本操作以及(下载指定文件或文件夹)

    一 使用python对gitlab进行自动化操作 1 python gitlab模块官网文档 2 gitlab官网文档 二 常用使用功能 span class token comment 1 登录gitlab span def span c