鉴于此git命令while read L < filelist; do echo "${L:10}"; done
我很想拥有JGit中的等价物。
我找到了类似git log ``git describe --tags --abbrev=0``..HEAD --oneline
的方法,但无法弄清楚它所期望的值类型或我可以在API中git.log().addRange()
上调用的位置。
我尝试了git describe
但是链接方法对我来说对于本机git CLI API没有任何意义。
答案 0 :(得分:1)
我也无法理解DescribeCommand
输出。因此,我建议解决DescribeCommand
并从HEAD
向后迭代历史记录,如下所示:
Collection<Ref> allTags = git.getRepository().getRefDatabase().getRefs( "refs/tags/" ).values();
RevWalk revWalk = new RevWalk( git.getRepository() );
revWalk.markStart( revWalk.parseCommit( git.getRepository().resolve( "HEAD" ) ) );
RevCommit next = revWalk.next();
while( next != null ) {
// ::pseudo code::
// in real, iterate over allTags and compare each tag.getObjectId() with next
if( allTags.contains( next ) ) {
// remember next and exit while loop
}
next = revWalk.next();
}
revWalk.close();
请注意,带注释的标签需要不剥离:List commits associated with a given tag with JGit
获得标记提交后,您可以将结果提供给LogCommand
,如下所示:
ObjectId headCommitId = git.getRepository().resolve( "HEAD" );
Iterable<RevCommit> commits = git.log().addRange( headCommitId, taggedCommit ).call();
这有点模糊,但我希望帮助你入门。