<p>pip.vcs.gitは、暗黙的な$ CWDの代わりに--work-treeを使用する必要があります</p>

作成日 2013年08月12日  ·  4コメント  ·  ソース: pypa/pip

Gitバックエンド( pip.vcs.git )は、Gitがリポジトリディレクトリとして$CWDを使用するという事実に依存しています。 問題は、環境変数$GIT_DIR / $GIT_WORK_TREEを使用してそれを上書きできることです。そうすると、 location識別されるリポジトリではなく、常に同じリポジトリが照会されます。

したがって、代わりに$CWDpip.vcs.gitは常に--work-tree指定する必要があります。

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

または、 gitを呼び出す前に、これらの変数の設定を解除することもできます。

vcs auto-locked bug

最も参考になるコメント

私はこの問題を確認することができます、同じ問題はここにあります。

この望ましくない動作をトリガーする実際の例は、gitリポジトリの更新後フック内からpipを実行することです。
フック内では、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フックとして呼び出されるスクリプトで設定されます。

私はこの問題を確認することができます、同じ問題はここにあります。

この望ましくない動作をトリガーする実際の例は、gitリポジトリの更新後フック内からpipを実行することです。
フック内では、GIT_DIRは「。」に設定されます。これにより、pipは、pipによって複製されたリポジトリではなく、そのリポジトリで動作します。

--work-treeを明示的に設定する以外に、別の解決策はGIT_DIR(およびGIT_WORK_TREE)の設定を解除することです。

これに対処するためにPR#4666を投稿しました。 (Travis CIアイコンが失敗を示していても、テストは正常であることに注意してください。最近実行されたTravis CIテストに不安定さが見られます。)

このページは役に立ちましたか?
0 / 5 - 0 評価