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
を呼び出す前に、これらの変数の設定を解除することもできます。
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テストに不安定さが見られます。)
最も参考になるコメント
私はこの問題を確認することができます、同じ問題はここにあります。
この望ましくない動作をトリガーする実際の例は、gitリポジトリの更新後フック内からpipを実行することです。
フック内では、GIT_DIRは「。」に設定されます。これにより、pipは、pipによって複製されたリポジトリではなく、そのリポジトリで動作します。
--work-treeを明示的に設定する以外に、別の解決策はGIT_DIR(およびGIT_WORK_TREE)の設定を解除することです。