Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git日志复杂格式的解码_Git_Libgit2 - Fatal编程技术网

git日志复杂格式的解码

git日志复杂格式的解码,git,libgit2,Git,Libgit2,我正在尝试为我的开源项目将一些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 git日志--拓扑顺序--无颜色--父项--边界-z--漂亮=格式:%m%HX%PX%n%cn%n%an%n%n%n%n%s%n%b

我正在尝试为我的开源项目将一些
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
git日志--拓扑顺序--无颜色--父项--边界-z--漂亮=格式:%m%HX%PX%n%cn%n%an%n%n%n%n%s%n%b头--全部
首先,我对格式字符串很感兴趣。
H
之后的
X
是什么意思?我在git官方网站上找不到
X
说明符:/ 第二个问题是,
libgit2
是否可以进行这种复杂的格式化,或者我应该自己处理


但是,我很确定它不能:)

这个
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打印字符”,这是百分号
%
,并且
-n3
告诉
git log
在记录三次提交后停止,我们得到了三份
hello%world

文本
X
之所以有效,是因为
%m
打印一个不是
X
的字符,
%H
%p
打印不包含
X
的散列,
%n
打印一个换行符,因此无论读取此输出的是什么,都可以确保每次提交都以标记字符
X
开始,提交散列,另一个
X
,每个父散列之间有一个空格,然后是换行符

%s%n%b
序列不是完全必要的(可以简单地使用
%b
)。不过,我不确定这是否会调整“异常格式化”提交那些不是单一主题行的内容的方式,然后是换行,然后是提交正文。可能是的


(我对libgit2一无所知。)

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打印字符”,这是百分号
%
,并且
-n3
告诉
git log
在记录三次提交后停止,我们得到了三份
hello%world

文本
X
之所以有效,是因为
%m
打印一个不是
X
的字符,
%H
%p
打印不包含
X
的散列,
%n
打印一个换行符,因此无论读取此输出的是什么,都可以确保每次提交都以标记字符
X
开始,提交散列,另一个
X
,每个父散列之间有一个空格,然后是换行符

%s%n%b
序列不是完全必要的(可以简单地使用
%b
)。不过,我不确定这是否会调整“异常格式化”提交那些不是单一主题行的内容的方式,然后是换行,然后是提交正文。可能是的


(我对libgit2一无所知。)

X
这里似乎是一个分隔符,用于包装父提交id并将其与提交id分开。
X
这里似乎是一个分隔符,用于包装父提交id并将其与提交id分开。感谢您对git命令的详细解释。关于libgit2——看起来,我应该试着直接询问这个库的作者……感谢您对git命令的详细解释。关于libgit2-看起来,我应该试着直接询问这个库的作者。。。