2017-06-15 45 views
0

我必须错过一些非常基本的东西。鉴于此脚本:gitpython:如何在gitk中以可读格式显示斑点之间的差异?

import git 
repo = git.Repo(r'C:/leo.repo/leo-editor') 
diff_index = repo.head.commit.diff('HEAD~1') 
for d in diff_index: 
    print('%s %9s %9s %s' % (
     d.change_type, id(d.a_blob), id(d.b_blob), d.a_path)) 

我得到的是这样的:

M 173600704 173600080 leo/core/commit_timestamp.json 
M 173600368 173599408 leo/core/leoTest.py 
M 173600272 173598928 leo/test/unitTest.leo 

到目前为止,一切都很好。这与gitk显示的内容兼容,即对所示的三个文件进行修改。

但是现在,如果能够访问每个文件的a_blob和b_blob对象,如何获得这两个blob之间差异的人类可读差异?换句话说,我想重新创建什么gitk节目。

我没有看到与此相关的文档中的任何内容。

爱德华

回答

0

我的问题是this stack-overflow question一个变种。

给定斑点,blob.data_stream.read()返回其原始内容,即一个<str>对象上的Python 2和<bytes>对象上的Python 3.

而不是读的微弱api docs for Objects.Blob,一会阅读source code会更好。的确,Objects.Blob是base.IndexObject的一个子类,它继承自base.Object的data_stream属性(不要与object混淆)。

相关问题