2016-12-20 2 views
1

Wie ich auf der git-Dokumentation lese, sind bare Repositories gut zum Teilen und nicht-bare-Repositories sind gut für die Entwicklung.
Ich richte einen Entwicklungsserver ein, der SCM, Jenkins und Webseiten bereitstellen sollte, um einige manuelle Tests durchzuführen.
Um SCM zur Verfügung zu stellen benutze ich GOGS, die bare Repos zur Freigabe zwischen Entwicklern erstellt, ich brauche diese bare Repos irgendwie hardlinked zu nicht-bare Repos auf dem Apache-Ordner (normalerweise /var/www/http/) und alle Änderungen auf dem bloßen Repo automatisch nachahmen.Mirror-Repositories auf dem Web-Entwicklungsserver

Ist es möglich?

+0

Ja, erstellen Sie eine Bash (führen Sie es in Cron-Job alle 5 Minuten) Skript und klonen bestimmte Zweigstelle zu Ihrem lokalen Apache-Ordner ('git Klon/Pfad/zu/Ihrem/local/bare/Repo'). – C1sc0

+0

Ich dachte über das Klonen des ganzen Repos nach, aber es schien ziemlich ineffizient zu sein, einer der Gründe, um git zu verwenden, ist es, den Verkehr zu minimieren und Daten zu verschieben. –

+0

Sie können das Klonen auslösen, wenn ein bestimmtes Ereignis mithilfe von Git-Hooks auftritt – C1sc0

Antwort

1

SCM bieten ich GOGS die nackten repos schafft zwischen den Entwicklern zu teilen, ich brauche, dass diese nackten repos irgendwie nicht-bare repos auf den Ordner Apache hardlinked erhalten (in der Regel /var/www/http/)

Das heißt Dies geschieht in der Regel durch einen Post-Receive-Hook, der in Ihrem von GOGS verwalteten Repo-Konto eingerichtet wurde.
Das Skript wäre:

git --git-dir=/path/to/project_root/.git --work-tree=/var/www/http/ checkout -f 

Alle auf jene nackten Repo geschoben commit wird in Ihrer Website sichtbar sein.

1

Um ein nicht-bare Repo, git clone das bloße Repo in den gewünschten Ort zu machen.

Nebenbei würde ich nicht empfehlen, an der gleichen Stelle zu entwickeln, die für die Bereitstellung verwendet wird. Es beschränkt Sie schließlich auf wirklich unerwünschte Weise. Erstellen Sie stattdessen ein kleines Skript, das Ihr "deployment bundle" erstellt, eine tgz- oder zip-Datei, die die Elemente enthält, die auf Ihrem Webserver entpackt werden müssen.