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相关推荐

  1. python批量下载图片

    背景:通过python脚本多线程从<https://wallhaven.cc>壁纸网站批量下载图片,如果下载其它站点请调整html结构. 系统环境:windows10 python版本:3 ...

  2. 新版TCGA数据库学习:批量下载新版TCGA数据

    众所周知,TCGA数据库改版了!!改的比之前更好用了! 对于常规转录组数据,主要是以下几点改变: 下载一次即可获得counts.TPM.FPKM三种类型的表达矩阵,再也不用单独下载了 自带gene s ...

  3. 用批处理整理百度MP3上歌曲排行榜MP3及LRC文件的批量下载链接地址(含图文教程)

    http://bbs.wuyou.com/viewthread.php?tid=192322 本文结构如下: 一.缘起:问题的提出 二.试探:徒劳而返 三.峰回路转:芝麻!开门! 四.万事俱备:xml ...

  4. 批量下载GitHub代码

    批量下载GitHub代码 华为被特朗普政府针对,连GitHub.Apache都瑟瑟发抖. 为了保存GitHub上开源项目,批量下载GitHub代码如下 1.第一个代码,用于获取目标对象所有开源项目网址 ...

  5. android源码下载方法 批量下载 基于windows os

    安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...

  6. 批量下载文献中的参考文献

    批量下载文献中的参考文献 这里写目录标题 批量下载文献中的参考文献 一级目录 二级目录 三级目录 一.下载所有你需要文献的引文题录 二.导入到文献管理软件中 **点击导入文献,上一步已经下载的,如果不 ...

  7. Python批量下载XKCD漫画只需20行命令

    XKCD是一个流行的极客漫画网站,其官网首页有一个 Prev 按钮,让用户导航到前面的漫画.如果你希望复制该网站的内容以在离线的时候阅读,那么可以手动导航至每个页面并保存.但手动下载每张漫画要花较长的 ...

  8. python 批量下载 代码_Python + Selenium +Chrome 批量下载网页代码修改

    Python + Selenium +Chrome 批量下载网页代码修改 主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt 来达到在登陆状态下 批量打开并下载网 ...

  9. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...

最新文章

  1. Mac下SVN的使用
  2. mac下mysql的安装
  3. makex机器人程序_收藏!MakeX 机器人挑战赛2018全球最新赛程和赛事手册公布
  4. 使用bat来运行cygwin,执行脚本(命令)
  5. 地雷会炸到自己吗_回顾自己曾经的往事 ——记双语学习有感
  6. mysql 5.5.41 下载_MySQL 5.5.41/5.6.22 发布下载
  7. android 使用AIDL实现进程间通讯
  8. 考研生物和计算机结合的专业,2020考研:生物医学工程,考研是考原专业还是跨专业考计算机好?...
  9. 河南招教考试计算机专业知识,河南教师招聘考试《计算机网络技术基础》知识点归纳七...
  10. DreamweaverCS6搭建配置php本地站点(图文教程)- 教程篇
  11. 吴恩达《机器学习》第六章:逻辑回归
  12. 一个注册页面的前端模板(html+css+javascript)可自适应屏幕
  13. kafka如何确定分区数
  14. PR曲线与ROC曲线
  15. html5 里面的type=”search“ ,h5版,点击手机键盘上的 ‘搜索”,”前往“等按钮,进行搜索
  16. Excel函数——小数点计算
  17. 关于为什么频宽越大传输越快 、 频率越高传输距离越短
  18. pandas str方法的使用
  19. Python实现蒙塔卡洛思想
  20. 服务器维护会让断牙刷新吗,断牙多少时间刷一次啊?它到底有什么好啊?

热门文章

  1. 用户输入行数和列数,之后在控制台打印出用户输入行数和列数的星星
  2. 基金归因Brinson模型
  3. 大专生学云计算,工作好找吗?
  4. python是一种面向什么的高级语言
  5. Neo4j 操作与 py2neo 用法
  6. 深入JVM 对象优先在Eden分配
  7. 云计算机服务包括哪些,云计算服务有哪些?
  8. ECALL Switch/Ordinary模式
  9. 负载均衡中SNA的ip-can(iscs使用示例i)
  10. 添加163镜像为linux yum源,163镜像yum源配置----centos7