Wie funktionierte die Versionskontrolle in den 80er und 90er Jahren auf den heutigen Mikrocomputern?

31

Ich bin gespannt, wie Programmiererteams ihre Softwareentwicklung in den 80er und frühen 90er Jahren gemanagt haben. Wurde der gesamte Quellcode einfach auf einem Computer gespeichert, an dem alle gearbeitet haben, oder wurde der Quellcode herumgereicht und manuell per Diskette kopiert und manuell zusammengeführt, oder verwendeten sie tatsächlich Revisionskontrollsysteme über ein Netzwerk (z. B. CVS), wie wir es tun? jetzt? Oder wurde vielleicht so etwas wie ein Offline-CVS verwendet?

Heutzutage ist jeder auf die Quellcodeverwaltung angewiesen. In den 80er Jahren waren Computernetzwerke jedoch nicht so einfach einzurichten, und es wurden immer noch Best Practices herausgefunden ...

Ich weiß, dass die Programmierung in den 70er und 60er Jahren ziemlich unterschiedlich war, so dass eine Versionskontrolle nicht erforderlich war. In den 80ern und 90ern begannen die Menschen, Computer zum Schreiben von Code zu verwenden, und die Größe und der Umfang der Anwendungen nahmen zu. Ich frage mich also, wie die Leute das damals alles geschafft haben.

Wie unterscheidet sich dies auch zwischen Plattformen? Sagen wir Apple vs Commodore 64 vs Amiga vs MS-DOS vs Windows vs Atari

Hinweis: Ich spreche hauptsächlich von der Programmierung auf Mikrocomputern der damaligen Zeit, nicht auf großen UNIX-Computern.

9a3eedi
quelle
3
RCS wurde erstmals 1982 veröffentlicht.
5gon12eder
1
Aber wie viele Leute haben es benutzt? RCS war AFAIK für Unix und Unix-ähnliche Maschinen, die nicht auf Mikrocomputern liefen.
9a3eedi
2
Wir hatten vernetzte Systeme. Nur war nicht auf TCP / IP festgelegt, es gab auch andere wie Decnet. Filesharing war in mehreren Protokollen verfügbar. Und Teams haben die Entwicklung auf Minis sogar für Mikros durchgeführt, obwohl einige kleine unabhängige Entwickler (nicht auf Teams) nur Backups statt der Version mit formaler Kontrolle durchgeführt haben. Einige emulieren möglicherweise die Versionskontrolle mit strengen manuellen Sicherungen.
Erik Eidt
2
Wir haben es sehr sorgfältig gemacht, meistens in Wetware, weil das, was Sie als Versionskontrolle ansehen, auf den von Ihnen erwähnten Plattformen nicht vorhanden war.
Blrfl
2
In meinem Fall haben wir Anfang der 1980er Jahre Lochkartenstapel für Minicomputer verwendet. Manchmal speicherten wir Quellcode-Decks in Lochkarten-Ordnern.
Gilbert Le Blanc

Antworten:

22

Erstens, als Mikrocomputer zum ersten Mal herauskamen, wurde die Software hauptsächlich auf Unix- oder VMS-Systemen geschrieben und auf dem Zielsystem „cross compiler / assembled“. Diese Computersysteme waren häufig Mehrbenutzer mit vielen Terminals und hatten Quellcode-Steuerungssysteme wie SCCS .

Bei Mikrocomputern, die ab Mitte der 1980er Jahre häufig mit einem Unix-System als "Dateiserver" verbunden waren, war die Vernetzung eine Option (möglicherweise nur mit RS232 und Kermit zum Übertragen der Dateien, mit SCCS auf dem Unix-System).

Siehe Geschichte der Versionskontrolle von Eric Sink einen Überblick darüber , wie Versionskontrollsystem erhalten haben sich im Laufe der Jahre verändert.

Ich erinnere mich, dass ich Ende der 1980er Jahre in "BYTE" über die Quellcodeverwaltung gelesen habe, daher muss es bis dahin auf "kleinen Systemen" verwendet worden sein.

SourceSafe war Mitte der 90er Jahre unter DOS, Windows usw. gut etabliert.

Dieser Link zeigt einen Artikel über PVCS auf einem PC aus dem Jahr 1994 , es ist in der Version 6.2, also eindeutig schon seit einiger Zeit, Wikipedia zufolge stammt er aus dem Jahr 1985 .


Nummerierte Disketten wurden jedoch von den meisten Programmierern verwendet, die bis Ende der 1990er Jahre an kleiner Software arbeiteten, um sie durch Ordner auf ihrer Festplatte zu ersetzen, die jeden Tag eine Kopie des Quellcodes erstellten.

Ich erinnere mich, dass ich an einer Projektportierungssoftware von Unit auf Windows NT 3.5 gearbeitet habe. Programmierer, die wissen, wie man für Windows programmiert, hatten zu diesem Zeitpunkt oft noch nicht einmal von der Quellcodeverwaltung gehört.


Diese Timeline stammt aus einem Blog-Beitrag von codicesoftware , sie verkaufen Plastic SCM, allerdings erscheint der Überblick über die Historie anderer Systeme sinnvoll, ein paar ältere Systeme vor RCS sind vom Image übrig geblieben.

Zeitleiste des Versionskontrollverlaufs

Ian
quelle
1
Als ich anfing zu arbeiten, benutzte ich VSS. Ich mag die Begrüßung zur Hölle Kommentar. Ich erinnere mich, dass ich von meinem Teamleiter gefragt wurde, ob es sich lohnen würde, notgedrungen zu wechseln ... Hölle, ja!
Draeron
@ Draeron, ich fand das VSS in Ordnung, wenn Sie nicht damit gerechnet haben, Zweige zusammenführen zu können UND es sich auf einem stabilen Dateiserver befand. Eine Firma, für die ich gearbeitet habe, hatte es auf einem Server mit fehlerhaften RAM-Chips. Aber gib mir stattdessen jeden Tag der Woche Perforce ...
Ian
"Willkommen in der Hölle" könnte auch für Clearcase gelten ... schaudern
Andrew Kennan
13

Dies ist wahrscheinlich nicht repräsentativ für die Spieleindustrie im Allgemeinen, hat aber in unserer kleinen Spielefirma gut funktioniert. Arbeitete nie mit Business-Software, die wahrscheinlich andere Anforderungen hatte.

Von Mitte der 80er bis Mitte der 90er Jahre habe ich häufig eine Versionsnummer am Ende des Dateinamens verwendet, z. B. "game.003". Damals programmierte ich 90% in Assembler und der gesamte Code befand sich in einer einzigen großen Datei, möglicherweise mit einem oder zwei Includes, in denen ich die Versionsnummer manuell aktualisieren musste, wenn sich die Dinge änderten. Ich würde die Zahl erst erhöhen, wenn ich eine stabile Version hatte, von der ich sicher war, dass ich sie behalten wollte.

Dies skalierte schließlich etwas bequem auf ca. 3 Personen. Danach vergrößerten wir das Team und hatten ein Jahr lang überall ein Durcheinander von Akten, bis ich es satt hatte, die Veränderungen einzelner Leute aufzuspüren, und wir fingen 1997-98 an, Perforce zu verwenden.

axl
quelle
6

Das muss man im Kontext der damals üblichen Infrastrukturen sehen. In den frühen 80er Jahren veröffentlichte IBM den "Personal Computer" und man kann dies wörtlich nehmen. Die gebräuchlichste Art, Anwendungen für einen PC zu entwickeln, war, dass jemand etwas erschuf und versuchte, es zu verkaufen. Eine Diskette pro freigegebener Version wäre also wahrscheinlich üblich. Sie könnten ein paar schöne bunte Etiketten kaufen und den Namen Ihres Produkts und die Version darauf schreiben. Bei den meisten erfolgreichen Produkten dieser Zeit kannte man den Namen desjenigen, der sie geschrieben hat.

Netzwerke wurden als Add-Ons eingeführt. Client-APIs wurden in DOS gehackt, und die Serverteile waren dedizierte Betriebssysteme auf einem separaten Computer. In der Regel teuer (nicht für die Massen) und bietet im Grunde nur Datei- und Druckerfreigabe. In der PC-Welt begannen sich die Dinge mit der Einführung von Windows for Workgroups und Windows NT zu ändern. Das eröffnete viele Möglichkeiten. Das Netzwerk wurde schließlich in die Umgebung integriert, mit der ein Programmierer vertraut war, und ein Windows-Programmierer konnte Anwendungen schreiben, die über das Netzwerk miteinander kommunizieren konnten. Dies war das Ende von NetWare als dem dominierenden Netzwerkbetriebssystem.

Bald tauchten mehrere Versionskontrollsysteme mit Client- und Serverkomponenten auf, die Sie problemlos auf einer beliebigen Kombination von Computern installieren konnten. Mit Plug-Ins für IDEs und Client-Komponenten, die Befehlszeilenoptionen unterstützen, die die Integration in ein Build-System ermöglichen.

Nach dem Start des Webs und dem allgegenwärtigen PC-Zugriff auf das Internet wurden die Open Source-Bewegungs- und webbasierten Quellcodeverwaltungssysteme eingeführt. Das Lustige ist, als der PC eingeführt wurde, wurde dies als kühner Schritt von zentraler Datenverarbeitung zu verteilter Datenverarbeitung angesehen. Die Definition von zentral versus verteilt ist jedoch verschwommen. Ist die Cloud die ultimative Distribution oder ist es nur der neue Monster-Zentralcomputer, der über die gesamte Leistung verfügt, ähnlich wie früher der IBM-Mainframe?

Martin Maat
quelle
1
Netware war bis zum Start von Active Directory mit win2k noch ziemlich dominant. Es gibt immer noch viele Dinge, die Netware gut gemacht hat und die AD nicht ohne ernsthafte Angriffe kann.
Wyatt Barnett
Sie sagen also, dass die Leute mit Mikrocomputern zu der Zeit die Quellcodeverwaltung nicht genutzt haben, weil sie sie nicht brauchten? dh es war normalerweise nur ein Typ, der Programme in seinem Haus machte, also keine Notwendigkeit, Code zu teilen oder Zusammenführungen durchzuführen?
9a3eedi
2
@ 9a3eedi: Ich male ein typisches Bild. Die Leute haben vielleicht das Bedürfnis gespürt, aber es war einfach nicht da, also hast du mit deinen Mitteln gelebt. Zusammenschluss, sagst du? Das klingt nach einem großen, komplizierten Programm. Wie viel Gedächtnis braucht so ein Biest? Was bleibt übrig, damit der Code zusammengeführt werden kann? Ich kann Disketten tauschen, aber wenn mein Speicher voll ist, wohin gehe ich ?! Erst als die Leute "all den Speicher hatten, den sie jemals brauchen würden" (wie 640K), war dies überhaupt möglich.
Martin Maat
5

In den 90ern habe ich definitiv Software für die Versionskontrolle verwendet. Es gab SCCS und Apples MPW hatte eine integrierte Versionskontrolle (Projector). Und ich glaube, ich habe Projector um 1992 verwendet. Bei einer Firma war das Versionskontrollsystem ein großer Schrank mit Disketten jeder Version, die einmal pro Woche entnommen wurden.

gnasher729
quelle
SCCS funktionierte nicht auf Mikrocomputern. Und konnte nicht funktionieren, weil es sich auf eine Funktion stützte, die nur für das Solaris-Dateisystem (nicht einmal für generisches Unix) bestimmt war
gnat
1
@gnat - redest du über das gleiche SCCS ? Ich weiß, dass ich es Mitte der 90er Jahre auf einem Next verwendet habe und glaube, dass ich es in den späten 80er Jahren auf verschiedenen Nicht-Solaris-Unices verwendet habe. Und der verlinkte Wikipedia-Artikel scheint zuzustimmen, dass er nicht nur für Solaris bestimmt ist.
kdgregory
3
Ich bin mir ziemlich sicher, dass ich SCCS auf einem 3B2-400 verwendet habe, auf dem Sys V um 1986 lief. ISTR hat es anstelle von RCS verwendet, weil wir mit einem Berater zusammengearbeitet haben, dessen Firma es auf ihrem Xenix-System auf Z8000-Basis verwendet hat, und er hatte einige Makefiles, die es annahmen wurde benutzt.
TMN
1
Ich habe SCCS 1984 definitiv unter Microsoft Xenix mit Motorola 68000-Prozessoren verwendet.
Charles E. Grant
2
Es ist richtig, dass Linux SCCS in den 1980er Jahren nicht unterstützte. Auch in den 1880er Jahren fehlte Linux-Unterstützung für SCCS. SCCS und andere Programme (zB rn newsreader) in den 1980er Jahren verwendeten Unix open (2), um empfohlene Sperrdateien zu erstellen, die funktionierten, wenn alle Benutzer dasselbe Protokoll befolgten. Da SCCS die beratenden Sperren erstellte, konnte es sicher sein, sie zu respektieren.
msw
1

Mein erster Programmierjob im Sommer, als ich noch in der Schule war (das wären ungefähr 91 gewesen, glaube ich), war die Implementierung eines automatisierten Versionsmanagement- und Backup-Systems für die kleine Firma, bei der ich arbeitete. Wir hatten 3 PCs an einen NetWare-Server angeschlossen, und der Besitzer hatte es satt, mit Versionskonflikten umzugehen und die erforderlichen Sicherungskopien auf Disketten zu erstellen. Daher ließen wir die Entwickler auf ihrem eigenen PC arbeiten, anstatt direkt in Dateien, die auf dem Server gespeichert waren Wie bisher habe ich ein System geschrieben, bei dem alle Dateien so lange schreibgeschützt waren, bis sie ein Programm ausführten, das prüfte, ob sie von niemand anderem verwendet wurden, und dann die Verwendung in einer zentralen btrieve-Datenbank (einer relationalen Datenbank mit einer einfachen Abfrage) aufzeichnete api anstatt full sql die auf dem netware server lief). Ein anderes Programm hat die geänderten Änderungen ausgecheckt und auf den Server kopiert.

Obwohl dieses System speziell für die kleine Firma entwickelt wurde, in der ich gearbeitet habe, stelle ich mir vor, dass viele ähnliche Geschäfte ähnliche Prozesse haben.

Jules
quelle
1

Aus eigener Erfahrung: 1985 war MS-DOS Networked Development PVCS verfügbar und zu teuer. Für Apple und alle Nicht-MSDOS-PCs: nichts. Ich habe T-lib (50 US-Dollar) aus dem Jahr 1987 verwendet. Unix-Ports (SCCS) haben um 1990 mit dem Filtern begonnen, SourceSafe um 1992.

Wenn Sie 1995 kein VCS verwendeten, waren Sie nicht ernst.

david.pfx
quelle
Ich würde den letzten Satz in 1985 ändern :( Aber dann habe ich in der Finanzabteilung gearbeitet
user151019
@mark: Ich bezweifle sehr, dass dies für die Entwicklung auf PCs zutrifft. Die meisten Unternehmen ignorierten PCs bis Windows 3.
david.pfx
Es gab eine Menge DOS-Programmierung und 86 benutzte ich PVCS und neue Schreiner hatten Unix-Hintergrund, aber wie bereits erwähnt, waren wir im Bank- und Finanzwesen vorne
Benutzer151019,
@mark: PVCS war definitiv bis 1985 erhältlich, aber für die meisten zu teuer ($ 000). Nur wer sich von größeren Systemen entfernt und Geld zum Brennen hat, würde es benutzen.
david.pfx
-1

1993-1995 war ich bei einem Pensionsmanager mit 15 Entwicklern, die C / C ++ - Entwicklung in SunOS mit SPARCStation 20s und Sun IPX durchführten. Unsere Codebasis befand sich in von NFS gemounteten Verzeichnissen. Ursprünglich haben wir die Versionierung von Kopierordnern durchgeführt , aber irgendwann sind wir zu SCCS gewechselt, und einige Teams haben begonnen, RCS zu verwenden .

1995 wechselte ich zu einer anderen Firma mit über 80 Entwicklern, die in New York, London und Hongkong C / C ++ -Entwicklungen durchführten. Wir haben ClearCase mit dem Multi-Site-Add-On verwendet, um die Entwicklungsumgebung zu verwalten.

ClearCase war gut darin, die Codebasis zwischen Standorten zu synchronisieren, aber zu der Zeit war fast ein Vollzeitadministrator erforderlich, um die Dinge am Laufen zu halten. Es war auch viel langsamer, da ClearCase Dateien in einem virtuellen Dateisystem präsentiert, wobei eine Konfiguration Versionen von Verzeichnissen und Dateinamen mit Platzhaltern basierend auf Verzweigungen, Zeit und / oder Tags angibt. In einem pathologischen Fall könnte man für jede einzelne Datei eine andere Version angeben.

Ed Griebel
quelle
1
Die Frage fragt speziell nach Informationen zu Nicht-Unix-Mikrosystemen, aber die von Ihnen beschriebenen Systeme waren (zu diesem Zeitpunkt) nur auf Unix-Workstations verfügbar.
Jules