通过接口获取远程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,请求这个地址就可以得到分支列表

猜你喜欢

转载自blog.csdn.net/qq_23948283/article/details/105777961