2012-08-06 142 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

相關問題