从 git 安装 pip 包时,如何知道使用了哪个提交? [英] How can I know which commit was used when installing a pip package from git?
问题描述
如果我使用 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屋!