Mercurial Scripting mit Python

Ich versuche, die mercurial-Revisionsnummer / -ID (es ist ein Hash, keine Zahl) programmgesteuert in Python abzurufen.

Der Grund ist, dass ich es wie folgt zu den CSS / JS-Dateien auf unserer Website hinzufügen möchte:

<link rel="stylesheet" href="example.css?{% mercurial_revision "example.css" %}" />

Wenn das Stylesheet geändert wird, erhält es eine neue URL und verwendet die alte zwischengespeicherte Version nicht mehr.

ODE Wenn Sie wissen, wo Sie gute Dokumentation für das mercurial finden könnenpython module, das wäre auch hilfreich. Ich kann es nirgendwo finden.

Meine Lösun

Ich habe letztendlich einen Unterprozess verwendet, um nur einen Befehl auszuführen, der den hg-Knoten abruft. Ich habe mich für diese Lösung entschieden, da die API nicht unbedingt dieselbe bleibt, die Bash-Oberfläche jedoch wahrscheinlich:

import subprocess

def get_hg_rev(file_path):
    pipe = subprocess.Popen(
        ["hg", "log", "-l", "1", "--template", "{node}", file_path],
        stdout=subprocess.PIPE
        )
    return pipe.stdout.read()

Beispiel verwenden:

> path_to_file = "/home/jim/workspace/lgr/pinax/projects/lgr/site_media/base.css"
> get_hg_rev(path_to_file)
'0ed525cf38a7b7f4f1321763d964a39327db97c4'

Antworten auf die Frage(7)

Ihre Antwort auf die Frage