繁体   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