簡體   English   中英

解碼git log復雜格式

[英]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

在這里, helloworld字符串只是通過復制而完成,而%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.

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