A little gitpython recipe to list the paths of all files in a commit:
#!/usr/bin/python3
import git
from pathlib import Path
import sys
def list_paths(root_tree, path=Path(".")):
for blob in root_tree.blobs:
yield path / blob.name
for tree in root_tree.trees:
yield from list_paths(tree, path / tree.name)
repo = git.Repo(".", search_parent_directories=True)
commit = repo.commit(sys.argv[1])
for path in list_paths(commit.tree):
print(path)
It can be a good base, for example, for writing a script that, given two git branches, shows which django migrations are in one and not in the other, without doing any git checkout of the code.