2012-08-06 149 views
2

什么时候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能做到这一点?

回答

2

PIP VersionControl对象(pip.vcs.VersionControl)在check_destination中检查目标路径是否已经存在。如果是这样,它会调用update方法而不是获取。更新硬重置每个默认的分支。

您可以在上面引用的VersionControl类和pip.vcs.git中看到确切的行为。

编辑:误读了一下代码。每次都调用获取,但是如果存储库已经存在于目标中,则更新(如果调用而不是克隆)。由于rev_options默认为“origin/master”,因此update会重置为此分支。

这很好,可能是一个错误!

-1
pip install git+git://github.com/nimbis/[email protected]#egg=Django-dev 
+0

是的,我知道这将解决我的问题,但我问为什么点子这样的行为。 – 2012-08-06 21:36:30

+2

对不起,我误解了你的问题。我认为这是“我可以做到...但是我怎么做?”。 – starenka 2012-08-06 21:41:26

相关问题