从gitlab上批量克隆、更新代码仓库

Published on 2023-11-16 17:49 in 分类: 软件 with 狂盗一枝梅
分类: 软件

gitlab上有很多代码仓库,而且代码仓库都分了组,一个一个克隆代码仓库简直要让人崩溃,所以写了一个工具批量克隆和更新代码仓库,由于只会java,所以这里使用了java编写。

gitlab提供了在线和私有化部署两种服务方式,它们共同遵循同一套restful api 规范:https://docs.gitlab.com/ee/api/rest/ ,从文档中可以看到有多种接入方式,想要访问私有仓库,则需要加上请求头:

curl --header "Authorization: Bearer OAUTH-TOKEN" "https://gitlab.example.com/api/v4/projects"

其中/api/v4是公共前缀,所有的接口请求都要使用它作为前缀。

一、gitlab文档接口

这里一共使用到了三个接口:

1. /api/v4/groups/:id

接口文档:https://docs.gitlab.com/ee/api/groups.html#details-of-a-group

该接口会查询某个group的详情信息,这里:id可以传groupName,请求该接口是为了获取其groupId。

2. /api/v4/groups/: groupId/subgroups

接口文档:https://docs.gitlab.com/ee/api/groups.html#list-a-groups-subgroups

该接口用于查询某个group下的所有子group

3./api/v4/groups/:groupId/projects

接口文档:https://docs.gitlab.com/ee/api/groups.html#list-a-groups-projects

该接口用于查询某个group下的所有项目列表

有了上述三个接口,便可以根据输入参数:groupName 递归查询该group下的所有字group,并查询子group下的所有项目列表。

二、实现

1.获取token

image-20231116174204511

2.代码实现

代码已经上传到了gitee:https://gitee.com/kdyzm/code-backup

在运行之前先修改application.properties文件

gitlab.baseUrl=
gitlab.token=
#多个groupName使用英文逗号分割
gitlab.groups=
gitlab.targetDir=D:\\git_repository\\data

修改完了以后运行mvn clean package命令打包,最后使用命令 java -jar code-backup-1.0-SNAPSHOT.jar 运行jar包:

img

可以重复运行jar包,当检测到项目存在的时候会更新项目。

END.


#java #maven #git #gitlab
目录