使用jGit 通过gitUrl 获取Git的所有分支
本文代码已经同步到码云 ,欢迎大家 star https://gitee.com/njitzyd/JavaDemoCollection
问题引入
在企业中,在针对代码规范规约的时候,就需要保证你的jar包的代码是可追溯的。尤其在大的企业里,对代码质量的检查也是很多的,比如通过sonar进行代码的管理,通过自己编写maven 插件来自定义规范并通过Jenkins 去自动化持续发布和部署。那么在进行提交你所发布的jar包时就需要根据你的git地址去拉取你的分支,然后你要选择你的分支,那如何根据git地址获取所有分支?
jGit 的使用
新建maven工程,添加依赖
<!--jGit -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>5.5.1.201910021850-r<ersion>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10<ersion>
</dependency>
新建测试类
public class GitTest {
public static void main(String[] args) throws Exception {
GitTest test = new GitTest();
test.getRemoteBranchs("https://gitee.com/njitzyd/JavaDemoCollection.git","你的仓库用户名","你的仓库密码");
}
public void getRemoteBranchs(String url, String username, String password){
try {
Collection<Ref> refList;
if (StringUtils.isNotEmpty(username) && StringUtils.isNotEmpty(password)) {
UsernamePasswordCredentialsProvider pro = new UsernamePasswordCredentialsProvider(username, password);
refList = Git.lsRemoteRepository().setRemote(url).setCredentialsProvider(pro).call();
} else {
refList = Git.lsRemoteRepository().setRemote(url).call();
}
List<String> branchnameList = new ArrayList<>(4);
for (Ref ref : refList) {
String refName = ref.getName();
if (refName.startsWith("refs/heads/")) { //需要进行筛选
String branchName = refName.replace("refs/heads/", "");
branchnameList.add(branchName);
}
}
System.out.println("共用分支" + branchnameList.size() + "个");
branchnameList.forEach(System.out::println);
} catch (Exception e) {
System.out.println("error");
}
}
}
运行查看结果
共用分支2个
develop
master
可以看到代码的所有分支已经拿到,这样就实现了功能!!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。