0

とがわかっている場合hexsha、2 つの特定のファイル間の差分を取得するにはどうすればよいですか。たとえば、次の例では 2 つのリビジョン間の差分が返されます。directoryfile

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

<directory>/<file>しかし、上記の両方のリビジョンに含まれているものの差分を作成するにはどうすればよいですか?

4

1 に答える 1

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))

オブジェクトの比較、diff()呼び出し、返されたDiffIndexオブジェクト、またはそこに含まれるDiffオブジェクトの詳細については、リンクをたどってください。

このa_blob例で参照されている は、Blobでのコミット時に比較対象のファイルへの読み取りアクセスを提供するオブジェクトlhs_hexshaです。b_blobコミット時のファイルの状態を表す もありますrhs_hexsha

于 2015-02-24T13:39:18.010 に答える