代码之家  ›  专栏  ›  技术社区  ›  Noccz

使用API调用检索在还原Gerrit更改时生成的提交ID

  •  0
  • Noccz  · 技术社区  · 9 年前

    我一直在尝试使用从还原的Gerrit更改中检索生成的提交ID https://github.com/uwolfer/gerrit-rest-java-client 但一直没有找到这样做的方法。


    这个 REST API documentation 显示您可以使用查询来检索此列表。

    是否有其他方法检索此提交ID?

    1 回复  |  直到 9 年前
        1
  •  0
  •   Noccz    9 年前

    找到了解决这个问题的方法。我所做的是在查询中添加一个“&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);
    


    可以找到以类似方式使用的标签列表 here 。您需要向下滚动一点才能找到标签。

    更新:

    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);
    }
    


    请注意,我在查询中使用了“o=CURRENT\u REVISION”和“o=COMMIT\u FOOTERS”标记来访问此信息。没有这些标记,您只能得到一个空数组。

    推荐文章