【问题标题】:Get git commit number and date when install from pip从 pip 安装时获取 git 提交号和日期
【发布时间】:2018-04-22 23:08:16
【问题描述】:

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

【问题讨论】:

标签: python git pip


【解决方案1】:

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

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

【讨论】:

  • 问题是关于pip,它克隆了一个 repo,从中安装一个包并删除 repo。在 repo 消失后很难运行 git 命令。
  • 顺便说一句,git log HEAD~1..HEAD 可以更好地拼写为git show
  • @phd 可以使用 pip 安装直接从 github 克隆的包。它不一定总是删除回购。 git showgit log 不一样,我想如果作者接受它,他会在答案中找到一些用处。尽管如此,分数还是不错的。
  • 大概意思是git log -1,即:git log -1 --format="%h %ad"
【解决方案2】:

如果您以可编辑方式 (-e git+...) 安装,则可以使用 git cli 直接查询信息。

例如:

$ 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 修订历史记录将无法访问。

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 2022-01-17
    • 2018-01-22
    • 2011-04-18
    • 2014-10-23
    • 2013-12-04
    相关资源
    最近更新 更多