3

私がこれを行う場合:

pip install -e git://github.com/nimbis/django.git#egg=Django-dev

次に、pip はそのリポジトリ ( ) からデフォルトのブランチを取得して1.4.1-patchedインストールします。インストール先の src ディレクトリで確認できます。

cd ~/.virtualenvs/nimbis/src/django
[(1.4.1-patched) ~/.virtualenvs/nimbis/src/django]
$ git log | head -n4
commit a5d7c7b3a2d6a729bf5ede2254b5c75be9da94d7
Author: Lorin Hochstein <...>
Date:   Mon Jul 30 21:44:20 2012 -0400

再度実行すると、HEAD はリモート マスター ブランチと同じになりますが、ブランチ名として 1.4.1 パッチ (デフォルト ブランチ) が使用されます。

$ pip install -e git://github.com/nimbis/django.git#egg=Django-dev
[(1.4.1-patched) lorin@nibbler ~/.virtualenvs/nimbis/src/django]
$ git log | head -n4
commit e567f439bdfc60e16c465220fdaa8ea8a0fae936
Merge: c0748a6 226a3e7
Author: Alex Gaynor <...>
Date:   Sun Jul 29 17:07:55 2012 -0700

必要なブランチを明示的に指定することで問題を解決できますが、なぜ pip はこれを行うのでしょうか?

4

2 に答える 2

2

PIP VersionControl オブジェクト (pip.vcs.VersionControl) は、宛先パスが既に存在するかどうかを check_destination でチェックします。その場合は、取得ではなく更新メソッドを呼び出します。Update hard は、デフォルトでブランチをリセットします。

上記の VersionControl クラスと pip.vcs.git で正確な動作を確認できます。

編集:コードを少し読み間違えました。取得は毎回呼び出されますが、コピー先にリポジトリが既に存在する場合は、クローンの代わりに呼び出された場合に更新します。rev_options のデフォルトは「origin/master」であるため、更新はこのブランチにリセットされます。

これはバグかもしれません!

于 2012-08-06T21:38:24.760 に答える
-1
pip install git+git://github.com/nimbis/django.git@branchorreviwant#egg=Django-dev
于 2012-08-06T21:25:10.123 に答える