<p>pip.vcs.git debe usar --work-tree en lugar de $ CWD implícito</p>

Creado en 12 ago. 2013  ·  4Comentarios  ·  Fuente: pypa/pip

El backend de Git ( pip.vcs.git ) se basa en el hecho de que Git usa $CWD como directorio del repositorio. El problema es que las variables de entorno $GIT_DIR / $GIT_WORK_TREE pueden usarse para sobrescribir eso, y luego siempre se consultará el mismo repositorio en lugar del identificado en location .

Entonces, en lugar de $CWD , pip.vcs.git siempre debe especificar --work-tree .

http://git-scm.com/blog/2010/04/11/environment.html

Alternativamente, podría simplemente desarmar esas variables antes de invocar git .

vcs auto-locked bug

Comentario más útil

Puedo confirmar este problema, el mismo problema aquí.

Un ejemplo del mundo real que desencadena este comportamiento no deseado es ejecutar pip desde el interior del enlace posterior a la actualización de un repositorio de git.
Dentro del gancho, GIT_DIR se establecerá en '.', Lo que hace que pip opere en ese mismo repositorio en lugar de en el repositorio clonado por pip.

Además de configurar --work-tree explícitamente, otra solución sería desarmar GIT_DIR (y GIT_WORK_TREE).

Todos 4 comentarios

¿Podría proporcionar un caso de prueba que demuestre dónde falla exactamente pip?

Configuración:

$ mkvirtualenv pip-test
$ pip install -e [email protected]:jkbr/httpie.git#egg=httpie

Fallar:

$ GIT_DIR=/foo pip freeze
Error when trying to get requirement for VCS system Command /usr/local/bin/git config remote.origin.url failed with error code 1 in /Users/jakub/.virtualenvs/pip-test/src/httpie, falling back to uneditable format
Could not determine repository location of ~/.virtualenvs/pip-test/src/httpie
Pygments==1.6
## !! Could not determine repository location
httpie==0.6.0
requests==1.2.3
wsgiref==0.1.2

GIT_DIR se establecerá, por ejemplo, en scripts invocados como ganchos de Git.

Puedo confirmar este problema, el mismo problema aquí.

Un ejemplo del mundo real que desencadena este comportamiento no deseado es ejecutar pip desde el interior del enlace posterior a la actualización de un repositorio de git.
Dentro del gancho, GIT_DIR se establecerá en '.', Lo que hace que pip opere en ese mismo repositorio en lugar de en el repositorio clonado por pip.

Además de configurar --work-tree explícitamente, otra solución sería desarmar GIT_DIR (y GIT_WORK_TREE).

Publiqué PR # 4666 para abordar esto. (Tenga en cuenta que las pruebas están bien a pesar de que el icono de Travis CI muestra una falla. Parece que últimamente hay escamas en las pruebas de Travis CI).

¿Fue útil esta página
0 / 5 - 0 calificaciones