为什么叫第二次
问题描述:
什么时候PIP安装-e git的回购变化头主如果我这样做:为什么叫第二次
pip install -e git://github.com/nimbis/django.git#egg=Django-dev
然后点子将从该库(1.4.1-patched
)抢默认分支并安装它,
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
如果我再这样做,头变为与远程主分支,尽管它仍然使用1.4.1打补丁(默认分支)为:你可以在它的安装src目录下看到分支名称。
$ pip install -e git://github.com/nimbis/django.git#egg=Django-dev
[(1.4.1-patched) [email protected] ~/.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能做到这一点?
答
PIP VersionControl对象(pip.vcs.VersionControl)在check_destination中检查目标路径是否已经存在。如果是这样,它会调用update方法而不是获取。更新硬重置每个默认的分支。
您可以在上面引用的VersionControl类和pip.vcs.git中看到确切的行为。
编辑:误读了一下代码。每次都调用获取,但是如果存储库已经存在于目标中,则更新(如果调用而不是克隆)。由于rev_options默认为“origin/master”,因此update会重置为此分支。
这很好,可能是一个错误!
是的,我知道这将解决我的问题,但我问为什么点子这样的行为。 – 2012-08-06 21:36:30
对不起,我误解了你的问题。我认为这是“我可以做到...但是我怎么做?”。 – starenka 2012-08-06 21:41:26