Получить текущий хэш git в скрипте Python

Я хотел бы включить текущий хэш git в вывод скрипта Python (как номер версии кода, который сгенерировал этот вывод).

Как я могу получить доступ к текущему хэшу git в моем скрипте Python?

4 ответов


на git describe команда является хорошим способом создания человека презентабельный "номер версии" кода. Из примеров в документации:

С чем-то вроде git.git текущее дерево, я получаю:

[torvalds@g5 git]$ git describe parent
v1.0.4-14-g2414721

т. е. текущий руководитель моей" родительской " ветви основан на v1.0.4, но поскольку у него есть несколько коммитов поверх этого, describe добавил количество дополнительных коммитов ("14") и сокращенное имя объекта для самого коммита ("2414721") в конце.

изнутри Python вы можете сделать что-то вроде следующего:

import subprocess
label = subprocess.check_output(["git", "describe"]).strip()

этот пост содержит команду, ответ Грега содержит команду подпроцесса.

import subprocess

def get_git_revision_hash():
    return subprocess.check_output(['git', 'rev-parse', 'HEAD'])

def get_git_revision_short_hash():
    return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'])

нет необходимости взломать вокруг получения данных из


numpy в виде Multi-платформы рутинную в своем setup.py:

import os
import subprocess

# Return the git revision as a string
def git_version():
    def _minimal_ext_cmd(cmd):
        # construct minimal environment
        env = {}
        for k in ['SYSTEMROOT', 'PATH']:
            v = os.environ.get(k)
            if v is not None:
                env[k] = v
        # LANGUAGE is used on win32
        env['LANGUAGE'] = 'C'
        env['LANG'] = 'C'
        env['LC_ALL'] = 'C'
        out = subprocess.Popen(cmd, stdout = subprocess.PIPE, env=env).communicate()[0]
        return out

    try:
        out = _minimal_ext_cmd(['git', 'rev-parse', 'HEAD'])
        GIT_REVISION = out.strip().decode('ascii')
    except OSError:
        GIT_REVISION = "Unknown"

    return GIT_REVISION