【问题标题】:Execute git command in Powershell在 Powershell 中执行 git 命令
【发布时间】:2017-12-29 16:04:24
【问题描述】:

我正在尝试使用 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 代替变量效果很好。

我该怎么做才能让它正常运行? 谢谢。

【问题讨论】:

  • 不确定,但请尝试将$latestTag..HEAD 包含在"
  • 它成功了,最新的构建被缓存了,它现在正在返回值!你能把它贴出来让我接受@MarkAdelsberger

标签: git powershell azure-devops


【解决方案1】:

您可以将表达式$latestTag..HEAD 括在" 标记中,如

$latestTag = git describe --tags --abbrev=0
$releaseNotes = git log "$latestTag..HEAD" --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"

这与PowerShell如何扩展变量有关,但我使用PS不够真正理解它。

【讨论】:

  • 我猜我会说它阻止 PowerShell 将 .. 解释为范围运算符(即 1 到 10 的范围为 1..10),而是作为字符串。
【解决方案2】:

如果您想将其保留在一行中,您可以尝试使用 powershell 语法来嵌入评论,其中包含您原来的内容。翻译成对 powershell 友好的语句,我认为它会是这样的

git log $(git describe --tags --abbrev=0)..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"

这应该会解析 $() 中的表达式,然后将该结果作为文本插入到 git log 命令中,就像您原来的一样。

【讨论】:

    猜你喜欢
    • 2020-11-07
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2012-06-17
    • 2012-08-03
    相关资源
    最近更新 更多