gitLab批量下载有权限的项目
前言
-
参考 https://www.jianshu.com/p/b3d4e5cee835
-
适用于git私服拉取个人所涉及权限的代码,方便有多个项目权限的人快速拉取自己所有权限的代码。
-
默认生成目录结构与gitlab一致
步骤一:获取权限你的代码权限文件d
从gitlab私服生成所有你有权限的代码信息
请求地址:
http://gitlab.dstcar.com//api/v4/projects?simple=true&per_page=100&page=1
postman方式获取
cookies自己登录gitlab生成
gitlab限制每次只能拉100条数据,超过100条自己分页处理
获取cookies
添加cookies
请求成功后保存json文件到指定地方(步骤二会用到) eg:放到D:\\gitlab_projects.json
步骤二:执行java代码
以下根据个人所需修改对应代码,一般只需要修改下载fileName和srcDir参数
-
备注:有现成springboot项目你直接生成一个单元测试文件执行执行main方法,没有的话自己新建一个项目执行
-
import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.Charset;import org.springframework.util.StreamUtils;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;/****/ public class TestGitlabData {public static void main(String[] args) {//gittlab获取的权限文件String fileName = "D:\\gitlab_projects.json";String jsonStr = readJsonFile(fileName);JSONArray projects = JSON.parseArray(jsonStr);//指定需要下载的分支String branchName = "master";//尝试切换的分支String tryCheckOutBranchName = "develop";//指定下载后输出的地址String srcDir = "D:\\code";File execDir = new File(srcDir);if (!execDir.exists()) {boolean result = execDir.mkdirs();System.out.println("execDir.mkdirs = " + result);}int projectNum = 0;for (int i = 0; i < projects.size(); i++) {JSONObject prj = projects.getJSONObject(i);//项目地址 // String httpUrlToRepo = prj.getString("http_url_to_repo");String httpUrlToRepo = prj.getString("ssh_url_to_repo");//项目路径 // String pathWithNamespace = prj.getString("path_with_namespace");String pathWithNamespace = prj.getString("name_with_namespace").replaceAll(" ", "");System.out.println("拉取projectNum = " + ++projectNum);gitClone(branchName, httpUrlToRepo, pathWithNamespace, execDir);File tryDir = new File(srcDir + "\\" + pathWithNamespace);if (tryDir.exists()) {gitTryCheckOutBranch(tryCheckOutBranchName, tryDir);}}}private static void gitTryCheckOutBranch(String tryCheckOutBranchName, File execDir) {String command = String.format("git checkout %s ", tryCheckOutBranchName);try {System.out.println("===========start==================");System.out.println("start exec command : " + command);//执行命令行Process exec = Runtime.getRuntime().exec(command, null, execDir);exec.waitFor();String successResult = StreamUtils.copyToString(exec.getInputStream(), Charset.forName("UTF-8"));String errorResult = StreamUtils.copyToString(exec.getErrorStream(), Charset.forName("UTF-8"));System.out.println("successResult: " + successResult);System.out.println("errorResult: " + errorResult);System.out.println("============end================");} catch (Exception e) {e.printStackTrace();}}static void gitClone(String branchName, String httpUrlToRepo, String pathWithNamespace, File execDir) {String command = String.format("git clone -b %s %s %s ", branchName, httpUrlToRepo, pathWithNamespace);try {System.out.println("===========start==================");System.out.println("start exec command : " + command);//执行命令行Process exec = Runtime.getRuntime().exec(command, null, execDir);exec.waitFor();String successResult = StreamUtils.copyToString(exec.getInputStream(), Charset.forName("UTF-8"));String errorResult = StreamUtils.copyToString(exec.getErrorStream(), Charset.forName("UTF-8"));System.out.println("successResult: " + successResult);System.out.println("errorResult: " + errorResult);System.out.println("============end================");} catch (Exception e) {e.printStackTrace();}}public static String readJsonFile(String fileName) {String jsonStr = "";try {File jsonFile = new File(fileName);FileReader fileReader = new FileReader(jsonFile);Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8");int ch = 0;StringBuffer sb = new StringBuffer();while ((ch = reader.read()) != -1) {sb.append((char) ch);}fileReader.close();reader.close();jsonStr = sb.toString();return jsonStr;} catch (IOException e) {e.printStackTrace();return null;}} }
实际效果为下来所有你有权限的代码并且尝试切换develop环境(你想尝试换其他环境也可以自行修改代码参数)
目录结构跟gitlab一致
相关文章:
gitLab批量下载有权限的项目
前言 参考 https://www.jianshu.com/p/b3d4e5cee835 适用于git私服拉取个人所涉及权限的代码,方便有多个项目权限的人快速拉取自己所有权限的代码。 默认生成目录结构与gitlab一致 步骤一:获取权限你的代码权限文件d 从gitlab私服生成所有你有权限的代码信息 …...
解决 kali 中使用 vulhub 拉取不到镜像问题
由于默认情况下,访问的镜像是国外的,而从 2023 年开始,docker 的镜像网站就一直访问不了,所以我们可以把镜像地址改成国内的阿里云镜像地址。 1、在 cd /etc/docker/目录下创建或修改daemon.json文件 sudo touch daemon.json 2、在…...
CSS3 简介
CSS3 简介 CSS3,即层叠样式表的第三代,是网页设计和开发中不可或缺的技术之一。它为HTML元素提供了更加丰富和灵活的样式定义,使得网页不仅结构清晰,而且外观精美、交互性强。CSS3继承了CSS2的基本特性,并引入了许多新…...
springboot事务管理的机制是什么
SpringBoot的事务管理机制实质上是基于Spring框架的事务处理机制。其主要目的是确保一系列数据库操作要么全部成功,要么全部失败(回滚),从而维护数据的完整性和一致性。 SpringBoot事务管理遵循ACID四大特性: 1、原子…...
Linux下tar命令解压缩
tar 命令是 Unix 和 Linux 系统中用来创建归档文件以及提取归档文件的工具。它通常用于备份文件或将多个文件和目录打包成一个单独的归档文件。默认情况下,tar 不会对文件进行压缩,但可以通过结合其他压缩工具(如 gzip 或 bzip2)来…...
当财政支持减弱时,国有企业如何实现降本增效?
随着市场环境的不断变化和上级市场化政策要求的不断推进,部分国有企业面临着双重压力,一方面,市场的快速变革要求企业不断创新、提升竞争力;另一方面,在响应上级市场化转型的号召下,财政支持的减弱成为了许…...
大模型「训练」与「微调」概念详解【6000字长文】
本文你将学到什么 1、大模型预训练与微调的基本流程 2、预训练、训练、后期预训练、微调的区别 3、大模型训练与微调的一些概念,如: Post-pretrain、SFT、RLHF、模型对齐、Lora、Q-Lora、大模型量化、微调指标、微调参数、大模型评测指标 预训练与微…...
JVM 垃圾回收器
一、垃圾回收器类型 如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体 实现。下图展示了7种作用于不同分代的收集器,其中用于回收新生代的收集器 包括Serial、PraNew、Parallel Scavenge,回收老年代的收集器包括Seri…...
Spring IOC 容器的构建流程?
Spring loc (Inversion of Control) 是一种设计模式,其中对象的创建和依赖关系由框架管理,而不是由应用程序直接管理。Spring loc容器是Spring框架的核心,它使用loC模式来管理应用程序中的对象 Spring loC容器的构建过程如下: 1.配置元数据…...
官方文档 搬运 MAXMIND IP定位 mysql导入 简单使用
官方文档地址: 官方文档 文件下载 1. 导入mysql可能报错 Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 查看配置 SHOW GLOBAL VARIABLES LIKE %secure%;secure_file_priv 原来…...
PHP入门教程1:PHP的基础概念和基本语法
本文将从基础开始,介绍PHP的基础概念和基本语法。 PHP简介环境搭建基本语法变量和常量数据类型操作符常见错误和调试方法 1. PHP简介 PHP,全称是 “PHP: Hypertext Preprocessor”,是一种开源的通用脚本语言,尤其适用于Web开发…...
头歌资源库(5)求阶乘问题
一、 问题描述 请输入一个50至100之间的整数n,求解n! 二、算法思想 输入一个50至100之间的整数n。声明一个变量result,并将其初始化为1,用于保存n的阶乘。使用一个循环,从1到n,循环变量为i。在循环中,将…...
09:整型与布尔型的转换
OpenJudge - 09:整型与布尔型的转换 描述 将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少? 输入 一个整型范围内的整数,即初始时整型变量的值。 输出 一个整数,经过上述…...
51单片机STC89C52RC——2.1 独立按键控制LED亮灭
目录 目的 一,STC单片机模块 二,独立按键 2.1 独立按键位置 2.2 独立按键电路图 三,创建Keil项目 四,代码 五,代码编译、下载到51单片机 六,效果 目的 当独立K1按键按下时LED D1 点亮&#x…...
系统架构师考点--计算机硬件
大家好。今天我总结一下计算机硬件的一些考点。 一、中央处理单元(CPU) 我们知道,计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。其中运算器、控制器等部件被集成在一起统称为中央处理单元(Central Proce…...
vite-plugin-mock前端自行模拟接口返回数据的插件
vite-plugin-mock前端自行模拟接口返回数据的插件 安装导入、配置(vite.config.js)使用目录结构/mock/user.js具体在页面请求中的使用 注意事项 中文文档:[https://gitcode.com/vbenjs/vite-plugin-mock/blob/main/README.zh_CN.md) 参考其他…...
网络安全知识全景地图V1.0 - 20240616更新
网络安全领域的知识全景涵盖了从基础概念到高级技术的广泛内容。博主基于自身十年多的工作经验结合CISSP认证官方教材按照不同的主题和层次梳理出如下高层次的概览地图,可以帮助个人和组织理解网络安全领域的主题。 1.1. 基础理论 1.1.1. 网络安全概述 网络安全的…...
力扣19. 删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: 输入:head [1], n 1 输出:[] 示例…...
电脑找不到vcruntime140_1.dll的原因分析及5种解决方法分享
电脑已经成为我们生活和工作中不可或缺的工具。然而,在使用电脑的过程中,我们常常会遇到一些常见的问题,其中之一就是电脑显示vcruntime140_1.dll丢失。那么,这个问题是怎么回事呢?又有哪些解决方法呢?如何…...
洗地机哪个牌子质量好,性价比高?一文盘点市场热门选择
近年来,洗地机因为其能快速的解决我们耗时、费力又繁琐的地板清洁工作,备受人们的喜爱。但面对多款设备不同功能和特点相近的洗地机,你可能会疑惑:“洗地机哪个牌子质量好?”,如果你正在寻找一款高效、便捷…...
MySQL 之 JSON 支持(三)—— JSON 函数
目录 一、JSON 函数参考 二、创建 JSON 值的函数 1. JSON_ARRAY([val[, val] ...]) 2. JSON_OBJECT([key, val[, key, val] ...]) 3. JSON_QUOTE(string) 三、搜索 JSON 值的函数 1. JSON_CONTAINS(target, candidate[, path]) 2. JSON_CONTAINS_PATH(json_doc, one_or…...
《华为项目管理之道》第1章笔记
《华为项目管理之道》,是新出的华为官方的项目管理书,整个书不错。第1章的精华: 1.2.2 以项目为中心的机制 伴随着项目型组织的建立,华为逐步形成了完备的项目管理流程和制度,从而将业务运 作构建在项目经营管理之…...
C# —— 算数运算符
算术运算符: 用于数值类型进行变量计算的运算符 他的返回结果是数值 赋值运算符 : 先看右侧 再看 左侧 将右侧的数据赋值给左侧的变量 int num 5; string name "老王"; float myHeight 187.5f; 加 先计算 再赋值 // 进行数据的加法…...
去掉eslint
1、在vue.config.js文件里加上下面的代码,然后重启就可以了! 2、vue.config.js文件代码: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,lintOnSave: false })...
【代码随想录算法训练Day38】LeetCode 509.斐波纳契数、LeetCode 76.爬楼梯、LeetCode 746. 使用最小花费爬楼梯
Day38 动态规划 又开始了新的章节,有了点难度的感觉。。 动态规划五部曲: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 这些以后慢慢参透 LeetCode 509.斐波纳契数 最简单…...
Rust 的编译时间过长
Rust 代码的编译时间可能会比某些其他编程语言长,原因有以下几点: Rust 使用了静态类型,这意味着编译器需要更多的时间来验证类型安全性。与动态类型的语言相比,这可能会导致编译时间变长。Rust 的编译器在进行许多优化时需要大量…...
19C之前恢复drop 掉的PDB 创建另一个实例
--------恢复PDB------------------ create pluggable database testpdb admin user test identified by test; backup database plus archivelog tag full db backup; RMAN> backup database plus archivelog tag full db backup; ORA-15012: ASM file DATA1/CDB/ARC…...
实用软件下载:BetterZip 5最新安装包及详细安装教程
BetterZip是一款功能强大的Mac解/压缩软件,可以满足用户对文件压缩、解压、加密和保护等方面的需求。以下是关于BetterZip软件的主要功能、特点和使用方法的详细介绍,以及对其用户友好度、稳定性和安全性的评价。 安 装 包 获 取 地 址: BetterZip 5-安…...
实拆一个风扇
fr:徐海涛(hunkxu)...
Android 蓝牙配对Settings应用里面的简要流程记录
Android 蓝牙配对Settings应用里面的简要流程记录 文章目录 Android 蓝牙配对Settings应用里面的简要流程记录一、前言二、Settings蓝牙配对的关键代码1、接收蓝牙请求的地方 AndroidManifest.xml2、BluetoothPairingRequest3、BluetoothPairingService4、BluetoothPairingDial…...
杭州微网站开发公司电话/免费查权重工具
环境描述:搭建了一个4台机器的hadoop集群环境,分别创建了用户hadoop1。 1)首先解决了的问问题是实现master与其余三个slave的ssh无密码通信问题。 2)安装hadoop的环境遇见下列问题: 首先:在master上用sc…...
做网站发广告/简述网络营销的特点及功能
在ASP.NET 中使用 Unity Application Block – 示例(提供代码下载) 下面的示例演示在ASP.NET Web Application 中使用 Unity 依赖注入容器。下载ASP.NetWeb Application源码!!! 具体步骤如下: 1. 创建IUnit…...
做盗版电影网站吗/南京关键词网站排名
为更好地从Activity跳转,并且带数据传递和关闭Activity,加上请求码与返回码得到数据。请看详细下面的例子。 让我们看一下原代码。虽然,只有代码,大家肯定看效果的。 package com.smart.activity; import android.app.Activity…...
企业做网站 里面都写什么/怎么做表格
目录 漏洞背景 漏洞影响版本 漏洞复现 漏洞利用 漏洞修复 漏洞背景 2020年09月08日微软发布漏洞通告:CVE-2020-16875 | Microsoft Exchange Server 远程执行代码漏洞 由于对cmdlet参数的验证不正确,Microsoft Exchange服务器中存在一个远程执行代码漏洞…...
鄂州网吧暂停营业/seo的搜索排名影响因素主要有
C语言程序设计Copyer:Vigiking ;第一章 计算机语言与C语言概述 ;?机器语言 最早问世,用二进制代码构成指令。 如: 100000 () 110000 (-) 用机器语言编程的缺点: ─繁琐、不直观、不易调试。 如计算y2x23x-1需要七八条指令。 ─移植性差。 依…...
美国主机网站建设/百度95099如何转人工
这里使用的是淘宝的接口 public class AddressUtil{ /** * * param content * 请求的参数 格式为:namexxx&pwdxxx * param encodingString * 服务器端请求编码。如GBK,UTF-8等 * return * throws UnsupportedEncodingException */ public static String getAddr…...