Revisionen automatisch übertragen

Serverdienste ohne eigene Kategorie
paykoman
Posts: 81
Joined: 2006-07-16 14:18

Revisionen automatisch übertragen

Post by paykoman »

Hallo liebes Forum,

ich habe hier en kleines Problem. Heute habe ich mir nen SVN Server aufgesetzt der wunderbar funktioniert, dazu nutzte ich nur einen kleinen Vserver wo alle Projekte per svn entwickelt werden sollen.

Nun gibt es >hier< eine schöne Beschreibung wie man die aktuelle revision auch ins webverzeichnis kopieren kann damit man die Änderungen testen kann.

Da mein SVN-Server aber für sich alleine läuft also nicht auf dem wo auch der Webspace ist, bräuchte ich eine Lösung wie ich das rüberkopieren kann.

Ich denke ssh wird auf dem Server der die Daten empfängt frei sein müssen.

Ich habe mir eine Lösung so vorgestellt...
Ich weiss das man mit einem Befehl eine datei per ssh auf einen anderen Server übertragen kann:

Code: Select all

 scp test.rar userxyz@111.222.333:backup/test.rar
Das Beispiel aus dem tut ist ja so:

Code: Select all

 svn checkout file:///svnrepos/resigame /var/www/resigame
cd /var/www/resigame
svn update


Und da dachte ich an Stelle der Zeile mit cd könnte man ggf. einen Befehl rein machen der eben die Revision auf den anderen Server in htpdocs kopiert.

Klar muss dann natürlich ip, user und pw angeben, aber ich weiss halt nich wie das funktionieren sollte das eben nur die neuen Dateien rüberkopiert werden, beachten muss das Script das die Files auch an der richtiger stelle landen und nicht alles in httpdocs, also Unterordner müssen ja berücksichtigt werden.

SVN wird mit der Revision ja sicher die neuen Dateien von alleine aussortieren, also das abschicken der neuen Files denke ich ist nicht das große Problem sondern die Zuordnung auf dem Empfangsserver.

Hat da ggf. einer ne gute Idee und einen Muster Code?

Wäre schön.

MFG: Paykoman

::EDIT::
Mir fällt da gerade noch was ein =)
Was evtl leichter und die einfachere Lösung wäre.

Immer wenn eine neue revision hochgeladen wird, wird ja durch die hook die shelldatei ausgeführt, wie wäre es wenn ich dort den Link zu einer Crontab.php datei angebe die bei jeder Revision aufgerufen wird.

Die Crontab Datei liegt dann auf dem Server wo die Repo übertragen werden soll und führt dann einfach den Checkout befehl von svn aus und updatet so die neuen Dateien auf dem Server :)

Das wäre sicherlich einfacher.

LG

User avatar
Joe User
Project Manager
Project Manager
Posts: 11137
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Revisionen automatisch übertragen

Post by Joe User »

Wie oft wird das Repo denn überhaupt bearbeitet? Muss das Webverzeichnis wirklich unmittelbar aktualisiert werden? Ein Cronjob alle x Stunden sollte doch eigentlich völlig ausreichen und Dir das Frickeln mit dem Hook erspart bleiben.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

Roger Wilco
Administrator
Administrator
Posts: 5923
Joined: 2004-05-23 12:53

Re: Revisionen automatisch übertragen

Post by Roger Wilco »

Einfach in das Post-Commit Skript einen Aufruf an ein Skript auf dem entfernten Rechner (z. B. per SSH mit Public Key Authentication, damit kein Passphrase eingegeben werden muss) eintragen und fertig. Das Skript auf dem entfernten Rechner macht dann einen ganz normalen Checkout des Subversion-Repositories bzw. führt `svn update` dafür aus.

paykoman
Posts: 81
Joined: 2006-07-16 14:18

Re: Revisionen automatisch übertragen

Post by paykoman »

Hi, ich danke euch für eure Anteilnahme :)

Ja der Weg war etwas holprig, ABER ich bin angekommen *gg*
Öhm das liveupdate der Revisionen wird ja nicht direkt in das richtige Projekt also das was öffentlich genutzt wird übertragen.

Mein gedanke bzw. mein Vorhaben ist das die Repos an die jeweilige Testinstallation an der die neuen versionen entwickeltwerden übertragen werden. Ist dann eine neue Version komplett wird dann im richtigen Projekt die Revisiion manuell geupdatet.

Das Ding ist, das einer aus unserem Team, gerade mit APIs arbeitet und diese nicht lokal testen kann, darum wäre es wichtig das wirklich jede Revision dann an die testinstallation übertragen wird.

Das der SVN auf dem VServer ist, hat einfach den Grund das dort sonst nichts läuft und er quasi etwas verstecktläuft und somit auch als kleiner Backupserver für die Codes dienen soll.

Wird ein Server gehackt auf dem das Projekt läuft und wäre dort auch der Code(svn) so wäre alles weg, in meiner version würde svn bestehen bleiben(da extern).

Habe da gerade aber jemanden der mir das Script das nach dem hook ausgeführt werden soll schreibt, werde euch auf dem laufendem halten =)

MFG: Paykoman
Last edited by paykoman on 2010-12-10 20:49, edited 1 time in total.