如何通过管道将 git log 传输到curl 命令

如何通过管道将 git log 传输到curl 命令

我的目标是使用curl命令的输出作为curl有效负载来执行 a,它们分别工作,但我无法将两者合并为一个。

这是我的第一个命令,它打印上一个版本之后 GIT 存储库中的更改

git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1)

好的,现在我想以某种方式将此输出引入到这个curl 句子中

curl -vX POST --data-urlencode 'payload={"text": "< GIT LOG OUTPUT >"}' https://example.com

有什么办法可以在一行中传输这两个命令吗?

答案1

你可以尝试这样的事情:

curl -vX POST --data-urlencode \
    "payload={\"text\":\"`git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1) | tr '\n' ',' | sed 's|,$||'`\"}" \
    https://<your-remote>

答案2

用于jo创建正确编码的 JSON:

curl -vX POST --data-urlencode \
  payload="$(
    jo text="$(
      git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1)
    )"
  )"

这里最主要的是命令

jo text="$( git log ... )"

这将输出带有密钥的 JSON 文档text。该键的值将是 输出的数据git log,换行符替换为\n,任何其他字符替换为正确的 JSON 编码等效项。

jo可以通过大多数 Unices 上的包管理器轻松获得。

相关内容