我试图提取并保存给定gerrit提交的提交ID。以下命令的工作原理是它提供了有关提交的所有信息:
ssh -p <port-num> <host> gerrit query --current-patch-set <change-id>
这个命令将从groovy文件中运行。
它返回一个类似于以下内容的结果:
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
,它提供:
{"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格式化的?
发布于 2022-06-17 09:17:45
考虑到上面的文本,您可以使用一个简单的正则表达式来提取您想要的内容:
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来避免重新发明轮子。
https://stackoverflow.com/questions/72656654
复制相似问题