什么';gitpython和#x27;s diff和git log';有什么区别?
我不理解什么';gitpython和#x27;s diff和git log';有什么区别?,git,github,gitpython,Git,Github,Gitpython,我不理解git log-p的输出与gitpython的输出在差异方面的区别 例如,对于某些合并提交f534e1…,git log-p给出: commit f534e1... Merge: .... Author: .... Date: ... Merge pull request ... from ... 使用无差异,我认为这是正确的(差异随下一个日志条目而来-f534e1的父项之一…) 我想用gitpython实现同样的效果。我正在努力: repo = Repo("...") for
git log-p
的输出与gitpython
的输出在差异方面的区别
例如,对于某些合并提交f534e1…
,git log-p
给出:
commit f534e1...
Merge: ....
Author: ....
Date: ...
Merge pull request ... from ...
使用无差异,我认为这是正确的(差异随下一个日志条目而来-f534e1的父项之一…)
我想用gitpython
实现同样的效果。我正在努力:
repo = Repo("...")
for c in repo.iter_commits():
print c.hexsha
print c.summary
print c.diff()
我得到:
f534e1...
Merge pull request ... from ...
[<git.diff.Diff object at 0x102cd3490>]
f534e1。。。
合并拉取请求。。。从…起
[]
带有一些差异
这有什么区别?我为什么要在这里买?如何模拟git log-p的行为?根据,c.diff()
将根据索引比较提交,即分阶段更改
看起来,git log-p
将针对给定提交的所有父级生成一个特殊格式的diff。使用以下代码(基于您的示例)可以实现大致相当的效果
后者将生成一个包含所有相关信息的对象
如果您真正想要的是由
git log-p
生成的确切格式,您也可以调用repo.git.log(p=True)
并自己解析输出。git.diff.diff对象的实际属性是什么?嗯,我会阅读文档:)我问这些属性的值是什么?您是否将结果差异(如果它实际上包含任何显著差异,而不仅仅是git.diff.diff类的对象)与git diff…
与每个合并父级进行了比较。
repo = Repo("...")
for c in repo.iter_commits():
print c.hexsha
print c.summary
for p in c.parents:
handle_diff(c.diff(p))