Andreas Korthaus: Versionskontrolle bei Webprojekten

Beitrag lesen

Hallo!

Mich würde mal interessieren wie Ihr Eure Webprojekte mit einem Versionskontrollsystem verwaltet. Nachdem ich Dank lighttpd auf trac gestoßen bin, habe ich mir das direkt mal installiert. Trac ist ein sehr simples System, es beinhaltet Webzugriff auf das subversion repository (alles IMHO sehr schön gelöst, auch mit diffs (Bsp.)), und ein recht einfaches Ticket/Bugtracking System (z.B.: neues Ticket, Übersicht, Ticket) und ein wiki. Aber das nur am Rande ;-)

Ich habe subversion auf einem Server eingerichtet. Entwickelt wird auf diesem und auf einem anderen Server (jeweils Testumgebungen). Naja, eigentlich wird lokal entwickelt (Windows XP), und auf einem Server (Gentoo Linux) getestet, PHP eben ;-)
Aber das "testen" ist eben mein Problem. Ich kann nicht lokal testen, weil die  Software eben lokal nicht so einfach ans Laufen zu bekommen ist. Ich will aber lokal entwickeln, weil ich nur hier eine ordentliche Entwicklungsumgebung habe (IDE...). Ich habe jetzt also nicht nur eine Working-Copy, sondern eigentlich zwei. Lokal schreibe ich Code, lade den auf einen Server um den zu testen, und wenn das läuft "committe" ich das ganze.

Im Moment habe ich nur eine Working-Copy auf dem Test-Server, lokal lade ich mir ggfs. Dateien runter. Das ist aber alles andere als das gelbe vom Ei ;-)

Vor allem wenn man auf verschiedenen Rechnern arbeitet ist das sehr lästig und auch fehleranfällig. Ich hatte auch dran gedachte den Umweg von einer lokalen Working-Copy über svnserve zu gehen, und auf dem Server immer HEAD in das  Testverzeichnis auf dem Server entweder zu aktualisieren (svn update, hierbei muss das Testverzeichnis eine Workingcopy sein), oder vielleicht besser zu exportieren (per svn --force export..., dann wäre ich auch die .svn Verzeichnisse in der Webumgebung los da das Testverzeichnis keine Workingcopy mehr sein muss), nur ist das IMHO sehr umständlich. Aber vielleicht könnte man den letzten Schritt per post-commit Hook automatisieren? Dann würde man gar nichts mehr per SCP/SFTP hochladen, sondern nur noch per svn+ssh:// Änderungen übertragen, die dann sofort in der Testserver-Umgebung sichtbar werden. Allerdings ist dann für jede noch so kleine Änderung ein commit inklusive Kommentar fällig - was auch irgendwie nervig ist, denn es kommt bei größeren Änderungen oft vor dass ich eine Datei mehrmals hochladen muss, bis alle Flüchtigkeitsfehler draußen sind, und am liebsten würde ich die Datei eben erst am Ende "committen".

Daher meine Frage an Euch - wie löst Ihr sowas? Wie macht Ihr das bei Euren Webprojekten?

Naja, dann müsste ich mir auch abgewöhnen zwischendurch kleine Änderungen mit nano/vi direkt vorzunehmen, oder ich brauche online einfach noch eine zusätzliche Working-Copy.

Noch eine andere Frage - wie kann ich bei subversion bestimmte Dateien ignorieren? Ich habe zwar so Sachen wie svn:ignore gefunden, aber das ist AFAIK nicht das was ich will. Ich habe z.B. eine Konfigurationsdatei, die spezielle Angaben wie Pfade, DB-Zugangsdaten... enthält. Die Datei muss auch im Versions-Kontrollsystem sein, da sich diese auch ändern kann. Allerdings hier in einer "anonymisierten" Form. Nur würde Subversion jetzt bei einem svn --force export eine lokale Konfigurationsdatei überschreiben. Wie kann ich das verhindern?

Viele Grüße
Andreas

--
SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/