我必须遗漏一些非常基本的东西。鉴于此脚本:
public static void addPlayer(/*...*/)
我得到这样的东西:
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))
到目前为止,这么好。这与gitk显示的内容兼容,即对显示的三个文件进行修改。
但是现在,要访问每个文件的a_blob和b_blob对象,我如何获得这两个blob之间差异的人类可读差异?换句话说,我想重新创建gitk显示的内容。
我没有在与此相关的文档中看到任何内容。
爱德华
答案 0 :(得分:0)
我的问题是this stack-overflow question的变体。
给定一个blob,blob.data_stream.read()返回其原始内容,即Python 2上的<str>
对象和Python 3上的<bytes>
对象。
不是阅读虚弱的api docs for Objects.Blob,而是阅读source code会更好。实际上,Objects.Blob是base.IndexObject的子类,它继承base.Object中的data_stream属性(不要与对象混淆)。