poner - que es python idle
Obtenga el hash de git actual en una secuencia de comandos de Python (4)
El comando git describe
es una buena forma de crear un "número de versión" presentable para el ser humano del código. De los ejemplos en la documentación:
Con algo así como el árbol actual de git.git, obtengo:
[torvalds@g5 git]$ git describe parent v1.0.4-14-g2414721
es decir, el encabezado actual de mi rama "principal" se basa en v1.0.4, pero dado que tiene algunas confirmaciones además de eso, describe ha agregado el número de confirmaciones adicionales ("14") y un nombre abreviado de objeto para la confirmación sí mismo ("2414721") al final.
Desde dentro de Python, puede hacer algo como lo siguiente:
import subprocess
label = subprocess.check_output(["git", "describe"]).strip()
Me gustaría incluir el hash git actual en el resultado de un script de Python (como el número de versión del código que generó ese resultado).
¿Cómo puedo acceder al hash git actual en mi script de Python?
No es necesario hackear la obtención de datos del comando git
usted mismo. GitPython es una muy buena forma de hacer esto y muchas otras cosas. Incluso tiene soporte de "mejor esfuerzo" para Windows.
Después de pip install gitpython
puedes hacer
import git
repo = git.Repo(search_parent_directories=True)
sha = repo.head.object.hexsha
Esta publicación contiene el comando, la respuesta de Greg contiene el comando de subproceso.
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
tiene una rutina de múltiples plataformas en su 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