Wie kann ich Haken post-commit engagierte Dateien in ein Web-Verzeichnis aus dem SVN zu kopieren?

StackOverflow https://stackoverflow.com/questions/140614

  •  02-07-2019
  •  | 
  •  

Frage

Mein Ubuntu Server hat Apache und Subversion installiert. Ich benutze diesen Server als Staging-Server, rein zu Testzwecken. Ich benutze Apache die Web-Anwendung zu hosten, und Subversion versioniert Kopien des Quellcodes zu halten.

Meine aktuellen Workflow:

  • Nehmen Sie Änderungen an einer Datei
  • übernehmen Sie die Datei in der Subversion-Repository
  • Laden Sie die Datei neu über SFTP auf den Apache öffentlichen Verzeichnis
  • Sehen Sie die Änderungen in meinem Web-Browser

Ich wäre viel glücklicher, wenn mein Workflow wie folgt war:

  • Nehmen Sie Änderungen an einer Datei
  • übernehmen Sie die Datei in der Subversion-Repository
  • Im Hintergrund Subversion legt eine Kopie der Committed-Datei in das Apache öffentliche Verzeichnis
  • Sehen Sie die Änderungen in meinem Web-Browser

Ich habe sehr wenig Server-Admin-Erfahrung, und jede Hilfe oder Zeiger geschätzt. Ich hörte, dass post-commit Haken sind, was ich brauche, und das kann ich Bash-Skripte tun dies schreiben, aber ich bin nicht sicher, wo ich anfangen soll und nicht wirklich etwas nach recht viel Googeln finden.

Danke!

Andere Tipps

Es kann getan werden, aber automatisch drückt jeder auf die Produktion Website verpflichten, ist nicht immer eine gute Idee. Manchmal gibt es andere Änderungen, die entlang gehen müssen, und brach die Seite, weil der neue Code ist da, aber das Datenbankschema wurde noch nicht aktualisiert ist nur peinlich.

Was ich dazu neigen, statt zu tun, ist der Server Kasse eine Kopie von SVN machen, dann, wenn ich mit allem fertig bin anderes, das ich tun, um eine svn update auf es geschehen hat.

Aber wenn Sie wirklich wollen, können Sie Befehle in der post-commit-Trigger setzen, dass alles automatisch für Sie tun. Dies könnte einen Migrationsskript auf dem Server enthält ausgeführt wird (wenn man für diese Änderung besteht), Pflege von allen Nicht-Code-Änderungen zu übernehmen, die geschehen müssen.

Ich denke, die real , übergeordnete Frage, die Sie sich stellen sollten, --- die Sie bereits selbst natürlich gefragt haben --- ist diese: „Wie kann ich meinen Code testen am einfachsten vor Bereitstellung es? "

Ich denke, eine gute Antwort ist Apache auf dem Entwicklungsfeld zu installieren und es als Ihre eigenen Benutzer, mit Webroot und / oder cgi Pfad bei /home/richardhenry/src/mywebsite laufen (oder wo auch immer Sie Ihren Code überprüfen).

Auf diese Weise können Sie Ihren Code testen, ohne selbst zu begehen. Als Ergebnis, werden Sie Ihren Kofferraum nicht Wurf mit gebrochenen oder nutzlos Commits. Im Allgemeinen unabhängige Dinge unabhängig zu halten neigt eine gute Idee (TM) zu sein.

Alternativ synchronisieren den Web-Server gegen das Arbeitsverzeichnis mit rsync, oder ein Skript schreiben, die Ihre Datei (en) aus der Dev-Box auf Ihren Staging-Server schiebt und eine Makefile-Regel hinzufügen, die Ihr Skript ausgeführt wird (oder ruft rsync) . Wenn Sie wollen wirklich Phantasie, verwenden inotify oder eine andere Datei für Benachrichtigungen Ihr Skript automatisch ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top