首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Gerrit查询-从结果提取提交ID

Gerrit查询-从结果提取提交ID
EN

Stack Overflow用户
提问于 2022-06-17 08:46:28
回答 1查看 89关注 0票数 0

我试图提取并保存给定gerrit提交的提交ID。以下命令的工作原理是它提供了有关提交的所有信息:

ssh -p <port-num> <host> gerrit query --current-patch-set <change-id>

这个命令将从groovy文件中运行。

它返回一个类似于以下内容的结果:

代码语言:javascript
运行
复制
change <change-id>
  project: <project-name>
  branch: master
  id: <change-id>
  number: 12678771
  subject: NO-JIRA
  owner:
    name: Kevin Niland
    email: <email>
    username: <username>
  url: <gerrit-url>
  commitMessage: NO-JIRA
                 
                 Change-Id: <change-id>
  createdOn: 2022-06-16 16:58:21 CEST
  lastUpdated: 2022-06-17 10:07:40 CEST
  open: true
  status: NEW
  currentPatchSet:
    number: 14
    revision: <commit-id> <--- What I want to extract
    parents:
 [dsfgdsf]
    ref: refs/changes/12/1234567/12
    uploader:
      name: Kevin Niland
      email: <email>
      username: <username>
    createdOn: 2022-06-17 10:07:39 CEST
    author:
      name: Kevin Niland
      email: <email>
      username: <username>
    isDraft: false
    kind: REWORK
    sizeInsertions: 41
    sizeDeletions: -28

type: stats
rowCount: 1
runTimeMilliseconds: 5
moreChanges: false

还有一个选项可以用JSON格式化结果,使用--format=JSON,它提供:

代码语言:javascript
运行
复制
{"project":"project","branch":"master","id":"change-id","number":12678771,"subject":"NO-JIRA","owner":{"name":"Kevin Niland","email":"email","username":"username"},"url":"gerrit-url","commitMessage":"NO-JIRA","createdOn":1655391501,"lastUpdated":1655453260,"open":true,"status":"NEW","currentPatchSet":{"number":14,"revision":"COMMIT_ID","parents":["fgeretdsgfdghdfg"],"ref":"refs/changes/12/12345566/12","uploader":{"name":"Kevin Niland","email":"email","username":"username"},"createdOn":1655453259,"author":{"name":"Kevin Niland","email":"email","username":"username"},"isDraft":false,"kind":"REWORK","sizeInsertions":41,"sizeDeletions":-28}}
{"type":"stats","rowCount":1,"runTimeMilliseconds":9,"moreChanges":false}

我知道JsonSlurper库,但是,我想避免使用它,以及任何库,如果可能的话。有手动的方法吗?快速浏览在线显示,许多解决方案使用一些库来提取信息。是否有一种方法从第一个命令中提取信息,而该命令不是用groovy格式化的?

EN

回答 1

Stack Overflow用户

发布于 2022-06-17 09:17:45

考虑到上面的文本,您可以使用一个简单的正则表达式来提取您想要的内容:

代码语言:javascript
运行
复制
String txt = '''
change <change-id>
  project: <project-name>
  id: <change-id>
  lastUpdated: 2022-06-17 10:07:40 CEST
  currentPatchSet:
    number: 14
    revision: <commit-id> <--- What I want to extract
    parents:
 '''

String revision = ( txt =~ /revision: (.+)/ ).findAll().first().last()

assert revision == '<commit-id> <--- What I want to extract'

如果您需要更复杂的搜索,您应该使用JsonSlurper来避免重新发明轮子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72656654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档