2017-06-15 47 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混淆)。

相關問題