¿Cómo get una list de files por etapas para la confirmación? (paths completos)

Estoy tratando de get la list de files por etapas para el siguiente compromiso. Quiero su ruta completa basada en el directory base del repository.

¿Cómo hago eso en Python, con o incluso mejor, sin el module gitpython?

Tengo un comienzo

repo = git.Repo() staged_files = repo.index.diff("HEAD") 

pero no puedo acceder a su path.

Ok encontré 2 forms de hacerlo:

Usando gitpython:

 repo = git.Repo() staged_files = repo.index.diff("HEAD") for x in staged_files: print(x.a_path) # Here we can use a_path or b_path, I do not know the difference... 

Sin gitpython:

 import subprocess subprocess.getoutput(['git diff --name-only --cached']) 

Y aún mejor :

 import subprocess proc = subprocess.Popen(['git', 'diff', '--name-only', '--cached'], stdout=subprocess.PIPE) staged_files = proc.stdout.readlines() staged_files = [f.decode('utf-8') for f in staged_files] staged_files = [f.strip() for f in staged_files] print(staged_files)