鉴于已知hexsha
,directory
和file
,如何获取2个特定文件之间的差异,例如以下将返回2个修订版之间的差异:
irepo.git.diff("93ba8ae12f79e7f90e5ec5217e44ce28624a66d8..d144da4b5f0dff89b918bc88629cb7902150d77c")
但是,我怎样才能产生上述两个版本中包含的<directory>/<file>
的差异?
答案 0 :(得分: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
处提交时文件的状态。