2015-02-24 61 views
0

鑑於hexshadirectoryfile是已知的,我怎麼能得到2個特定的文件之間的差異,例如下面將返回兩個版本之間的差異:git的差異hexsha:目錄路徑/文件

irepo.git.diff("93ba8ae12f79e7f90e5ec5217e44ce28624a66d8..d144da4b5f0dff89b918bc88629cb7902150d77c") 

但是,我怎樣才能產生上面兩個版本中包含的<directory>/<file>的差異?

回答

0

你可以使用GitPython的內置diff設施來做到這一點。

import git 
r = git.Repo(path_to_repo) 
diff_index = r.commit(lhs_hexsha).diff(rhs_hexsha, create_patch=True) 
# find all modified paths you are interested in 
for diff_info in diff_index.iter_change_type('M'): 
    if diff_info.a_blob.path == my_path: 
     print(str(diff_info)) 

按照第diffing objects獲取更多信息的鏈接,該diff() call,返回DiffIndex object,或其中所含Diff objects

該示例中引用的a_blob是一個Blob對象,該對象在lhs_hexsha提交處提供對比較文件的讀取訪問權限。還有一個b_blob,它代表在rhs_hexsha提交時的文件狀態。

+0

:拜拜。你會如此善良,請用簡單的話來描述「a_blob」是什麼? – iamsterdam 2015-02-24 17:47:42

+0

答案已更新,以通知有關斑點以及。 – Byron 2015-02-24 18:50:20

+0

:謝謝。有用。 – iamsterdam 2015-02-25 08:49:15