Thứ Sáu, 15 tháng 2, 2019

System für gleichzeitige Versionen - Wikipedia


Das Concurrent Versions System ( CVS ), auch bekannt als Concurrent Versioning System ist ein freies Client-Server-Revisionskontrollsystem im Bereich von Software-Entwicklung. Ein Versionskontrollsystem verfolgt die gesamte Arbeit und alle Änderungen in einem Dateisatz und ermöglicht die Zusammenarbeit mehrerer Entwickler (möglicherweise räumlich und zeitlich getrennt). Dick Grune entwickelte CVS im Juli 1986 als eine Reihe von Shell-Skripts. [1]

Neben proprietären Softwareentwicklern wurde CVS in der Open-Source-Software-Welt populär und wurde unter der GNU General Public License veröffentlicht. Während in der Vergangenheit regelmäßig Verbesserungen vorgenommen wurden, um Features hinzuzufügen und Fehler zu beheben, [2] einschließlich regulärer Builds und Testergebnisse, [3] gab es seit 2008 keine neuen Versionen. [4]




Features [ edit ]


CVS verwendet eine Client-Server-Architektur: Ein Server speichert die aktuelle (n) Version (en) eines Projekts und dessen Historie, und die Clients stellen eine Verbindung zum Server her, um eine vollständige Kopie des Projekts "auszuchecken". Arbeiten Sie an dieser Kopie und "einchecken" Sie später ihre Änderungen. Normalerweise stellen Client und Server eine Verbindung über ein LAN oder über das Internet her. Client und Server können jedoch beide auf demselben Computer ausgeführt werden, wenn CVS die Aufgabe hat, den Versionsverlauf eines Projekts nur mit lokalen Entwicklern zu verfolgen. Die Serversoftware läuft normalerweise unter Unix (obwohl zumindest der CVSNT-Server auch verschiedene Varianten von Microsoft Windows unterstützt), während CVS-Clients auf allen gängigen Betriebssystemplattformen ausgeführt werden können.

Mehrere Entwickler arbeiten möglicherweise gleichzeitig an demselben Projekt, wobei sie jeweils Dateien innerhalb ihrer eigenen "Arbeitskopie" des Projekts bearbeiten und ihre Änderungen an den Server senden (oder in (19459018) einchecken). Um Konflikte zu vermeiden, akzeptiert der Server nur Änderungen, die an der neuesten Version einer Datei vorgenommen wurden. Von Entwicklern wird daher erwartet, dass sie ihre Arbeitskopie auf dem neuesten Stand halten, indem sie die Änderungen anderer Personen regelmäßig einbeziehen. Diese Aufgabe wird im Wesentlichen automatisch vom CVS-Client ausgeführt, sodass ein manueller Eingriff nur erforderlich ist, wenn ein Bearbeitungskonflikt zwischen einer eingecheckten Änderung und der noch nicht geprüften lokalen Version einer Datei auftritt.

Wenn der Check-in-Vorgang erfolgreich ist, werden die Versionsnummern aller beteiligten Dateien automatisch erhöht, und der CVS-Server schreibt eine vom Benutzer angegebene Beschreibungszeile, Datum und Namen des Autors in seine Protokolldateien. CVS kann nach jedem Commit auch externe, benutzerdefinierte Protokollverarbeitungsskripts ausführen. Diese Skripts werden durch einen Eintrag in der Loginfo-Datei von CVS installiert, die E-Mail-Benachrichtigungen auslösen oder die Protokolldaten in ein webbasiertes Format konvertieren kann.

Kunden können auch Versionen vergleichen, ein komplettes Änderungsprotokoll anfordern oder einen historischen Momentaufnahme des Projekts ab einem bestimmten Datum auslesen (jedoch nicht nach Revisionsnummer, da keine projektweite Revisionsnummer vorhanden ist).

CVS-Server können "anonymen Lesezugriff" ermöglichen, [5] wobei Clients Versionen mit einem leeren oder einfach veröffentlichten Kennwort (z. B. "anoncvs") auschecken und vergleichen können; Nur das Einchecken von Änderungen erfordert in diesen Szenarien ein persönliches Konto und ein Kennwort.

Clients können auch den Befehl "Update" verwenden, um ihre lokalen Kopien mit der neuesten Version auf dem Server auf den neuesten Stand zu bringen. Dadurch entfällt das wiederholte Herunterladen des gesamten Projekts.

CVS kann auch verschiedene "Zweige" eines Projekts verwalten. Beispielsweise kann eine freigegebene Version des Softwareprojekts einen Zweig bilden, der zur Behebung von Fehlern verwendet wird, während eine Version, die sich derzeit in der Entwicklung befindet, mit wesentlichen Änderungen und neuen Funktionen einen separaten Zweig bilden kann.

CVS verwendet die Delta-Komprimierung zur effizienten Speicherung verschiedener Versionen derselben Datei. Dies funktioniert gut bei großen Textdateien mit wenigen Änderungen von Version zu Version. Dies ist normalerweise bei Quellcodedateien der Fall. Wenn CVS hingegen aufgefordert wird, eine Datei als Binärdatei zu speichern, wird jede einzelne Version auf dem Server gespeichert. Das Speichern von Dateien als Binärdateien ist wichtig, um Beschädigungen von Binärdateien zu vermeiden.


In der Welt der Open Source-Software ist das Concurrent Version System (CVS) seit langem das Werkzeug der Wahl für die Versionskontrolle. Und das zu Recht. CVS selbst ist freie Software, und der nicht einschränkende Modus und die Unterstützung des Netzwerkbetriebs, die es Dutzenden geographisch verteilten Programmierern ermöglicht, ihre Arbeit zu teilen, passt sehr gut zum kollaborativen Charakter der Open-Source-Welt. CVS und sein semi-chaotisches Entwicklungsmodell sind zu Eckpfeilern von Open Source geworden.

- Collins-Sussman, Versionskontrolle mit Subversion für Subversion 1.1, 2005



Terminologie [ edit ]]


CVS kennzeichnet ein einzelnes Projekt (eine Gruppe verwandter Dateien), das es als -Modul verwaltet. Ein CVS-Server speichert die von ihm verwalteten Module in seinem Repository . Programmierer erwerben Kopien von Modulen bis zum Auschecken . Die ausgecheckten Dateien dienen als Arbeitskopie Sandbox oder Arbeitsbereich . Änderungen an der Arbeitskopie spiegeln sich im Archiv wider, indem sie begehen. Um Update zu erwerben oder die Änderungen im Repository mit der Arbeitskopie zusammenzuführen.



CVS wurde entwickelt:


  • Um symbolische Links auszuschließen, da sie bei der Speicherung in einem Versionskontrollsystem ein Sicherheitsrisiko darstellen können. Beispielsweise kann eine symbolische Verknüpfung zu einer vertraulichen Datei im Repository gespeichert werden, wodurch die vertrauliche Datei auch dann zugänglich ist, wenn sie nicht eingecheckt ist. Anstelle symbolischer Verknüpfungen können Skripts, die bestimmte Berechtigungen erfordern und ein bewusster Eingriff erforderlich ist, eingecheckt werden CVS. Zitat benötigt ]

  • Verwenden Sie den in ASCII-Zeichen enthaltenen ASCII-Zeichensatz in Dateinamen, wobei die Verwendung mehrsprachiger Dateinamen ausgeschlossen wird. Viele Unix-Systeme laufen jetzt in UTF-8, [6] und CVS auf solchen Systemen behandelt UTF-8-Dateinamen nativ.

  • Erstellen Sie Revisionen pro Datei und nicht einen Bezeichner für alle während eines Festschreibens erstellten Revisionen bezeichnet als atomic jedoch nicht im Sinne einer Transaktionsdatenbank, wobei ein Commit automatisch zurückgesetzt wird, wenn es aus irgendeinem Grund fehlschlägt, sondern in dem Sinne, dass jedes Commit eindeutig identifiziert werden kann. Diese Entwurfsentscheidung wurde auch dann getroffen, wenn Server leicht unzureichend belastbar waren, um ein Commit ohne Absturz durchzuführen. Die mangelnde Atomizität wird dadurch gemildert, dass in vielen Codeverwaltungsprozessen Entwicklungsarbeit für Verzweigungen ausgeführt und nach der Codeüberprüfung in den Trunk zusammengeführt wird. Diese endgültige Verschmelzung ist atomar, und wird im Rechenzentrum von QA [ Zitat benötigt durchgeführt. Die Verfolgung jedes Commits kann durch Ändern des korrekten Auslösers durchgeführt werden.

  • Um anzunehmen, dass der Großteil der Arbeit auf dem Stamm erfolgt und dass die Zweige im Allgemeinen kurzlebig oder historisch sind. Wenn sie wie geplant verwendet werden, sind die Filialen einfach zu verwalten und die Filialvorgänge sind effizient und schnell. [7] [8]

  • Es wird erwartet, dass Textdateien der im CVS gespeicherte primäre Dateityp sind Repository [ Zitat benötigt ] . Es werden jedoch auch Binärdateien unterstützt, und Dateien mit einer bestimmten Dateierweiterung können automatisch als binär erkannt werden.

  • Diese Änderungen würden häufig auf die zentral eingecheckten Kopien von Dateien festgeschrieben, um die Zusammenführung zu erleichtern und eine schnelle Verteilung zu fördern von Änderungen an alle Benutzer [ Zitat benötigt ] daher gibt es keine Unterstützung für verteilte Revisionskontrollen oder nicht veröffentlichte Änderungen.

Geschichte und Status [ bearbeiten ]


Dick Grune entwickelte CVS als Frontend für das Revisionskontrollsystem (RCS), ein älteres Versionskontrollsystem, das einzelne Dateien, aber nicht ganze Projekte verwaltet.


Ich habe CVS gegründet, um mit meinen Studenten, Erik Baalbergen und Maarten Waage, beim Compiler ACK (Amsterdam Compiler Kit) C zusammenarbeiten zu können. Wir drei hatten sehr unterschiedliche Zeitpläne (ein Schüler war ein fester 9-5-Arbeiter, der andere war unregelmäßig und ich konnte nur abends an dem Projekt arbeiten). Ihr Projekt lief von Juli 1984 bis August 1985. CVS hieß anfangs cmt, aus dem offensichtlichen Grund, dass es uns erlaubt wurde, Versionen unabhängig festzulegen.



Grune veröffentlichte den Code am 23. Juni 1986 öffentlich. [9]

Der Code, der schließlich zur aktuellen Version von CVS wurde, begann mit Brian Berliner im April 1989, später mit Beiträgen von Jeff Polk und vielen anderen Mitwirkenden. Brian Berliner schrieb ein Papier, in dem er seine Verbesserungen des CVS-Programms vorstellte. Darin wird beschrieben, wie das Tool von Prisma, einem Drittanbieter, der am SunOS-Kernel arbeitet, intern erweitert und verwendet wird und zum Nutzen der Community unter der GPL veröffentlicht wurde. Am 19. November 1990 wurde CVS Version 1.0 der Free Software Foundation zur Entwicklung und Verteilung vorgelegt. [10]

CVS unterstützt verteilte, Multi-Site- und Offline-Vorgänge aufgrund der Unzuverlässigkeit der wenigen Computernetze, die zu der Zeit existierten, als sich CVS entwickelte.


Entwicklungsstatus [ edit ]


Es gibt keine offiziellen Ankündigungen, die den Projektstatus anzeigen.


  • Die neueste Version wurde am 8. Mai 2008 veröffentlicht (vor 10 Jahren, 8 Monaten und 30 Tagen). [4]

  • Seit 2008 gibt es einige Bugfixes für die Wartung im CVS-Projekt des CVS-Projekts. [11]

  • Es wurden seit der letzten Codeänderung keine Fehler oder Verbesserungen gemeldet [12] die abgeschlossen sind (Erfüllen der Anforderung für eine Korrektur). Es gibt insgesamt 9 Berichte, von denen die meisten Fragen sind. Fragen werden in der Regel schnell beantwortet, wenn sie auf der Mailingliste gestellt werden.

  • Die Info-cvs-Mailingliste beantwortet aktiv Fragen. [13]

  • Links auf der offiziellen CVS-Seite, die auf die externe Website ximbiot.com verweisen wie "Current Events" sind tot, [14] und das CVS-Wiki. [15] Archivierte Informationen sind über neue Links verfügbar.

  • Die letzte Nachricht in der Cvs-Announce-Mailingliste wurde am 8. Mai 2008 veröffentlicht ( Vor 10 Jahren, 8 Monaten und 30 Tagen.] [16]

  • Der letzte Code-Check-In für das CVS-Code-Repository erfolgte am 30. März 2011 (vor 7 Jahren, 10 Monaten und 8 Tagen). [17]

Entwicklung Die Portierung von CVS für Microsoft Windows, Linux, Solaris, HPUX, I5os und Mac OS X ist in ein separates Projekt namens CVSNT aufgeteilt, das derzeit in der Entwicklung ist. [18]


Beziehung zu GNU [ edit ]


Die Beziehung zwischen CVS und dem GNU-Projekt ist seit langem etwas mehrdeutig: das GNU-Web site verteilte das Programm und bezeichnete es auf einer Seite mit "GNU-Paket" und auf einer anderen mit "anderem GPL-lizenzierten Projekt". Im Jahr 2008, als die Entwicklung von CVS von der alten Website (cvshome.org) auf die Hosting-Plattform von GNU Savannah übertragen wurde, wurde es in den Bereich "Nicht-GNU" aufgenommen. [19] Ferner befindet sich CVS auf dem FTP-Download-Server von GNU verteilt im "non-gnu" -Verzeichnis.


Nachfolger [ edit ]


Im Laufe der Zeit haben Entwickler neue Versionskontrollsysteme auf CVS-Basis entwickelt, um Funktionen hinzuzufügen, das Betriebsmodell zu ändern und die Produktivität der Entwickler zu verbessern. CVS-Ersatzprojekte umfassen CVSNT (erstmals veröffentlicht 1998), Subversion [20][21] (ursprünglich veröffentlicht 2004 [22]) und EVS (zuerst veröffentlicht 2008).


Siehe auch [ edit ]



IDEs mit Unterstützung für CVS [ edit





  1. ^ "CVS - Concurrent Versions" System v1.12.12.1: Übersicht ". ximbiot.com - Per Cederqvist. Nach dem Original am 15. April 2012 archiviert . 9. Dezember 2011 .

  2. ^ "CVS Change Log" . 22. Februar 2011 .

  3. ^ "CVS Test Results" . 22. Februar 2011 .

  4. ^ a b "Concurrent Versions System - News". Free Software Foundation, Inc., 8. Mai 2008 . 19. April 2016 .

  5. ^ Charles D. Cranor; Theo de Raadt (1999). "Das Quell-Repository mit anonymem CVS öffnen, USENIX 1999" (PDF) .

  6. ^ Kuhn, Markus (2009-05-11). "UTF-8 und Unicode-FAQ" . 2010-07-07 .

  7. ^ Collins-Sussman, Ben; Greg Ward (September 2004). "Subversion-Benutzer: Re: Performance (Subversion vs. CVS)". Subversion-Benutzer . 2010-07-07 .

  8. ^ West, Adrian (Juli 2004). "cvs branchtag performance fix". Archiviert aus dem Original am 03.08.2009 . 2010-07-07 .

  9. ^ Dick Grune (3. Juli 1986). Msgstr "CVS, ein RCS - Frontend (cvs)". Newsgroup: mod.sources. Usenet: 122@mirror.UUCP . 14. September 2016 .

  10. ^ erste Veröffentlichung von Version 1.0; CVS-NEWS-Datei

  11. ^ "CVS ChangeLog" . 25. Mai 2009 .

  12. ^ "Offene Anforderungen für Korrekturen / Funktionen" . 17. Januar 2013 .

  13. ^ "CVS Mailing List" . 17. Januar 2013 .

  14. ^ "Current Events" . 15. Januar 2013 .

  15. ^ "CVS Wiki" abgerufen. Nach dem Original am 30. November 2010 archiviert. Abgerufen 15. Januar 2013 . Unternehmen, die kommerzielle Unterstützung für CVS anbieten, sind im CVS-Wiki aufgeführt.

  16. ^ "Stable CVS Version 1.11.23 Released!". Cvs-Announce-Mailingliste . GNU . Abgerufen 15. Januar 2013 . Stabiles CVS 1.11.23 wurde veröffentlicht. Stabile Releases enthalten nur Fehlerkorrekturen aus früheren Versionen von CVS.

  17. ^ "Savannah CVS Surfing - Index von / cvs / ccvs / src" . Abgerufen 15. Januar 2013 . gpg.c (parse_signature_subpacket): Korrekter Spout-> Rohspeicherzuordnung. (Berichtet von David Taylor .)

  18. ^ "Über das CVSNT-Projekt". Geschichte . March Hare Software . Abgerufen 15. Januar 2013 . CVS Suite 2009R2 wurde im Juli 2011 mit verbesserter Unterstützung für die Versionsverwaltung von PL / SQL-Triggern / -Prozeduren usw. veröffentlicht. CVS Suite 2010 wird derzeit für die Veröffentlichung vorbereitet. Ein bedeutendes Upgrade: CVS Suite 2012 befindet sich in der letzten Planungsphase und wird voraussichtlich Anfang 2012 veröffentlicht.

  19. ^ Hinweis: Alle Seiten im Nicht-GNU-Bereich enthalten automatisch den Hinweis "Dieses Projekt ist kein Bestandteil von "Das GNU-Projekt", also ist dies nur eine automatische Folge des Nicht-Gnu-Abschnitts, keine von GNU speziell zu CVS gemachte Bemerkung. "Concurrent Versions System - Zusammenfassung" . Abgerufen 15. Januar 2013 . Dieses Projekt ist nicht Teil des GNU-Projekts.

  20. ^ "Subversion-FAQ: Warum gibt es dieses Projekt?". Subversion . 21. September 2009 .

  21. ^ "Dispelling Subversion FUD". Ben Collins-Sussman. Nach dem Original am 18. Juli 2011 archiviert. Abgerufen 30. Juni 2010 .

  22. ^ Subversion erschienen am 26. Februar 2004: und der CHANGELOG-Beweis kann hier gefunden werden

  23. Barrett, Arthur (2010-06) -25). "Anonym oder Entwickler-Checkout mit TortoiseCVS" . 2010-07-10 .

  24. ^ Barrett, Arthur. "TortoiseCVS Anweisungen - Sourceforge" . 2010-07-10 .


Referenzen [ edit



Externe Links [ bearbeiten ]








Không có nhận xét nào:

Đăng nhận xét