<p>pip.vcs.git должен использовать --work-tree вместо неявного $ CWD</p>

Созданный на 12 авг. 2013  ·  4Комментарии  ·  Источник: pypa/pip

Бэкэнд Git ( pip.vcs.git ) полагается на тот факт, что Git использует $CWD в качестве каталога репозитория. Проблема в том, что переменные среды $GIT_DIR / $GIT_WORK_TREE могут быть использованы для перезаписи этого, и тогда всегда будет запрашиваться один и тот же репозиторий вместо того, который указан в location .

Поэтому вместо $CWD , pip.vcs.git всегда следует указывать --work-tree .

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

В качестве альтернативы, он может просто сбросить эти переменные перед вызовом git .

vcs auto-locked bug

Самый полезный комментарий

Я могу подтвердить эту проблему, здесь та же проблема.

Реальный пример, запускающий это нежелательное поведение, - это запуск pip изнутри обработчика post-update репозитория git.
Внутри хука GIT_DIR будет установлен в '.', Что заставит pip работать с этим самым репозиторием, а не с репозиторием, клонированным pip.

Помимо явной установки --work-tree, другим решением может быть отключение GIT_DIR (и GIT_WORK_TREE).

Все 4 Комментарий

Не могли бы вы предоставить тестовый пример, демонстрирующий, где именно pip терпит неудачу?

Настраивать:

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

Неудача:

$ 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 будет установлен, например, в скриптах, вызываемых как хуки Git.

Я могу подтвердить эту проблему, здесь та же проблема.

Реальный пример, запускающий это нежелательное поведение, - это запуск pip изнутри обработчика post-update репозитория git.
Внутри хука GIT_DIR будет установлен в '.', Что заставит pip работать с этим самым репозиторием, а не с репозиторием, клонированным pip.

Помимо явной установки --work-tree, другим решением может быть отключение GIT_DIR (и GIT_WORK_TREE).

Я разместил PR № 4666, чтобы решить эту проблему. (Обратите внимание, что с тестами все в порядке, даже если значок Travis CI показывает сбой. В последнее время, похоже, наблюдается нестабильность в тестах Travis CI.)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги