在做代码覆盖率和自动化测试的时候都需要获取分支列表,选择使用哪个分支。目前比较主流的就是通过Gitlab Api和JGit两种方式。但是看了下一般JGit都需要建立本地仓库,通过.git配置文件获取,直接通过代码地址(remoteUrl)好像很难拿到,尝试了下用JGit在call的时候总是报错,后续再研究研究(如果合适的方式有可以留言,谢谢)。所以就采取了用GitLabApi的方式获取。
GitLab提供了丰富的Api给我们使用,通过search可以查到仓库完整的信息
/api/v4/projects?access_token=xxx&search=xxx
但是这里似乎模糊查询,还得匹配下,根据ssh和http匹配下
public String BranchList(String gitAddress){
String branchName = branchName(gitAddress);
String requestUrl = gitLabUrl+"?"+"access_token="+accessToken+"&"+"search="
+branchName;;
String result=HttpUtil.GetResponse(requestUrl);
//获取分支
String res=null;
if (result!=null){
List<String> listName = JSONObject.parseArray(result,String.class);
for(int i=0;i<listName.size();i++){
JSONObject obj=JSON.parseObject(listName.get(i));
String httpRepo = obj.getString("http_url_to_repo");
String sshRepo = obj.getString("ssh_url_to_repo");
if(httpRepo.equals(gitAddress)||sshRepo.equals(sshRepo)){
JSONObject links = JSON.parseObject(obj.getString("_links"));
res = links.getString("repo_branches");
}
}
}
return res;
}
repo_branches就是分支的url,请求这个地址就可以得到分支列表