Este fragment de código funciona en la mayoría de Unix al que tengo acceso (Linux, Solaris, AIX) y también en Windows 7 / Server 2008 R2 y versiones posteriores que utilicé para get el resultado del logging de git:
from subprocess import Popen, PIPE import platform cmd = ["git", "--no-pager"] if platform.system() == "Windows": cmd.append("--work-tree=/path/to/working/copy") cmd.extend(["log", "--pretty=format:\"%cd %h\"", "--date=short", "--", "/path/to/working/copy/filename/to/check"]) proc = Popen(cmd, stdout=PIPE, stderr=PIPE) proc.wait() f = proc.stdout some_stuff = f.read() f.close()
Sin embargo, en Windows XP usando msysgit no estoy obteniendo ningún valor para la variable some_stuff, lo cual es extraño ya que ejecutar el command generado funciona en la línea de command en Windows.
¿Algún consejo sobre qué debería hacer aquí?
Después de investigar un poco, esto es lo que encontré:
git.cmd
lugar de especificar directamente git.exe
. Al probar lo mencionado anteriormente, parece que:
--work-tree
os.path.normpath()
no funcionará, ya que asumirá insensibilidad a mayúsculas y minúsculas y alterará la letra de la unidad.