当前位置: 首页 > 面试题库 >

如何从git安装pip包时知道使用了哪个提交?

席兴朝
2023-03-14
问题内容

如果我使用https://pip.pypa.io/en/stable/reference/pip_install/#git从git安装软件包,
那么签出的特定提交是否记录在某处?


问题答案:

您可以使用knittl的想法来查找最接近的提交-
以下唯一的修改是解决将git树与已安装的软件包而不是git存储库进行比较的事实:

由于安装的软件包可能缺少git存储库的某些目录结构,因此请为git repo创建一个新目录。我将html5lib举一个例子:

mkdir ~/tmp/html5lib
cd ~/tmp/html5lib/
git init

现在获取git树:

git remote add foreign https://github.com/html5lib/html5lib-python
git fetch foreign

将已安装的软件包复制到git repo中:

rsync -a ~/.virtualenvs/muffy/lib/python3.4/site-packages/html5lib ~/tmp/html5lib/

运行git diff以将仓库的当前状态(以及已安装的软件包的代码)与git树中的每个修订进行比较:

for REV in $(git rev-list --all); do
    echo $(git diff --shortstat foreign/master $REV) $REV ;
done | sort -n

按文件更改的数量,插入的数量,删除的数量排序。输出将如下所示:

1 file changed, 3 insertions(+), 1 deletion(-) 17499b9763a090f7715af49555d21fe4b558958b
2 files changed, 10 insertions(+), 8 deletions(-) ec674a97243e76da43f06abfd0a891308f1ff801
3 files changed, 17 insertions(+), 12 deletions(-) 1a28d721091a2c433c6e8471d14cbb75afd70d1c
4 files changed, 18 insertions(+), 13 deletions(-) ff6111cd82191a2eb963d6d662c6da8fa2e7ddde
6 files changed, 19 insertions(+), 19 deletions(-) ea0fafdbff732b1272140b696d6948054ed1d6d2

每行的最后一项是关联的git commit。

如果git历史记录很长,您将需要修改git rev-list --all为一系列提交。例如,用于git rev-list tag1..tag2在两个标签之间搜索。如果您大概知道该软件包的安装时间,则可能会对要使用的标签有一个很好的猜测。使用git tag以显示可能的变量的名称。有关更多选项,请参阅文档。



 类似资料:
  • 问题内容: 使用pip,可以确定当前安装了哪个版本的软件包? 我知道,但是我想知道是否有类似的东西。如果不是,最好的方法就是告诉我当前使用的版本。 问题答案: 从pip 1.3开始,有一个命令。 在旧版本,并应做的工作很好。

  • 我试图在Windows7中为Python3.4安装一个图表工具(Matplotlib-V1.4.2),但到目前为止,我的所有尝试似乎都无法完成这一工作。 尝试: 我已从GitHub下载了pip -不使用 这里有一个类似的问题,我也尝试了这些建议,但我得到了以下错误 我肯定我错过了什么,你的一步一步的指导在这方面将非常感谢。

  • 问题内容: 我在Linux Ubuntu服务器中搜索php.ini文件所在的路径,并且在执行命令时发现很多php.ini 。那么如何从php.ini所在的php脚本网页中确切地知道呢? 问题答案: 您可以使用php_ini_loaded_file() 取自php.net: 您可能还需要检查php_ini_scanned_files() 另外,您应该注意,如果从CLI运行PHP脚本,则有可能使用与服

  • 我有一个管道Jenkins作业,它按预期工作,配置了“GitHub hook trigger for GITScm polling”选项,以便在任何推送到git存储库时自动构建。 我已经将这个Jenkins URL与多个git回购挂钩,比如< code>repo-A、< code>repo-B、< code>repo-B。< br> Jenkins作业在任何代码推送至这些回购时自动触发。 但是我想

  • 尝试安装回购的特定分支。谷歌让我这么做 分支的名称是,所以我做了,但它返回404。 如何安装此分支?

  • 问题内容: 我想用pip安装git pull请求以在本地virtualenv中进行测试。我想直接从github安装它,而不创建本地git存储库。 问题答案: 您可以通过附加哈希将确切的提交添加到URL: 例: 或一次提交。但是,如果拉取请求(远程分支)已更新,则不会更新: