通過接口獲取遠程Git倉庫分支列表

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章