<p>pip.vcs.git sollte --work-tree anstelle von implizitem $CWD verwenden</p>

Erstellt am 12. Aug. 2013  ·  4Kommentare  ·  Quelle: pypa/pip

Das Git-Backend ( pip.vcs.git ) beruht darauf, dass Git $CWD als Repository-Verzeichnis verwendet. Das Problem ist, dass die Umgebungsvariablen $GIT_DIR / $GIT_WORK_TREE verwendet werden können, um das zu überschreiben, und dann wird immer das gleiche Repository abgefragt, anstatt das in location .

Statt $CWD sollte pip.vcs.git immer --work-tree angeben.

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

Alternativ könnte es diese Variablen einfach aufheben, bevor git .

vcs auto-locked bug

Hilfreichster Kommentar

Ich kann dieses Problem bestätigen, gleiches Problem hier.

Ein reales Beispiel, das dieses unerwünschte Verhalten auslöst, ist das Ausführen von pip aus dem Post-Update-Hook eines Git-Repositorys.
Innerhalb des Hooks wird GIT_DIR auf '.' gesetzt, was bewirkt, dass pip auf genau diesem Repository arbeitet, anstatt auf dem von pip geklonten Repository.

Neben dem expliziten Setzen von --work-tree wäre eine andere Lösung das Aufheben von GIT_DIR (und GIT_WORK_TREE).

Alle 4 Kommentare

Könnten Sie einen Testfall bereitstellen, der zeigt, wo genau pip fehlschlägt?

Aufstellen:

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

Scheitern:

$ 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 wird beispielsweise in Skripten gesetzt, die als Git-Hooks aufgerufen werden.

Ich kann dieses Problem bestätigen, gleiches Problem hier.

Ein reales Beispiel, das dieses unerwünschte Verhalten auslöst, ist das Ausführen von pip aus dem Post-Update-Hook eines Git-Repositorys.
Innerhalb des Hooks wird GIT_DIR auf '.' gesetzt, was bewirkt, dass pip auf genau diesem Repository arbeitet, anstatt auf dem von pip geklonten Repository.

Neben dem expliziten Setzen von --work-tree wäre eine andere Lösung das Aufheben von GIT_DIR (und GIT_WORK_TREE).

Ich habe PR #4666 gepostet, um dies zu beheben. (Beachten Sie, dass die Tests in Ordnung sind, auch wenn das Travis CI-Symbol einen Fehler anzeigt. In letzter Zeit scheint es bei den Travis CI-Testläufen zu Ausbrüchen zu geben.)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen