Repository Hosting Recherche
![]()
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.
- github.com [GIT] Umsonst für Open Source, riesige Gemeinde
- beanstalkapp.com [GIT, SVN]
- code.google.com [Mercurial] riesige Gemeinde
- repositoryhosting.com [Git, SVN, Hg]
- codebasehq.com [GIT, SVN, Mercurial]
- projectlocker.com [SVN, GIT]
- indefero.net [GIT, SVN]
- gitorious.org [GIT]
- codespaces.com
- bitbucket.org
- svnhostingcomparison.com SVN Anbietervergleich
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
- usvn.info [SVN]
- websvn.info [SVN]
- warehouseapp.com [SVN]
- viewvc.org [CVS, SVN]
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.
Dieses Blog läuft auf dem tollen Wordpress.
Pingback: • fortrabbit | Blog | Case Study: Red Bull Bedroom Jam