Wie haben Programmierer gearbeitet, bevor Versionskontrollsysteme erstellt wurden?
Ende der 80er hatte ich eine 3,5″ Diskette und war damit supermodern. Und jeden Tag speicherte ich das Programm unter einem anderen Namen. Die Diskette hatte eine Kapazität von 880kb und das reichte anfangs für mehrere Wochen, später mindestens für eine oder zwei. Da ich alleine programmierte, hatte ich kein Problem damit, Quellcodes mit anderen zusammen zu bringen.
Hatte ich einen oder mehr Tage Mist geschrieben, lud ich einfach die alte Version: Tada, Versionskontrolle.
Bitte nicht fragen, was passiert wäre, wenn die Diskette kaputt gegangen wäre, solche Fragen stellten sich damals nicht. Programme schrieb man dann eben nochmal. Das war etwas, was einem ganz selbstverständlich irgendwann mal passierte.
Später hatte ich ein Festplatte. Programme bestanden nicht mehr nur aus einem Quelltext, also jeden Tag einen neuen Namen ging nicht mehr. Und kopieren ist zu aufwendig und Festplatten haben damals noch Geld gekostet. Meine erste Festplatte hatte 124MB und das war so ziemlich das größte, was man kaufen konnte und ich war 14. Das war das Geld, was ich in den Sommerferien erarbeitet hatte. Sicherheitskopien waren da noch unüblich. Damals stürzten Computer ja auch noch ab und nicht nur Programme.
So passierte mir einmal, dass ich den letzten Fehler korrigiert hatte und das Programm erfolgreich lief. Ich speicherte den Quelltext und dabei stürzte der Computer ab. Speicherschutz gab es noch nicht, also hat ein vorheriger Testlauf das Betriebsystem beschädigt. Nach dem Neustart, war die Datei unbrauchbar. Ich konnte dem Auftraggeber demonstrieren, dass das Programm lauffähig ist, aber ich konnte ihm keinen Quellcode aushändigen.
Also ging es wieder von vorne los. Zum Glück musste ich ja nicht mehr entwicklen, sondern einfach nur noch aus dem Kopf abschrieben, was ich die Wochen zuvor entwickelt habe. So hatte ich nach drei Tagen wieder ein funktionierendes Programm, dessen Quelltext auch besser war.
So lernte ich, was es bedeutet, ein Backup zu haben.
Auf Backups darf man sich aber auch nicht einfach so verlassen. Dass man das OS regelmäßig neu aufspielt, war um das Jahr 2000 ganz normal. Festplatten wurden langsam bezahlbar und so hatte ich alle relevanten Daten auf eine Festplatte übertragen. Da ich alle Festplatten formatieren wollte, habe ich die Datenleitung sicherheitshalber vom Computer getrennt. Während das OS also installierte, hörte ich aus dem Rechner plötzlich so ein “rrr…klack!……….rrr…klack!……….rrr…klack!”. Meine Backup-Platte war in der Stunde kaputt gegangen, in der sie kein Backup war, sondern die einzige vorhandene Quelle. Und ich hatte zwar das Datenkabel abgemacht, aber das Stromkabel war noch dran. Alle Programme und sonstige Daten weg.
So lernte ich, was es bedeutet, zwei Backups zu haben.
Ich habe um das Jahr 2000 mit einer Versionskontrolle angefangen. Erst RCS, dann Subversion. Üblich war da auch noch CVS. Seitdem habe ich einen Entwicklungsrechner, einen Rechner mit Subversion-Service und ein Laptop.
Eine Versionskontrolle ist in der Regel ja auch eine Verteilstation, um Quellcodes zwischen Programmierern auszutauschen. Mitte bis Ende der 90er hat eine Firma mit mehreren Standorten das Problem dadurch gelöst, dass man eine Diskette per Post an die anderen Abteilungen schickte, die pflegten die Änderungen bei sich ein, guckten ob’s lief und schickten die dann wieder zurück. Da das Programm sehr groß war und die es mehrere Entwicklungsstandorte gab, war der Aufwand entsprechend hoch, alle Standorte auf einem ähnlichen Stand zu halten.
Die Firma hat sich dann für einen Internetanschluss und eine Versionskontrolle entschieden…
Privat läuft bei mir inzwischen Subversion auf einem RAID. Per Skript wird das Archiv ausgelesen, gepackt, verschlüsselt und auf einen Server im Internet übertragen, der das verschlüsselte Archiv ebenfalls auf einem RAID ablegt. Falls lokal das Dateisystem auf dem RAID kaputt geht. Oder die Wohnung abbrennt. Zusätzlich gibt es nicht zwangsläufig aktuelle Backups auf zwei Entwicklungsrechnern, dem Build-Server und zwei Laptops und immer mal wieder ein verschlüsseltes Archiv auf einem USB-Stick, den ich immer mit mir trage.