git show / log sin secuencias de escape de shell, para usar con python sh

Estoy usando sh de python para ejecutar comandos de git. Por ejemplo, hago cosas como

import sh
git = sh.git.bake(_cwd='/some/dir/')

project_hash = git('rev-parse', 'HEAD').stdout.strip()
project_branch = git('rev-parse', '--abbrev-ref', 'HEAD').stdout.strip()
project_date = git('log', '-1', '--pretty=format:%ci').stdout.strip()

y luego escribo project_hash, project_branch y project_date en una base de datos, etc.

El problema es que git a veces agrega secuencias de escape de shell a su salida. Por ejemplo,

print(repr(project_hash))
print(repr(project_branch))
print(repr(project_date))

lleva a

'e55595222076bd90b29e184b6ff6ad66ec8c3a03'
'master'
'\x1b[?1h\x1b=\r2012-03-26 01:07:40 -0500\x1b[m\r\n\r\x1b[K\x1b[?1l\x1b>'

Las primeras dos cadenas no son un problema, pero la última, la fecha, tiene secuencias de escape.

¿Hay alguna manera de deshacerme de estos, por ejemplo? pidiendo a git que no produzca ninguna secuencia de escape?

He probado la opción "--no-color" con el comando git log. Eso no ayudó.

También me encantaría desnudarlos en Python, pero no sé cómo. Intenté s.encode ('ascii') donde s es la cadena de fecha. Eso no hizo una diferencia.

Imprimir stdout en Python sin secuencias de escape de shell aborda el mismo tema. La recomendación es usar el subproceso de python en lugar de sh. Por ejemplo, podría hacer

project_date = subprocess.check_output(["git", "log", "-1", "--pretty=format:%ci"], cwd='/some/dir/')

y

print(repr(project_date))

da

'2012-03-26 01:07:40 -0500'

Eso es lo que quiero, claro. Sin embargo, si es posible, preferiría seguir con sh, y me gustaría saber si puedo evitar las secuencias de escape usando sh.

¿Alguna sugerencia?

Respuestas a la pregunta(2)

Su respuesta a la pregunta