2011-03-14 14 views
5

He intentado importar una ruta de acceso de depósito p4 a git utilizando la secuencia de comandos python git-p4. Después de configurar mi entorno (Git 1.7.1, Python 2.7, Windwos XP, las variables p4 env) que trató de correr la secuencia de comandos git-p4, geetting la siguiente ouptut:no se ha podido importar con git-p4 en Windows

F:\gitp4>c:\Python27\python.exe git-p4.py clone --destination=master //depot/quake/main/[email protected] 
Reading pipe: git config git-p4.syncFromOrigin 
Importing from //depot/quake/main/[email protected] into master 
Initialized empty Git repository in F:/gitp4/master/.git/ 
Traceback (most recent call last): 
    File "git-p4.py", line 1926, in <module> 
    main() 
    File "git-p4.py", line 1921, in main 
    if not cmd.run(args): 
    File "git-p4.py", line 1798, in run 
    if not P4Sync.run(self, depotPaths): 
    File "git-p4.py", line 1501, in run 
    self.hasOrigin = originP4BranchesExist() 
    File "git-p4.py", line 439, in originP4BranchesExist 
    return gitBranchExists("origin") or gitBranchExists("origin/p4") or gitBranchExists("origin/p4/master") 
    File "git-p4.py", line 332, in gitBranchExists 
    stderr=subprocess.PIPE, stdout=subprocess.PIPE); 
    File "c:\Python27\lib\subprocess.py", line 672, in __init__ 
    errread, errwrite) 
    File "c:\Python27\lib\subprocess.py", line 882, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 

¿Alguien sabe lo que está pasando ¿aquí? Si intento ejecutar el comando git que indica la línea # 332 (origen de git rev-parse) desde el shell de línea de comando, el comando se ejecuta correctamente.

Gracias.

Actualización: Parece que la secuencia de comandos no puede iniciar ningún proceso cuyo archivo exec no se encuentre en la ruta de ejecución. Creo que es un problema de inicialización con el pitón en ventanas ...

+0

Parece que el uso de subprocess.Popen (["git"] ...) ignora la variable PATH. Tengo una solución, que es llamar a un archivo por lotes de ruta completa que llama al archivo git exec – Tate

+0

Gracias, esto funcionó para mí. – Kevin

+0

¿Podría aclarar qué hizo exactamente, no puedo hacer que funcione? – Restuta

Respuesta

3

En respuesta al comentario de Restuta:

  1. He creado un archivo por lotes para llamar "git.cmd" archivo Exec en una costumbre camino. Contenido de mi archivo por lotes:
    @ "C: \ Archivos de programa \ Git \ cmd \ git.cmd" % *

  2. He modificado el archivo git-p4.py para llamar a ese archivo por lotes en lugar de sólo "git".
    Por ejemplo. (Línea 2237) línea Original: init_cmd = [ "git", "init"]
    Reemplazar con: init_cmd = [ "PATH_TO_BATCH_FILE \ git.bat", "init"]
    Ej:
    init_cmd = [ "f: \ gitp4 \ git.bat", "init"]

  3. hacer lo mismo para todas las llamadas Git en el archivo (subprocess.Popen llama) (tengo un total de 6 cambios)

¡Espero eso ayude!

Cuestiones relacionadas