<p>pip.vcs.git deve usar --work-tree em vez de $ CWD implícito</p>

Criado em 12 ago. 2013  ·  4Comentários  ·  Fonte: pypa/pip

O backend Git ( pip.vcs.git ) depende do fato de que o Git usa $CWD como o diretório do repositório. O problema é que as variáveis ​​de ambiente $GIT_DIR / $GIT_WORK_TREE podem ser usadas para sobrescrever isso, e então sempre o mesmo repositório será consultado ao invés do identificado em location .

Portanto, em vez de $CWD , pip.vcs.git deve sempre especificar --work-tree .

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

Alternativamente, ele poderia simplesmente remover a definição dessas variáveis ​​antes de invocar git .

vcs auto-locked bug

Comentários muito úteis

Posso confirmar esse problema, mesmo problema aqui.

Um exemplo do mundo real que aciona esse comportamento indesejado é a execução de pip de dentro de um gancho pós-atualização do repositório git.
Dentro do gancho, GIT_DIR será definido como '.', O que faz com que pip opere naquele mesmo repositório em vez de no repositório clonado por pip.

Além de configurar --work-tree explicitamente, outra solução seria desconfigurar GIT_DIR (e GIT_WORK_TREE).

Todos 4 comentários

Você poderia fornecer um caso de teste que demonstrasse onde o pip falha exatamente?

Configurar:

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

Falhou:

$ 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 será definido, por exemplo, em scripts invocados como ganchos Git.

Posso confirmar esse problema, mesmo problema aqui.

Um exemplo do mundo real que aciona esse comportamento indesejado é a execução de pip de dentro de um gancho pós-atualização do repositório git.
Dentro do gancho, GIT_DIR será definido como '.', O que faz com que pip opere naquele mesmo repositório em vez de no repositório clonado por pip.

Além de configurar --work-tree explicitamente, outra solução seria desconfigurar GIT_DIR (e GIT_WORK_TREE).

Publiquei PR # 4666 para resolver isso. (Observe que os testes estão bem, embora o ícone do Travis CI mostre falha. Parece haver instabilidade nas execuções de teste do Travis CI recentemente.)

Esta página foi útil?
0 / 5 - 0 avaliações