Java 使用API调用检索恢复Gerrit更改时生成的提交ID

Java 使用API调用检索恢复Gerrit更改时生成的提交ID,java,commit,gerrit,revert,Java,Commit,Gerrit,Revert,我一直在尝试使用从还原的Gerrit更改中检索生成的提交ID,但没有找到这样做的方法 我尝试获取此ID的方法之一是尝试访问相关更改列表。 显示您可以使用查询检索此列表。 如何使用API调用检索此列表? 是否有其他方法检索此提交ID 我想用它来跟踪恢复,并能够分析此恢复对项目可能产生的影响。找到了解决此问题的方法。我所做的是在查询中添加一个“&o=MESSAGES”标记,以检索完整的更改历史记录列表,其中revert消息为您提供了目标提交ID 然后,我将返回的集合传输到列表中,以便轻松访问所有消息

我一直在尝试使用从还原的Gerrit更改中检索生成的提交ID,但没有找到这样做的方法

我尝试获取此ID的方法之一是尝试访问相关更改列表。
显示您可以使用查询检索此列表。
如何使用API调用检索此列表?
是否有其他方法检索此提交ID


我想用它来跟踪恢复,并能够分析此恢复对项目可能产生的影响。

找到了解决此问题的方法。我所做的是在查询中添加一个“&o=MESSAGES”标记,以检索完整的更改历史记录列表,其中revert消息为您提供了目标提交ID

然后,我将返回的集合传输到列表中,以便轻松访问所有消息

Collection<ChangeMessageInfo> messageColl = gerritClient.changes().query("commit:<commitID>&o=MESSAGES").get().get(0).messages;
final List<ChangeMessageInfo> messageList = new ArrayList<>(messageColl);
Collection messageColl=gerritClient.changes().query(“commit:&o=MESSAGES”).get().get(0).MESSAGES;
最终列表messageList=newarraylist(messageColl);
恢复消息通常是更改历史记录日志的最后一个条目。
可以找到以类似方式使用的标签列表。你需要向下滚动一点来找到标签

更新:
找到了一种更有效的方法来查找还原的提交。
使用下面的代码,您可以在Gerrit上检索主题下的正文消息,从而可以查询该字段中显示的提交ID

List<String> revertedCommits = new ArrayList<>();
revertedCommits.add(<commitID>);
String revertedCommit = "unknown";
Map<String, RevisionInfo> revisionInfo = gerritClient.changes().query("commit:" + revertedCommits.get(revertedCommits.size() - 1) + "&o=CURRENT_REVISION&o=COMMIT_FOOTERS").get().get(0).revisions;
Pattern p = Pattern.compile(Pattern.quote("This reverts commit ") + "(.*?)" + Pattern.quote("."));
Matcher m = p.matcher(revisionInfo.values().iterator().next().commitWithFooters);
while (m.find()) {
    revertedCommit = m.group(1);
}
List revertedCommits=new ArrayList();
revertedCommits.add();
字符串revertedCommit=“未知”;
Map revisionInfo=gerritClient.changes().query(“提交:+revertedCommits.get(revertedCommits.size()-1)+”&o=CURRENT\u REVISION&o=commit\u FOOTERS”).get().get(0).修订;
Pattern p=Pattern.compile(Pattern.quote(“此回复提交”)+“(.*?”)+Pattern.quote(“.”);
Matcher m=p.Matcher(revisionInfo.values().iterator().next().commitWithFooters);
while(m.find()){
revertedCommit=m.group(1);
}
然后,可以对其进行迭代,以查找连接到第一次提交的所有还原。
请注意,我在查询中使用“&o=CURRENT\u REVISION”和“&o=COMMIT\u FOOTERS”标记来访问此信息。没有这些标记,您只能得到一个空数组