2016-11-01 1 views
0

Ich bin seit 2 Tagen fest, versucht, ein kleines Skript für die automatische Bereitstellung einzurichten. Die Sache ist: Ich benutze Git seit einigen Monaten, aber ich habe es immer nur lokal verwendet, nur um den Code einfach zu speichern. Alles gut bis hier.Git push-to-deploy Post-receive Python-Skript kann nicht festlegen env var

Jetzt muss ich einen Weg finden, den Code zu veröffentlichen, sobald neue Funktionalitäten implementiert sind und ich denke, dass der Code stabil genug ist. Suchen herum Ich habe diese "Hooks" entdeckt, die Skripte sind, die von Git in bestimmten Situationen ausgeführt werden. Grundsätzlich besteht die Idee darin, meinen Master-Zweig mit meinem veröffentlichten Code zu synchronisieren, so dass jedes Mal, wenn ich einen Zweig mit dem Master zusammenfüge und "pushe", die Dateien automatisch in den Ordner/my/published/kopiert werden.

Das sagte, ich habe this tutorial gefunden, die erklärt, genau das zu tun, was ich will mit einem 'Hooks' Post-Receive-Skript, das in Ruby geschrieben ist. Da ich in meinem Studio Ruby zu diesem Zeitpunkt nicht verwenden möchte und möchte, habe ich eine Python version desselben Skripts gefunden. Ich habe getestet und getestet, aber ich konnte es nicht funktionieren lassen. Ich bekomme immer den gleichen Fehler:

remote: GIT_WORK_TREE is not recognized as as internal or external command, 

Betrachten Sie dies basiert auf dem Tutorial, das ich oben geteilt habe. Gleicher prj Name, selbe Struktur, etc. Ich installierte sogar Ruby auf meinem persönlichen Laptop und versuchte das ursprüngliche Skript, aber es funktioniert immer noch nicht ...

Ich benutze Windows, und die Git env Variable ist festgelegt und zugänglich. Trotzdem scheint es, als würde es den Befehl GIT_WORK_TREE nicht erkennen. Wenn ich es aus der Git Bash starte, funktioniert es gut, aber wenn ich die Windows Shell benutze bekomme ich die gleiche Fehlermeldung. Ich nehme an, dass, wenn in meinem Py-Skript die Funktion call() verwendet, es den Cmd mit der Windows-Shell ausführt. Das ist meine Vermutung, aber ich weiß nicht wirklich, wie ich es lösen soll. Google hat nicht geholfen, als ob niemand dieses Problem jemals zuvor gehabt hätte. Vielleicht sehe ich hier einfach nichts Offensichtliches, aber ich habe den ganzen Tag damit verbracht und kann nicht mehr aus diesem Sumpf herauskommen!

Weiß jemand, wie man es löst, oder zumindest eine Idee für einen Workaround haben?

Hoffe jemand kann helfen ... Vielen Dank!

+0

Mögliche Duplikat [ ‚git‘ als interner oder externer Befehl nicht erkannt wird] (http://stackoverflow.com/questions/4492979/git-is-not-recognized -als-intern-oder-extern-Befehl) – user6035379

+0

http://stackoverflow.com/questions/15449428/does-the-shell-in-shell-true-in-subprocess-means-bash schlägt vor, das '' zu verwenden ausführbarer Parameter. Ich habe keinen Einblick, ob das unter Windows überhaupt funktioniert. Wenn dies der Fall ist, markieren Sie dies möglicherweise als ein Duplikat dieser Frage. – tripleee

+0

Es ist nicht klar, was ist Ihre Umgebung - wo werden Sie bereitstellen? Zum lokalen Ordner oder zu einem anderen Server? Haben Sie ein Remote-Repository? Wenn nicht - was bedeutet "Push"? – Ivan

Antwort

0

Das Ruby-Skript Sie sprechen, erzeugt "bash" Befehl:

GIT_WORK_TREE=/deploy/path git checkout -f ... 

Es bedeutet: Umgebungsvariable "GIT_WORK_TREE" mit dem Wert "/ deploy/path" definieren und „git checkout -f ausführen .. . " Wie ich verstehe, funktioniert es nicht für die Windows-Befehlszeile. Versuchen Sie, wie etwas zu verwenden:

set GIT_WORK_TREE=c:\temp\deploy && git checkout -f ... 
Verwandte Themen