2015-02-24 2 views
0

Учитывая, что hexsha, directory и file известны, как я могу получить различия между 2 отдельными файлами, например, следующий будет возвращать диф между 2 пересмотрами:мерзавца дифф hexsha: DirectoryPath/файл

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

Но, как я могу произвести разницу <directory>/<file>, включенную в обе версии выше?

ответ

0

Вы можете использовать встроенные средства развязки GitPython для этого.

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

+0

ответ был обновлен, чтобы сообщить о блобах. – Byron

+0

: спасибо. оно работает. – iamsterdam

Смежные вопросы