在做代碼覆蓋率和自動化測試的時候都需要獲取分支列表,選擇使用哪個分支。目前比較主流的就是通過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,請求這個地址就可以得到分支列表