从pip安装时获取git提交编号和日期

3

在pip中从GitHub安装软件包,是否可以获取我正在安装的提交版本和日期?(这可能对调试和测试控制有用)。


2个回答

3
如果您以可编辑的方式进行安装(-e git+...),则可以使用 git 命令行直接查询信息。
例如:
$ pip install -e 'git+https://github.com/pre-commit/pre-commit#egg=pre-commit'
...
$ python
...
>>> import os
>>> import subprocess
>>> import pre_commit
>>> pre_commit.__file__
'/tmp/test/venv/src/pre-commit/pre_commit/__init__.py'
>>> subprocess.check_output(('git', '-C', os.path.dirname(pre_commit.__file__), 'log', '-1', '--format=%H %cd'))
b'834ed0f229a39c986b241374f6d338632e003b5f Sat Mar 17 20:40:02 2018 -0700\n'

这种做法利用了git仓库以"可编辑"方式安装时,pip会克隆并将其保存在$PREFIX/src(例如我的情况是./venv/src)的事实。请注意,如果没有使用--editable,pip将仅临时克隆仓库,而git修订历史记录将无法访问。

2

如果您下载了任何类型的Git项目,您可以使用Git命令查看历史记录。例如,git log HEAD~1..HEAD将为您提供有关最新提交的信息。如果您只想打印缩写的提交哈希和日期,可以执行类似以下的操作:

git log HEAD~1..HEAD --format="%h %ad"

2
这个问题涉及到[tag:pip],它克隆了一个仓库,从中安装了一个包并删除了该仓库。在该仓库被删除后运行git命令会很困难。 - phd
顺便说一句,git log HEAD~1..HEAD 可以更好地拼写为 git show - phd
@phd 你可以使用pip直接从github安装克隆的包。它不一定总是删除repo。"git show"和"git log"不是相同的东西,我想作者在答案中找到了一些用处,所以他接受了它。尽管如此,这些建议很有价值。 - Conner
可能是指 git log -1,即:git log -1 --format="%h %ad" - Efren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接