簡體   English   中英

如何獲取 git log -p as json

[英]How to get git log -p as json

我想運行git log -p並得到 JSON 的結果。 我無法從漂亮的格式文檔中找到一種方法,但我可能遺漏了一些東西。

我想到的預期結果將類似於:

[{
  "commit": SHA,
  "author": AUTHOR,
  "date": DATE,
  "commit_message": COMMIT_MSG,
  "full_diff": FULL_DIFF
}]

使用git log是不可能實現的,因為沒有 diff 格式。 可以使用管道命令編寫腳本:

echo '['
git rev-list HEAD | while read sha1; do
    full_diff="$(git show --format='' $sha1 | sed 's/\"/\\\"/g')"
    git --no-pager show --format="{%n  \"commit\": \"%H\",%n  \"author\": \"%an\",%n  \"date\": \"%ad\",%n  \"commit_message\": \"%s\",%n  \"full_diff\": \"$full_diff\"%n}," -s $sha1
    done
echo ']'

幾點注意事項:

git rev-list HEAD | while read sha1; do…done

表示“運行所有提交,將每個 hash 讀取到變量sha1中”。

full_diff="$(…)"

提取提交的完整差異。 "替換為\"以避免生成損壞的 JSON。

git show --format="…" -s $sha1

以給定格式打印有關提交的信息。 單獨添加完整的差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM