Bash

如何將 git log 傳送到 curl 命令

  • May 7, 2020

我的目標是將curl命令的輸出作為curl有效負載執行,它們分別工作,但我無法將兩者合併為一個。

這是我的第一個命令,它在最後一個版本之後列印 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

有什麼方法可以在一行中輸入這 2 個命令嗎?

你可以嘗試這樣的事情:

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>

用於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 ... )"

這將輸出一個帶有text密鑰的 JSON 文件。該鍵的值將是由 輸出的數據git log,換行符替換\n為正確的 JSON 編碼等效替換任何其他字元。

jo可以通過大多數 Unices 上的包管理器輕鬆獲得。

引用自:https://unix.stackexchange.com/questions/552932