自上次标记命令以来 git 提交的 JGit 等价物
JGit equivalent for git commits since last tag command
鉴于此 git 命令 git log ``git describe --tags --abbrev=0``..HEAD --oneline
我很想在 JGit 中拥有等效项。
我找到了像 git.log().addRange()
这样的方法,但无法弄清楚它期望什么样的值,或者我可以在哪里调用 API 中的 git describe
。
我尝试了 git.describe()
,但对于本机 git CLI API.
,链接方法对我来说没有任何意义
我也无法理解 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();
这有点含糊,但我希望它能帮助您入门。
鉴于此 git 命令 git log ``git describe --tags --abbrev=0``..HEAD --oneline
我很想在 JGit 中拥有等效项。
我找到了像 git.log().addRange()
这样的方法,但无法弄清楚它期望什么样的值,或者我可以在哪里调用 API 中的 git describe
。
我尝试了 git.describe()
,但对于本机 git CLI API.
我也无法理解 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();
这有点含糊,但我希望它能帮助您入门。