2017-06-15 6 views
0

私は本当に基本的なものを紛失しているはずです。 、これまでのところは良いgitpython:gitkのように、人間が判読可能な形式でblob間の差分を表示するにはどうすればよいですか?

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

:私はこのような何かを得る

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が表示するもの、つまり表示されている3つのファイルの変更と互換性があります。

しかし、各ファイルのa_blobオブジェクトとb_blobオブジェクトにアクセスすることで、これらの2つのブロブの違いを人間が判読できるようにするにはどうすればよいですか?言い換えれば、私はgitkが示していることを再現したい。

これに関連するドキュメントには何も表示されません。

エドワード

答えて

0

私の質問はthis stack-overflow questionの変形です。ブロブ、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プロパティを継承します(オブジェクトと混同しないでください)。

関連する問題