version control - Was sind die Vorteile der Verwendung von SVN gegenüber CVS?

Translate

Mein Unternehmen verwendet CVS als unseren De-facto-Standard für die Quellcodeverwaltung. Ich habe jedoch viele Leute sagen hören, dass SVN besser ist.

Ich weiß, dass SVN neuer ist, aber ansonsten bin ich mit seinen Vorteilen nicht vertraut.

Was ich suche, ist ein guter, prägnanter Vergleich der beiden Systeme, wobei die Vor- und Nachteile der einzelnen Systeme in einer Java / Eclipse-Entwicklungsumgebung festgestellt werden.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

CVS verfolgt Änderungen nur Datei für Datei, während SVN ein ganzes Commit als neue Revision verfolgt, was bedeutet, dass es einfacher ist, den Verlauf Ihres Projekts zu verfolgen. Fügen Sie die Tatsache hinzu, dass alle modernen Versionsverwaltungssoftware das Konzept der Revision verwenden, sodass die Migration von SVN viel einfacher ist als von CVS.

Es gibt auch das Atomic Commit-Problem. Obwohl ich es nur einmal erlebt habe, ist es möglich, dass zwei Personen, die sich in CVS zusammenschließen, miteinander in Konflikt geraten, Daten verlieren und Ihren Client in einen inkonsistenten Zustand versetzen. Bei frühzeitiger Erkennung sind diese Probleme nicht schwerwiegend, da Ihre Daten noch irgendwo verfügbar sind. In einer stressigen Umgebung kann dies jedoch schmerzhaft sein.

Und schließlich werden nicht mehr viele Tools rund um CVS entwickelt. Während die neuen und glänzend neuen Tools wie Git oder Mercurial definitiv noch keine Tools haben, hat SVN auf jedem System eine ziemlich große Anwendungsbasis.

EDIT 2015: Im Ernst, diese Antwort ist jetzt 7 Jahre alt. Vergiss SVN, benutze Git wie alle anderen!

Quelle
Translate

Einer der vielen Vergleiche:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

Nun, das ist sehr spezifisch für dieses Projekt, aber im Allgemeinen gilt eine Menge Dinge.

Pro Subversion:

  • Unterstützung für versionierte Umbenennungen / Verschiebungen (mit CVS nicht möglich): Fingolfin, Ender
  • Unterstützt Verzeichnisse nativ: Es ist möglich, sie zu entfernen, und sie sind versioniert: Fingolfin, Ender
  • Dateieigenschaften werden versioniert. kein "ausführbares Bit" mehr Hölle: Fingolfin
  • Die Gesamtversionsnummer erleichtert die Build-Versionierung und das Testen von Regressionen erheblich: Ender, Fingolfin
  • Atomic Commits: Fingolfin
  • Intuitives (verzeichnisbasiertes) Verzweigen und Markieren: Fingolfin
  • Einfachere Hook-Skripte (Pre / Post-Commit usw.): SumthinWicked (ich verwende es für Doxygen nach Commits)
  • Verhindert das versehentliche Begehen von Aktenkonflikten: Salty-Horse, Fingolfin
  • Unterstützung für benutzerdefinierten 'diff'-Befehl: Fingolfin
  • Offline-Unterschiede, und sie sind sofort: sev
Quelle
Translate

SVN hat 3 Hauptvorteile gegenüber CVS

  • es ist schneller
  • unterstützt die Versionierung von Binärdateien
  • und fügt Transaktions-Commit hinzu (alles oder nichts)
Quelle
Mat
Translate

Das Subversion-Buch hatein AnhangDarin sind wichtige Unterschiede zu CVS aufgeführt, die Ihnen bei Ihrer Entscheidung helfen können. Die beiden Ansätze sind mehr oder weniger die gleiche Idee, aber SVN wurde speziell entwickelt, um langjährige Fehler in CVS zu beheben, sodass SVN zumindest theoretisch immer die bessere Wahl sein wird.

Quelle
Translate

Ich werde Eridius 'Vorschlag von Git unterstützen, aber ich würde ihn auf das andere DRCS (Distributed Revision Control System) wie zMercurialundBasar.

Diese Produkte sind relativ neu und der Grad an Werkzeugen und Integration mit ihnen scheint im Moment gering zu sein (basierend auf meinen ersten Forschungen). Ich würde sagen, sie waren am besten für die Energieentwickler da draußen geeignet (und hier weiter ;-)).

Auf der anderen Seite, wasnichtCVS derzeit für Sie tun? Von Ihrer ersten Frage an haben Sie eigentlich keine: "CVS ist scheiße, was könnte ich stattdessen verwenden?"

Sie müssen die Kosten einer möglichen Migration gegen die Vorteile abwägen. Für ein bestehendes Projekt denke ich, dass es schwer zu rechtfertigen wäre.

Quelle
Translate

Eine Sache, die man nicht übersehen sollte, ist das Ökosystem. Ich arbeitete in einem CVSNT-Shop und fand immer mehr Open-Source-Tools, die standardmäßig SubVersion unterstützen.

Quelle
Translate

Übrigens: CVSNT unterstützt atomare Commits

Quelle
Translate

Als jemand, der gerade zwischen CVS und SVN wechselt (zunächst haben wir alle unsere Projekte mit cvs2svn umgestellt und dann beschlossen, den Übergang nur mit svn für neue Projekte durchzuführen), sind hier einige der Probleme aufgeführt, die wir hatten.

  • Das Zusammenführen und Verzweigen ist sehr unterschiedlich. Wenn Sie häufig verzweigen und zusammenführen, müssen Sie wissen, wann SVN 1.5 auf Ihrem Server ausgeführt wird (dies ist in den SVN-Dialogfeldern von Tortoise nicht sehr klar). Michael sagt, dass das Verzweigen und Zusammenführen intuitiv ist. Ich würde argumentieren, dass dies nach 10-jähriger Verwendung von CVS nicht der Fall ist.
  • Wenn Sie den SVN-Server unter Linux ausführen, kann es schwierig sein, Ihre SA dazu zu bringen, auf SVN 1.5 zu wechseln, da die Standardinstallation 1.4.x ist.
  • Das Zusammenführen von Konflikten ist in TortoiseSVN bei weitem nicht so einfach oder klar (zumindest für mich und meine Mitarbeiter) wie in TortoiseCVS. Der Drei-Fenster-Ansatz ist gewöhnungsbedürftig und WinMerge (mein bevorzugtes Zusammenführungswerkzeug) führt keine Drei-Fenster-Zusammenführung durch.
  • Achtung: Viele der Online-Tutorials und Zeitschriftenartikel, die ich gelesen habe, verzweigen und verschmelzen offensichtlich nicht. Sie sollten Ihr Haupt-Repository als einrichtenhttps://svn.yoursvnserver.com/repos/YourProject/Trunkund verzweigt sich weiterhttps://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX. Sie können aufräumen, wenn Sie Ihre Repos am falschen Ort starten, aber dies führt zu Verwirrung.
Quelle
Translate

Sie sollten einen Blick darauf werfenGitanstelle von SVN. Es ist ein DVCS, das blitzschnell und sehr leistungsfähig ist. Es ist nicht so benutzerfreundlich wie SVN, aber es verbessert sich in dieser Hinsicht und es ist nichtDasschwierig zu lernen.

Quelle
Translate

CVS (Concurrent Versions System) und SVN (SubVersioN) sind zwei Versionskontrolldateisysteme, die häufig von Teams verwendet werden, die an einem einzelnen Projekt zusammenarbeiten. Mit diesen Systemen können die Mitarbeiter die vorgenommenen Änderungen verfolgen und wissen, wer welche entwickelt und ob ein Zweig auf den Hauptstamm angewendet werden soll oder nicht. CVS ist das viel ältere der beiden und für viele Menschen das Standardwerkzeug für die Zusammenarbeit. SVN ist viel neuer und führt viele Verbesserungen ein, um den Anforderungen der meisten Menschen gerecht zu werden.

Quelle
Translate

Sie können auch nur den neuesten Code von CVS in SVN migrieren und Ihr aktuelles CVS-Repo einfrieren. Dies erleichtert die Migration und Sie können Ihre Legacy-Releases auch im alten CVS-Repo erstellen.

Quelle
Translate

Nun, ein paar Dinge, die ich fühle, machen svn großartig.

  1. Die SVN-Altassian-Tiegelkombination ist eine weit überlegene Methode zur Überprüfung und Qualitätsprüfung
  2. Besseres Management von Konflikten und Zusammenschlüssen
  3. Es ist offensichtlich schneller zum Auschecken, Ausführen von Commits usw.
  4. Das Atomic Commit-Problem - Es ist möglich, dass zwei Personen, die sich in CVS zusammen verpflichten, miteinander in Konflikt geraten, Daten verlieren und Ihre Codebasis in einen inkonsistenten Zustand versetzen

Mit cvs2svn kann die Migration problemlos in wenigen Stunden durchgeführt werden.

Quelle