gpt4 book ai didi

java - 使用 JGit 列出与给定标签关联的提交

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:21 25 4
gpt4 key购买 nike

我需要创建一个历史文件,详细说明所有标签以及每个标签的所有提交。

我尝试在存储库对象上调用 getTags() 并使用这些对象 ID,但它们不是提交 ID。

我还尝试在存储库上使用 getAllRefsByPeeledObjectId(),这确实带回了提交,但我无法将它们与标签相关联。

有什么想法吗?

最佳答案

列出所有标签:

List<Ref> call = new Git(repository).tagList().call();
for (Ref ref : call) {
System.out.println("Tag: " + ref + " " + ref.getName() + " " + ref.getObjectId().getName());
}

根据标签列出提交:

我会使用基于标签名称的日志命令和 Rüdiger 指出的去皮魔法:

        LogCommand log = new Git(repository).log();

Ref peeledRef = repository.peel(ref);
if(peeledRef.getPeeledObjectId() != null) {
log.add(peeledRef.getPeeledObjectId());
} else {
log.add(ref.getObjectId());
}

Iterable<RevCommit> logs = log.call();
for (RevCommit rev : logs) {
System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
}

另见我的 jgit-cookbook一些相关的例子。

关于java - 使用 JGit 列出与给定标签关联的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27149949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com