[英]Decoding git log complex pretty format
我正在嘗試為我的開源項目向libgit2
移植一些與git
有關的東西。
git
調用之一很奇怪:
git log --topo-order --no-color --parents --boundary -z --pretty=format:%m%HX%PX%n%cn<%ce>%n%an<%ae>%n%at%n%s%n%b HEAD --all
首先,我對格式字符串很感興趣。 H
之后的X
是什么意思? 我在官方git站點上找不到X
說明符:/第二個問題libgit2
可以執行這種復雜的格式設置,還是我自己處理?
PS但是,我很確定它不能:)
X
不是格式說明符。
--pretty=format:
或--pretty=tformat:
(大多數用戶需要tformat
,但是此代碼使用-z
,它在每次提交后添加一個NUL字符)同時包含%m
和%H
類的指令和文字簡單抄寫的文字 :
$ git log -n 3 --pretty=tformat:hello%x25world
hello%world
hello%world
hello%world
在這里, hello
和world
字符串只是通過復制而完成,而%x25
被解釋了。 由於它表示“打印字符,十六進制代碼為25”(即百分號%
,並且-n 3
告訴git log
在記錄了3次提交后停止,所以我們得到了3個hello%world
副本。
文字X
之所以起作用,是因為%m
打印的字符不是X
, %H
和%P
打印的哈希不包含X
,而%n
打印的換行符-因此,讀取此輸出的內容可以確保每次提交均以標記字符, X
,提交哈希,另一個X
以及每個父哈希,每個哈希之間有一個空格,然后是換行符。
%s%n%b
序列不是完全必要的(一個人可以簡單地使用%B
代替)。 不過,我不確定是否能立即調整“異常格式化”提交的方式(不是單個主題行,然后是換行符,再是提交主體)的提交方式。 可能會的。
(我對libgit2一無所知。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.