获取 GIT 尾部值并保存为变量?
Get GIT trailer value and save as variable?
我在寻找 GIT 预告片时遇到了一些问题。我正在尝试找到一种方法来获取最新的提交消息,解析预告片并将预告片中的值保存到 CI 脚本的不同变量中。
I.E.提交消息将是:
Updated level 2 geometry
Level: Assets\LevelTwo.fbx
Platform: Android
而 CI 系统会 运行 类似于:
level = git interpret-trailers --parse(Level(value))
platform = git interpret-trailers --parse(Platform(value))
ReImport $level $platform
我发现解释预告片文档在这方面没有太大帮助,因为所有示例都是关于设置更新或添加预告片的规则,而不是如何从中获取有用信息。
检查漂亮的格式选项 acquired in Git 2.22 (Q2 2019) 是否对您的情况有所帮助。
示例:
git show -s --pretty='%s%n%(trailers:key=Signed-off-by,valueonly)' aaaa881
对于随机提交消息,
1st block
blank
2nd block
blank
last block
第一个块是它的 subject
,它可以有一个或多个非空行。空白块也可以有一个或多个空白行。第一个空格下面的内容是消息的body
。行格式为 key:value
的最后一个块是预告片。
在你的例子中,
Updated level 2 geometry
Level: Assets\LevelTwo.fbx
Platform: Android
Updated level 2 geometry
是主语,剩下的就是正文了。 Platform: Android
属于预告片,而 Level: Assets\LevelTwo.fbx
不属于预告片,因为它不包含在最后一个非空白块中。
命令git interpret-trailers --parse <file>
中的文件可以是磁盘上已有的文件,也可以是上一个命令的标准输出。文件内容应该是提交消息或补丁,如 git log -1 --pretty='%B'
或 git format-patch -1 --stdout
.
的输出
例如,我们可以通过
检索提交消息的预告片
git log -1 $commit --pretty='%B' | git interpret-trailers --parse
# or
git format-patch -1 $commit --stdout | git interpret-trailers --parse
我们也可以将输出转储到一个文件,然后解析该文件。
git log -1 $commit --pretty='%B' > message.txt
git interpret-trailers --parse message.txt
# or
git format-patch -1 $commit
git interpret-trailers --parse 0001-*.patch
我不知道你的 CI 系统使用什么语言。这些语句似乎与 git 命令有点不同。
如果提交对象及其 sha1 值可用,我们还可以使用占位符 %(trailers)
来检索预告片。
git log -1 $commit --pretty='%(trailers:key=Platform,valueonly)'
它returns键的值Platform
,即Android
。 %(trailers)
打印所有键和值。仅 key=Platform
returns Platform
的键和值。仅 valueonly
或 valueonly=true
returns Platform
的值。
注意Level: Assets\LevelTwo.fbx
不属于预告片。据我所知,git interpret-trailers
或占位符 %(trailers)
不能直接从提交消息中检索它。也许还有一些我还不知道的选择。
我在寻找 GIT 预告片时遇到了一些问题。我正在尝试找到一种方法来获取最新的提交消息,解析预告片并将预告片中的值保存到 CI 脚本的不同变量中。
I.E.提交消息将是:
Updated level 2 geometry
Level: Assets\LevelTwo.fbx
Platform: Android
而 CI 系统会 运行 类似于:
level = git interpret-trailers --parse(Level(value))
platform = git interpret-trailers --parse(Platform(value))
ReImport $level $platform
我发现解释预告片文档在这方面没有太大帮助,因为所有示例都是关于设置更新或添加预告片的规则,而不是如何从中获取有用信息。
检查漂亮的格式选项 acquired in Git 2.22 (Q2 2019) 是否对您的情况有所帮助。
示例:
git show -s --pretty='%s%n%(trailers:key=Signed-off-by,valueonly)' aaaa881
对于随机提交消息,
1st block
blank
2nd block
blank
last block
第一个块是它的 subject
,它可以有一个或多个非空行。空白块也可以有一个或多个空白行。第一个空格下面的内容是消息的body
。行格式为 key:value
的最后一个块是预告片。
在你的例子中,
Updated level 2 geometry
Level: Assets\LevelTwo.fbx
Platform: Android
Updated level 2 geometry
是主语,剩下的就是正文了。 Platform: Android
属于预告片,而 Level: Assets\LevelTwo.fbx
不属于预告片,因为它不包含在最后一个非空白块中。
命令git interpret-trailers --parse <file>
中的文件可以是磁盘上已有的文件,也可以是上一个命令的标准输出。文件内容应该是提交消息或补丁,如 git log -1 --pretty='%B'
或 git format-patch -1 --stdout
.
例如,我们可以通过
检索提交消息的预告片git log -1 $commit --pretty='%B' | git interpret-trailers --parse
# or
git format-patch -1 $commit --stdout | git interpret-trailers --parse
我们也可以将输出转储到一个文件,然后解析该文件。
git log -1 $commit --pretty='%B' > message.txt
git interpret-trailers --parse message.txt
# or
git format-patch -1 $commit
git interpret-trailers --parse 0001-*.patch
我不知道你的 CI 系统使用什么语言。这些语句似乎与 git 命令有点不同。
如果提交对象及其 sha1 值可用,我们还可以使用占位符 %(trailers)
来检索预告片。
git log -1 $commit --pretty='%(trailers:key=Platform,valueonly)'
它returns键的值Platform
,即Android
。 %(trailers)
打印所有键和值。仅 key=Platform
returns Platform
的键和值。仅 valueonly
或 valueonly=true
returns Platform
的值。
注意Level: Assets\LevelTwo.fbx
不属于预告片。据我所知,git interpret-trailers
或占位符 %(trailers)
不能直接从提交消息中检索它。也许还有一些我还不知道的选择。