1.说明
统计公司所有项目的提交情况,可指定分支和时间段,返回每个人的提交新增数、删除数和总数。
2.API
文档地址:http://公司gitlab域名/help/api/README.md
- 项目列表查询
返回示例:
[
{
"id": 1, //项目ID
"http_url_to_repo": "http://git.xxx.com/a/saas-project-1.git",
"web_url": "http://git.xxx.com/a/saas-project-1",
"name": "saas-project-1", //项目名
"name_with_namespace": "a / saas-project-1",
"path": "saas-project-1",
"path_with_namespace": "a/saas-project-1"
}
]
- 提交记录查询
- 单次提交统计
3.PRIVATE-TOKEN
PRIVATE-TOKEN获取地址:http://公司gitlab域名/profile/account
查看Private token下面的值即可
4.代码
package com.visy.utils;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.tuple.Triple;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
/**
* @author visy.wang
*/
public class GitStatsUtil {
private static final String PRIVATE_TOKEN = "你自己的Private token";
private static final String BASE_URL = "http://公司gitlab域名/api/v4";
private static <T> T doGet(String url, Function<String,T> respHandler, Supplier<T> defaultResp){
HttpRequest request = HttpUtil.createGet(BASE_URL + url);
request.header("PRIVATE-TOKEN", PRIVATE_TOKEN);
HttpResponse response = request.execute();
if(response.getStatus() == 200){
return respHandler.apply(response.body());
}else{
return defaultResp.get();
}
}
private static List<Map<String,Object>