从 git 安装 pip 包时,如何知道使用了哪个提交? [英] How can I know which commit was used when installing a pip package from git?

查看:18
本文介绍了从 git 安装 pip 包时,如何知道使用了哪个提交?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

If I install a package from git using https://pip.pypa.io/en/stable/reference/pip_install/#git does the specific commit that was checked out logged somewhere?

推荐答案

您可以使用 knittl 的想法找到最近的commit -- 下面唯一的修改是为了解决您将 git 树与已安装的包而不是 git 存储库进行比较的事实:

You could use knittl's idea to find the nearest commit -- the only modification below is to address the fact that you are comparing the git tree to an installed package, not a git repository:

由于安装的包可能缺少一些git的目录结构存储库,为 git 存储库创建一个新目录.我将以 html5lib 为例:

Since the installed package may lack some of the directory structure of the git repository, make a new directory for the git repo. I'll use html5lib for an example:

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

现在获取 git 树:

Now fetch the git tree:

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

将安装好的包复制到git仓库中:

Copy the installed package into the git repo:

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

运行 git diff 将 repo 的当前状态(与已安装包的代码)与 git 树中的每个修订版进行比较:

Run git diff to compare the current state of the repo (with the installed package's code) to each revision in the git tree:

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

这按更改的文件数、插入数和删除数排序.输出将如下所示:

This sorts by the number of files changed, then the number of insertions, then deletions. The output will look something like this:

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.

The last item on each line is the associated git commit.

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

If the git history is very long you'll want to modify git rev-list --all to a range of commits. For example, use git rev-list tag1..tag2 to search between two tags. If you know approximately when the package was installed, you might have a good guess for what tags to use. Use git tag to show the names of the possible tags. See the docs for more options.

这篇关于从 git 安装 pip 包时,如何知道使用了哪个提交?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆