<p>pip.vcs.git doit utiliser --work-tree au lieu de $CWD implicite</p>

Créé le 12 août 2013  ·  4Commentaires  ·  Source: pypa/pip

Le backend Git ( pip.vcs.git ) repose sur le fait que Git utilise $CWD comme répertoire de référentiel. Le problème est que les variables d'environnement $GIT_DIR / $GIT_WORK_TREE peuvent être utilisées pour écraser cela, et alors toujours le même référentiel sera interrogé au lieu de celui identifié dans location .

Donc à la place $CWD , pip.vcs.git devrait toujours spécifier --work-tree .

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

Alternativement, il pourrait simplement désactiver ces variables avant d'appeler git .

vcs auto-locked bug

Commentaire le plus utile

Je peux confirmer ce problème, même problème ici.

Un exemple réel déclenchant ce comportement indésirable est l'exécution de pip depuis le hook post-mise à jour d'un référentiel git.
À l'intérieur du hook, GIT_DIR sera défini sur '.', ce qui fait que pip fonctionne sur ce même référentiel au lieu de sur le référentiel cloné par pip.

Outre la définition explicite de --work-tree, une autre solution consisterait à désactiver GIT_DIR (et GIT_WORK_TREE).

Tous les 4 commentaires

Pourriez-vous fournir un cas de test qui démontre où pip échoue exactement ?

Installer:

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

Échouer:

$ 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 sera défini par exemple dans les scripts invoqués en tant que hooks Git.

Je peux confirmer ce problème, même problème ici.

Un exemple réel déclenchant ce comportement indésirable est l'exécution de pip depuis le hook post-mise à jour d'un référentiel git.
À l'intérieur du hook, GIT_DIR sera défini sur '.', ce qui fait que pip fonctionne sur ce même référentiel au lieu de sur le référentiel cloné par pip.

Outre la définition explicite de --work-tree, une autre solution consisterait à désactiver GIT_DIR (et GIT_WORK_TREE).

J'ai posté PR #4666 pour résoudre ce problème. (Notez que les tests sont corrects même si l'icône Travis CI indique un échec. Il semble y avoir des flocons dans les tests Travis CI ces derniers temps.)

Cette page vous a été utile?
0 / 5 - 0 notes