Repository Hosting Recherche

14. Juli 2010, 16:56 Uhr
Versionsverwaltung,WebHosting
von Frank

PSST, dieser Artikel dreht sich um WebHosting, wir haben da ein paar spannende Produkte im Angebot.

Mehr über unser WebHosting …

Versionsverwaltung (engl. VCS = Version Control System) ist eine feine Sache, wenn es um Software-Entwicklung geht. Es ist heutzutage gerade bei Anwendungen mit vielen Entwicklern ein Muss. Wir setzten inzwischen für alle größeren Webprojekte Repositories (Versionscontainer) ein. Nur so kann man wirklich gut im Team arbeiten. Allerdings nicht nur dann, selbst wenn man alleine an einer Website arbeitet bietet es viele Vorteile gegenüber einem Deployment per FTP.

Unterschiedliche Ansätze

Es gibt unterschiedliche Versionsverwaltungssysteme: man unterscheidet zwischen Systemen mit zentraler Verwaltung (älter Ansatz) und verteilter Verwaltung (neuer, distributed version control system [DVCS]). Hierbei ist jeder Client gleichzeitig “Server”. Anstatt eine Arbeitskopie vom Server zu ziehen (update) und Modifikationen dieser wieder einzuspielen (commit) arbeitet man hier mit einem vollständigen Klon der Daten, inklusive der gesamten Versionshistorie aller Änderungen. Operation werden lokal dann durchgeführt. Der gesamte Klon kann dann später in mit der zentralen Kopie zusammengeführt werden (merging).

Es gibt proprietäre und Open-Source Systeme. Hier eine Auswahl an lizenzfreien Lösungen:

CVS (Concurrent Versions System)

Die Mutter aller VCS Systeme. Dieses Urgestein ist, obwohl bereits 1986 erstmals veröffentlicht, auch heute noch im Einsatz. Inzwischen es allerdings nicht mehr zu empfehlen, da neuere VCS erheblich anwenderfreundlich sind und grundlegende Verbesserung in fast allen Bereichen bieten. CVS arbeitet mit einem zentralen Server zu dem sich Entwickler als Clients verbinden. www.nongnu.org/cvs

SVN (Subversion)

Neben CVS das verbreitetste Versionierungssystem. Auch SVN hat eine zentrale Verwaltung. Gegenüber CVS bietet es viele Neuerungen, wie z.B. der bessere Umgang mit Logs für einzelne Dateien, Revisionierung für gesammelte Änderungen (anstatt eine Version für jede geänderte Datei), ein schlankeres Protokoll, da alle Änderungen lokal erfasst werden und vieles mehr.  subversion.tigris.org

HG (Mercurial)

Ein neueres Versionssystem mit verteilter Architektur (jeder ist ein Server), hauptsächlich in Python geschrieben, was es plattformunabhänig macht. Mercurial wird von Google Code unterstützt. mercurial.selenic.com

GIT

Eine weitere verteilte Versionsverwaltung, initial entwickelt von Linus Torvalds, dem Autor von Linux. Im Gegensatz zu Mercurial ist es komplett in der Sprache C geschrieben, was einen nicht unerheblichen Geschwindigkeitsvorteil mit sich bringt.  git-scm.com

Weitere

Noch zu erwähnen sind: Bazzar, Perforce, Visual SourceSafe (von Microsoft).

Clients

Richtige Programmierer greifen auf ihre Repositories natürlich per Shell zu. Merge, Commit, Update, Check Out und Co werden also per Kommandozeile eingeben. Es gibt aber auch einige kleine Helfer, die eine GUI für die abstrakten Prozesse zur Verfügung stellen. Vor allem bei der Arbeit mit Branches kann das recht hilfreich sein. Hier unterscheidet man zwischen den unterstützten VCS Systemen und den Plattformen (Windows, Mac Os X, Linux). Natürlich gibt es auch hier kommerzielle und lizenzfreie Ansätze. Einige Texteditoren, wie Eclipse und Textmate, bringen von Hause aus Unterstützung mit, andere lassen sicher per Plugin updaten.

Version Control System Hosting

In den USA gibt es eine große Anzahl von Anbietern, die VCS Server betreiben. Die Meisten bieten SVN an. In erster Linie wird hier zwischen privatem (private) und öffentlichem (public) Hosting unterschieden. Public Hosting ist für Open Source Projekte mit einer großen Entwicklergemeinchaft  und wird meist kostenfrei angeboten. Das Repository Hosting beschränkt sich meist auf den Betrieb des Versionsverwaltungsservers und eine Weboberfläche zum Verwalten der Benutzer, Versionen und Projekte. Teilweise sind noch Bug Tracker, Time Tracker oder Wikis mit im Angebot.

Webhoster mit Repository in Deutschland

In Deutschland ist die Auswahl an Anbietern noch nicht so gross. Für privates VCS Hosting gibt es eine handvoll Anbieter:

Eigener VCS Server

Natürlich kann man seinen eigenen Versions-System-Server betreiben. Um diesen noch besser zu Verwalten gibt es einige Webinterfaces, die helfen Projekte und Benutzer zu Verwalten:

Version Control System Webinterfaces

Unsere Ideen

Uns fehlt es an Lösungen die Webhosting gleich integrieren. Eigentlich könnte doch jedes Webprojekt eine Versionskontrolle im Hintergrund haben. Allein die einfachere Art der Auslieferung ist schon fast Grund genug: Der klassische kleine Webentwickler hat vielleicht eine lokale Kopie seines Codes bei sich auf dem Rechner, dort ist er evtl. nicht ausführbar, weil kein Webserver installiert oder die Datenbank nicht befüllt ist. Änderungen müssen also Datei für Datei per FTP hochgespielt werden. Eine FTP Synchronisation dauert quälend lange, manuelles aussuchen von Dateien ist nervig und fehleranfällig. Manche mögen direkt auf dem FTP Server arbeiten, das ist aber extrem unsicher, weil es schon mal vorkommen kann, dass die Verbindung unterbrochen wird, was in einer leeren Datei endet – nicht zu vergessen, dass alle Änderungen sofort online sind und der kleinste Typo schnell alles ruinieren kann.

In einer versionskontrollierten Umgebung reicht ein einfaches Commit um Änderungen einzuspielen. Man kann sich sicher sein, dass man wieder zurückkommt, wenn man was verbockt hat und man muss keine Angst haben, dass man bei Teamarbeit was überschreibt.

Was wir soweit bei keinem Anbieter entdecken konnten: Das Repository wird in ein Webverzeichnis exportiert, sodass es sofort im Browser getestet und genutzt  werden kann. Anders ausgedrückt: Wir wollen kein Hosting von VCS anbieten, sondern: Webhosting mit VCS.

Ausserdem gehen wir von einer Live (Stable) und einer Staging (Development) Umgebung aus. Staging ist die aktuelle Entwicklungsversion, wo neue Features implementiert werden können. Wenn alles korrekt läuft kann die Staging Umgebung in die Live Umgebung übertragen (merge) werden.

Unser Entwicklungsstand

Derzeit haben wir für uns eine funktionierende SVN Umgebung aufgesetzt. Um diesen Service allerdings zur Produktreife zu bringen müssen noch ein paar Probleme gelöst werden. Wir müssen entscheiden welche Versionssysteme wir unterstützen, VCS muss nahtlos in unsere sonstige Produktstruktur integriert werden, doch vor allem haben wir aber bei Tests festgestellt, dass eigentlich keines der Systeme sonderlich gut mit unserem Netzwerk Datei System NFS klar kommt.

  • Micha

    Es macht eigentlich nur Sinn SVN und Git anzubieten. Sie bieten aus ihren Welten die umfangreichsten Funktionen.

  • http://blog.andreg.de/ AndréG

    Hallo,
    ich finde euren Ansatz super – zumal das Angebot in Deutschland trauriger weise sehr überschaubar ist.
    Ich suche selbst derzeit nach Anbieter für Entwickler-Hosting.

    Wenn ich dann lese, dass qwws mindestens 6 Monate Gebühren im voraus kassiert, wird mir schwindelig.

    Meinungen bzw. Erfahrungen mit den drei genannten Anbietern sucht man auch vergeblich – dafür gibt es massig Werbung oder im Falle von lcube viele brachliegende Domains.

    Schade.

  • http://franklaemmer.de Frank

    Wir haben inzwischen mit einer Mercurial Instanz rumgespielt, derzeit sind wir aber eher bei GIT, auch wenn die Einrichtung (SSH-Schlüssel) erstmal etwas geekig ist.

    Bis wir das ganze als Produkt anbieten können wirds aber leider noch ein paar Monate dauern.

  • Pingback: • fortrabbit | Blog | Case Study: Red Bull Bedroom Jam

  • Markus Rott

    Die angesprochene Webentwicklung per VCS beziehungsweise SVN nutze ich über einen individuellen Hook, den ich bei http://www.subversion-server.com in Auftrag gegeben habe. Dort wurde mir auch entsprechender Webspace mit PHP zur Verfügung gestellt.

    Einziger Kritikpunkt: ich musste erst beim Support nachfragen, aber die Umsetzung klappt tatsächlich problemlos – leider musste ich erst eine Weile suchen, bis ich einen entsprechenden Hoster gefunden habe.

  • http://twitter.com/iaddict Tom Stone

    http://www.versionshelf.com ist auch ein deutscher Subversion Hoster.
    Mercurial Repositories sind dort auch möglich.

Dieses Blog läuft auf dem tollen Wordpress.