gpt4 book ai didi

python - 为什么 pip install -e git-repo 在第二次调用时将 HEAD 更改为 master

转载 作者:太空狗 更新时间:2023-10-29 14:20:47 24 4
gpt4 key购买 nike

如果我这样做:

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 将与远程 master 分支相同,尽管它仍然使用 1.4.1-patched(默认分支)作为分支名称。

$ 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 会这样做?

最佳答案

如果目标路径已经存在,PIP 版本控制对象 (pip.vcs.VersionControl) 会检查 check_destination。如果是这样,它调用更新方法而不是获取。默认情况下更新硬重置分支。

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

编辑:有 pip 误读代码。每次都会调用获取,但如果存储库已存在于目标位置,则调用更新而不是克隆。由于 rev_options 默认为“origin/master”,更新重置到这个分支。

这很可能是一个错误!

关于python - 为什么 pip install -e git-repo 在第二次调用时将 HEAD 更改为 master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com