我试图将一些git
依赖的内容移植到我的开源项目的libgit2
。
其中一个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
首先,我对格式字符串感兴趣。
X
之后的H
是什么意思?我无法在官方git网站上找到X
说明符:/
第二个问题 - libgit2
可以执行这种复杂的格式化,或者我应该自己处理它吗?
P.S。但是,我很确定它不能:)
答案 0 :(得分:2)
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
被解释了。因为它意味着&#34;打印字符,十六进制代码为25&#34;这是百分号%
,-n 3
告诉git log
在记录三次提交后停止,我们得到了三份hello%world
。
文字X
有效,因为%m
打印的一个字符不是X
,%H
和%P
打印不包含{{1}的哈希}和X
打印一个换行符 - 所以读取此输出的任何内容都可以确保每个提交都以标记字符开头,%n
,提交哈希,另一个X
,每个父哈希在每个哈希之间有一个空格,然后换行。
X
序列并非完全必要(可以简单地使用%s%n%b
)。不过,我不确定这是否会影响&#34;异常格式化的方式&#34;提交 - 那些不是单一主题行,后跟换行符,然后是提交主体 - 出来。它可能会。
(我对libgit2一无所知。)