Versionskontrolleure im Vergleich

18.02.2005
Von   
Bernhard Steppan arbeitet als IT-Chefarchitekt bei DB Systel GmbH (Deutsche Bahn) in Frankfurt am Main. Er hat 100+ Artikel und zahlreiche Bücher über C++ und Java verfasst. Er betreibt mehrere Blogs, unter anderem http://steppan.net, http://artouro.org und http://tourbine.com

Wie bei CVS ist es auch bei Perforce üblich, nur auf einer lokalen Arbeitskopie zu arbeiten, die aus dem "Depot" genannten Repository ausgecheckt wird. Das Versionskontrollwerkzeug ist wie CVS sehr leicht zu bedienen. Es verfügt über eine sehr gute Dokumentation, wenngleich es mit der Fülle an Büchern, die für CVS erhältlich sind, nicht konkurrieren kann. Perforce unterstützt im Gegensatz zu CVS atomare Commits. Wenn eine Reihe von Dateien eingecheckt werden soll, von denen eine oder mehrere Konflikte auslösen, wird die Annahme des Gesamtpakets so lange verweigert, bis die Konflikte gelöst sind. Das Gleiche gilt bei Netzwerkproblemen während des Commits. Auch hier ist gewährleistet, dass die gesamte Transaktion zurückgesetzt wird und der Master konsistent bleibt.

Auf Geschwindigkeit getrimmt

Perforce ist schnell, was sich vor allem bei sehr großen Mengengerüsten und Massenoperationen deutlich bemerkbar macht - weniger bei kleineren Projekten und Datenmengen. Es speichert - wie die meisten Konkurrenten - aus Platzgründen nur die Differenzen von Textdateien (Deltamethode). Binärdateien behandelt es hingegen anders. Sie werden normalerweise auch bei geringen Differenzen immer komplett gespeichert. Das kann bei häufigen Änderungen an vielen Binärdateien erheblich Speicherplatz kosten. Wer das nicht will, kann den Server auch anweisen, ältere Binärdateien zu überschreiben oder aus dem Repository zu entfernen.

Anders als CVS unterstützt das Werkzeug seit einiger Zeit weitreichende Projektrestrukturierungen, also das Umbenennen und Verschieben von Verzeichnisbäumen sowie deren Dateien, wie sie bei Refactorings üblich sind. Dabei bleibt die Historie erhalten. Die umfassenden Restrukturierungen, wie sie bei Java-Projekten konzeptionell mittlerweile üblich sind, stellen damit kein Problem mehr dar. Diese Funktionen sind allerdings nur über die Kommandozeile oder über die IDE-Plugins (zum Beispiel für Eclipse) verfügbar.