我尝试使用Powershell处理VSTS任务中的git脚本,但它没有按预期工作。
我正在做的是在最新标记放入发行说明之后获取最新的提交消息,这是基本的git命令:
git log `git describe --tags --abbrev=0`..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"
但是Powershell并不接受这种格式,所以我会做以下事情:
$latestTag = git describe --tags --abbrev=0
$releaseNotes = git log $latestTag..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"
似乎当我将变量$latestTag
放在..HEAD
旁边时,它会断行,如果我指定标签,例如。 v1.2.9
而不是它运作良好的变量。
如何才能让它正常运行? 感谢。
答案 0 :(得分:4)
您可以将表达式$latestTag..HEAD
括在"
标记中,如
$latestTag = git describe --tags --abbrev=0
$releaseNotes = git log "$latestTag..HEAD" --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"
这与PowerShell扩展变量的方式有关,但我没有足够使用PS来真正理解变量。
答案 1 :(得分:1)
如果您想将它保留在一行中,您可以尝试使用powershell语法来嵌入与原始内容类似的注释。转换为PowerShell友好的语句我认为它会像
git log $(git describe --tags --abbrev=0)..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"
这应该解析$()
中的表达式,然后将该结果作为文本插入git log
命令,就像您原来的那样。