问题描述
使用Github的动作时,我遇到了一个奇怪的问题。我有一个Gradle任务,可以将发行说明打印到文件中(在本地工作得很好)。但是使用GitHub动作似乎无法为–pretty=format:
使用git log
标志。由于未知的原因,它不会打印任何内容。当我删除此标志或将其设置为不带引号的内容时,它将起作用。转义这些字符可能有问题吗?不过,这很奇怪。
不,fetch-depth
没问题。设置为0,历史记录正确。
当我这样运行它时(在Gradle任务之外):
run: |-
git log develop --no-merges --date=short --pretty=format:"%ad %an: %s" v1.0.0...HEAD
它也可以工作。它仅与Github动作中的Gradle任务无关。
示例运行: https://github.com/JakubMosakowski/ItemistEvolved/actions/runs/350396754
有很多类似的运行,因为我正在尝试一切检查问题出在哪里。
更加精确。 Gradle任务中的此命令确实起作用:
printf("git log develop --no-merges --date=short --pretty=oneline ${tag}...HEAD".execute().text.trim())
但不是:
printf("git log develop --no-merges --date=short --pretty=\"%ad %an: %s\" ${getNewestTag()}...HEAD".execute().text.trim())
解决方法
将运行程序从Linux更改为Windows之后,它开始工作(在本地使用Windows)。
我认为Linux可运行的字符与转义符的工作方式不同。当我在命令中放入“或%符号”时,它可能最终会出错。