2012-05-10 7 views
7

Bevor ich anfange, weiß ich, dass es viele ähnliche Fragen gibt, aber ich habe wirklich Schwierigkeiten, ein prägnantes, sicheres und bestes Verfahren zu finden, da die Rückmeldungen so unterschiedlich sind.Wie machen Sie einen automatischen Git-Pull auf Remote-Server?

Was ich tun möchte: 1) Komplette Arbeit auf meinem lokalen Rechner in einem Entwicklungszweig. 2) Push-Änderungen an Git. Git posten auf eine Webhook-URL und mein Remoteserver zieht automatisch die Änderungen auf einer Entwicklungssite. 3) Sobald die QA-Prüfung durchgeführt wurde und bestätigt wurde, dass sie auf der Entwicklungssite korrekt ist, schieben Sie den Master-Zweig zur Produktions-Site (auf demselben Server wie die Entwicklungs-Site).

Wo ich bin: Ich habe git auf meinem lokalen Rechner und dem Remote-Server installiert. Ich kann Mods in den Entwicklungszweig zu git schieben. Auf dem Remote-Server kann ich die Updates ziehen und es funktioniert wie ein Zauber. Das Problem ist, dass ich den Remote-Server nicht automatisch aktualisieren kann, wenn Änderungen von meinem lokalen Computer übertragen werden.

Meine Fragen sind: 1) Für das Remote-Server-Entwicklungs-Site-Verzeichnis, sollte ich init oder git init --bare git? Ich habe nicht vor, Updates auf dem Server selbst vorzunehmen. Ich möchte, dass mein Entwicklerteam lokal arbeitet und Mods auf den Server überträgt. Ich glaube, ich muss Git-Init verwenden, da der Arbeitsbaum benötigt wird, um einen Remote-Alias ​​für das Git-Repository einzurichten, aber ich wollte bestätigen. 2) Ich bin mir ziemlich sicher, dass der Webhook-Post vom Git-Problem auf Benutzerrechte zurückzuführen ist. Wie kann ich sicher umgehen? Ich habe viele Tutorials gelesen, die vorschlagen, Git-Hook-Dateien zu aktualisieren, aber ich habe das Gefühl, dass das eine drastische Maßnahme ist, als ich es brauche. Ich würde es lieben, wenn der Webhook eine URL treffen könnte, die die Dateien sicher zieht, ohne eine Bootladung Code hinzuzufügen (wenn es möglich ist).

Ich bin von Natur aus ein Webentwickler, also sind git- und sysadmin-Aufgaben im Allgemeinen der Fluch meiner Existenz. Ich weiß, dass diese Frage ähnlich ist wie bei anderen, aber ich muss noch einen umfassenden, prägnanten, sicheren und logischsten Ansatz finden, um das Problem zu lösen. Ich bin ca. 16 Stunden dabei und habe offiziell den Punkt "Im Kreis ohne Fortschritt" getroffen.

Vielen Dank im Voraus für Ihre Hilfe!

+0

um zu gehen Wow es irgendwie unmöglich ist, eine einfache Lösungen für diese zu finden. Lässt mich SVN etwas vermissen ... – Jake

Antwort

2

Ich hatte das gleiche genaue Problem, stark in Code und Entwicklung Fähigkeiten, schwach in Sysadmin Fähigkeiten. Als ich schließlich bereit war, den Code zu pushen, musste ich eine GitHub rep fragen, was ihre vorgeschlagene Methode war, und sie reagierten mit Capistrano. Es ist eine Ruby Anwendung, die Befehle (wie git pull) auf Remote-Servern ausführt, zusammen mit so ziemlich jedem anderen Befehl, den Sie sich vorstellen können.

Hier einige Artikel können Sie erhalten mehr Informationen lesen:

nicht gehen liegen, die lernen Die Kurve war ziemlich steil, aber sobald Sie anfangen, mit Capistrano zu arbeiten, werden Sie sehen, dass es gut funktioniert, um Code zu pushen. Ich entwickle meine Anwendungen in Symfony und ich habe meine Capistrano-Einrichtung eingerichtet, um Code abzurufen, Cache zu löschen und Protokolldateien zu löschen, alles in einem Befehl von meinem lokalen Rechner.

+1

Diese Hilfe überhaupt? –

9

Sie können dies ganz einfach mit GitHub-Service-Haken tun.

Sie müssen eine weitere Datei erstellen, die den Prozess des Git Pull durchführt. Fügen Sie eine neue Datei mit dem Namen github.php (oder alles, was Sie wollen), und fügen Sie:

<?php `git pull`; 

Speichern der Datei und laden Sie sie in das Repository-Verzeichnis auf dem Server. Gehen Sie dann zu Services Hooks -> Post-Receive URL und kopieren Sie die URL in diese Datei und fügen Sie sie in die "Post-Receive URL" ein. http://demo.test.com/myfolder/github.php

Also, wenn Sie drücken, wird GitHub diese URL automatisch besuchen, damit der Server verursacht eine git pull auszuführen.

Um dies zu sehen mehr Details in this tutorial

+0

Es funktioniert super. – Lokesh

Verwandte Themen