gitlab批量下载projects
gitlab批量下载projects
- 参考文档
- API
- 获取所有组
- 获取所有项目
- 根据项目获取组ID
- 根据组查询项目
- 批量下载projects使用说明
- 批量获取项目名称
- 进入项目中批量提交分支
- 其他方法 python 方式
参考文档
https://docs.gitlab.com/ee/api/projects.html#list-all-projects
API
获取所有组
curl --location --request GET 'https://git.rivtower.com/api/v4/namespaces' \
--header 'PRIVATE-TOKEN: EyQ65KR2i93dxbFPuw1M' \
--header 'Cookie: _gitlab_session=0876d79f9ff5b4a1d62ffd8836a22258'
获取所有项目
curl --location --request GET 'https://git.rivtower.com/api/v4/projects?simple=true' \
--header 'PRIVATE-TOKEN: EyQ65KR2i93dxbFPuw1M' \
--header 'Cookie: _gitlab_session=0876d79f9ff5b4a1d62ffd8836a22258'
根据项目获取组ID
curl --location --request GET 'https://git.rivtower.com/api/v4/projects/350/groups' \
--header 'PRIVATE-TOKEN: EyQ65KR2i93dxbFPuw1M' \
--header 'Cookie: _gitlab_session=0876d79f9ff5b4a1d62ffd8836a22258'
根据组查询项目
curl --location --request GET 'https://git.rivtower.com/api/v4/groups/106' \
--header 'PRIVATE-TOKEN: EyQ65KR2i93dxbFPuw1M'
批量下载projects使用说明
下载某个组下所有的项目(因为还没找到怎么去获取组中项目的size,所以使用预估的方式去试探)
#!/bin/bash
groupID=$1
projectSize=$2
for((i = 0; i < projectSize; i++)); do
echo $i
echo 'https://git.rivtower.com/api/v4/groups/'${groupID}
projectURL=`curl --location --request GET 'https://git.rivtower.com/api/v4/groups/'${groupID} --header 'PRIVATE-TOKEN: EyQ65KR2i93dxbFPuw1M' --header 'Cookie: _gitlab_session=0876d79f9ff5b4a1d62ffd8836a22258' | jq -r '.projects['$i'].http_url_to_repo'`
echo "projectURL: " ${projectURL}
git clone ${projectURL}
done
运行说明:
第一个参数表示groupID
第二个参数表示project size
./getGitlabProjects.sh 106 2
其中groupID 的获取方式通过界面,获取到 Project ID
批量获取项目名称
#!/bin/bash
test -e gitlabProjectName.txt && rm -rf gitlabProjectName.txt
groupID=$1
projectSize=$2
for((i = 0; i < projectSize; i++)); do
echo $i
echo 'https://git.rivtower.com/api/v4/groups/'${groupID}
name=`curl --location --request GET 'https://git.rivtower.com/api/v4/groups/'${groupID} --header 'PRIVATE-TOKEN: EyQ65KR2i93dxbFPuw1M' --header 'Cookie: _gitlab_session=0876d79f9ff5b4a1d62ffd8836a22258' | jq -r '.projects['$i'].name'`
echo ${name} >> gitlabProjectName.txt
done
./getGitlabProjectsName.sh 106 2
进入项目中批量提交分支
#!/bin/bash
cat gitlabProjectName.txt | while read line
do
echo ${line}
cd ${line}
time=`date "+%Y%m%d%H%M%S"`
branchName=sonar_${time}
echo ${branchName}
git checkout -b ${branchName}
git push --set-upstream origin ${branchName}
cd ../
done
./readName.sh
其他方法 python 方式
# -*- coding: UTF-8 -*-# 在Python3.0测试通过
# 需要在gitlab里面新建一个AccessToken填入gitlabTokenimport sys
if sys.version_info < (3, 0):import urllib
else:from urllib.request import urlopenimport json
import subprocess, shlex
import time
import osgitlabAddr = 'git.rivtower.com' #git的地址
gitlabToken = 'T6XJ8eKf75T6bkhzvGVb' #gitlab的token,在gitlab的设置里有生产临时tokenfor index in range(10):url = "http://%s/api/v4/projects?private_token=%s&per_page=100&page=%d&order_by=name" % (gitlabAddr, gitlabToken, index)print(url)if sys.version_info < (3, 0):allProjects = urllib.urlopen(url)else:allProjects = urlopen(url)allProjectsDict = json.loads(allProjects.read().decode(encoding='UTF-8'))if len(allProjectsDict) == 0:breakfor thisProject in allProjectsDict: try:thisProjectURL = thisProject['http_url_to_repo']thisProjectPath = thisProject['path_with_namespace']print(thisProjectURL + ' ' + thisProjectPath)if os.path.exists(thisProjectPath):command = shlex.split('git -C "%s" pull' % (thisProjectPath))else:command = shlex.split('git clone %s %s' % (thisProjectURL, thisProjectPath))resultCode = subprocess.Popen(command)time.sleep(0.5)except Exception as e:print("Error on %s: %s" % (thisProjectURL, e.strerror))
gitlab批量下载projects相关推荐
- python批量下载图片
背景:通过python脚本多线程从<https://wallhaven.cc>壁纸网站批量下载图片,如果下载其它站点请调整html结构. 系统环境:windows10 python版本:3 ...
- 新版TCGA数据库学习:批量下载新版TCGA数据
众所周知,TCGA数据库改版了!!改的比之前更好用了! 对于常规转录组数据,主要是以下几点改变: 下载一次即可获得counts.TPM.FPKM三种类型的表达矩阵,再也不用单独下载了 自带gene s ...
- 用批处理整理百度MP3上歌曲排行榜MP3及LRC文件的批量下载链接地址(含图文教程)
http://bbs.wuyou.com/viewthread.php?tid=192322 本文结构如下: 一.缘起:问题的提出 二.试探:徒劳而返 三.峰回路转:芝麻!开门! 四.万事俱备:xml ...
- 批量下载GitHub代码
批量下载GitHub代码 华为被特朗普政府针对,连GitHub.Apache都瑟瑟发抖. 为了保存GitHub上开源项目,批量下载GitHub代码如下 1.第一个代码,用于获取目标对象所有开源项目网址 ...
- android源码下载方法 批量下载 基于windows os
安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...
- 批量下载文献中的参考文献
批量下载文献中的参考文献 这里写目录标题 批量下载文献中的参考文献 一级目录 二级目录 三级目录 一.下载所有你需要文献的引文题录 二.导入到文献管理软件中 **点击导入文献,上一步已经下载的,如果不 ...
- Python批量下载XKCD漫画只需20行命令
XKCD是一个流行的极客漫画网站,其官网首页有一个 Prev 按钮,让用户导航到前面的漫画.如果你希望复制该网站的内容以在离线的时候阅读,那么可以手动导航至每个页面并保存.但手动下载每张漫画要花较长的 ...
- python 批量下载 代码_Python + Selenium +Chrome 批量下载网页代码修改
Python + Selenium +Chrome 批量下载网页代码修改 主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt 来达到在登陆状态下 批量打开并下载网 ...
- java批量下载文件为zip包
批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...
最新文章
- Mac下SVN的使用
- mac下mysql的安装
- makex机器人程序_收藏!MakeX 机器人挑战赛2018全球最新赛程和赛事手册公布
- 使用bat来运行cygwin,执行脚本(命令)
- 地雷会炸到自己吗_回顾自己曾经的往事 ——记双语学习有感
- mysql 5.5.41 下载_MySQL 5.5.41/5.6.22 发布下载
- android 使用AIDL实现进程间通讯
- 考研生物和计算机结合的专业,2020考研:生物医学工程,考研是考原专业还是跨专业考计算机好?...
- 河南招教考试计算机专业知识,河南教师招聘考试《计算机网络技术基础》知识点归纳七...
- DreamweaverCS6搭建配置php本地站点(图文教程)- 教程篇
- 吴恩达《机器学习》第六章:逻辑回归
- 一个注册页面的前端模板(html+css+javascript)可自适应屏幕
- kafka如何确定分区数
- PR曲线与ROC曲线
- html5 里面的type=”search“ ,h5版,点击手机键盘上的 ‘搜索”,”前往“等按钮,进行搜索
- Excel函数——小数点计算
- 关于为什么频宽越大传输越快 、 频率越高传输距离越短
- pandas str方法的使用
- Python实现蒙塔卡洛思想
- 服务器维护会让断牙刷新吗,断牙多少时间刷一次啊?它到底有什么好啊?