Spezifische Gründe für die Nutzung von Subversion? [geschlossen]

22

Ich möchte ein Versionskontrollsystem für mein Unternehmen auswählen. Soweit ich weiß, habe ich Git, Subversion und Mercurial.

Heutzutage sehe ich, dass Git am häufigsten verwendet wird. Daher frage ich mich, ob es einen bestimmten Grund gibt, Subversion weiterhin zu verwenden, oder ob ich direkt zu Git wechseln soll.

user1179459
quelle
36
Sie arbeiten beide. Wichtig ist, ob sie Ihren Anforderungen entsprechen, die Sie uns nicht mitgeteilt haben.
Matthew Flynn
11
Bei welchem ​​Argument schließen Sie Mercurial aus?
Mouviciel
8
-1 für den subjektiven (imho ködernden) Wortlaut und "In jenen Tagen sehe ich, dass Git am häufigsten verwendet wird" - Zitat erforderlich. Git ist in der Open Source-Welt sehr verbreitet, im Unternehmensbereich jedoch sehr viel seltener. Corps mögen die Idee eines einzigen, zentralen, maßgeblichen Repository sehr und ändern sich nur sehr langsam. Im Unternehmensbereich ist die Wahrscheinlichkeit, dass Sie einen guten alten CVS sehen, größer als bei SVN, egal bei einem DVCS.
Keith
4
@RobinWinslow - SVN unterscheidet sich von Git. Besser geeignet für einige Umstände und schlechter geeignet für andere. Ich persönlich bevorzuge DVCS im Allgemeinen und Sie bevorzugen natürlich Git, aber beide sind subjektive Meinungen. Sie sind nicht wertlos, aber sie gehören nicht zu einer solchen Site.
Keith

Antworten:

46

SVN ist überhaupt nicht tot. Es ist immer noch sehr verbreitet und wird in Kürze nicht mehr überall eingesetzt. SVN ist viel einfacher zu verwenden als die verteilte Versionskontrolle, insbesondere wenn Sie kein verteiltes Projekt ausführen , für das eine verteilte Versionskontrolle erforderlich ist.

Wenn Sie nur ein zentrales Repository haben (das ist alles, was Ihr Unternehmen benötigt, wenn es noch klein genug ist, um ohne Quellcodeverwaltung auszukommen), ist die Verwendung von SVN für die Interaktion mit dem Repository viel einfacher. Mit SVN können Sie beispielsweise Änderungen mit einem einzigen Vorgang aus dem Repository abrufen oder Ihre lokalen Änderungen daran festschreiben, während für HG und Git zwei oder drei Schritte erforderlich sind, um die entsprechende Arbeit auszuführen.

Und mit den jüngsten Überarbeitungen hat SVN viele Leistungsprobleme behoben, die die Leute dazu veranlassten, HG und Git zu bevorzugen. Es ist jetzt deutlich schneller als vor ein paar Jahren, und es gibt derzeit keinen guten Grund, HG oder Git für Ihr Projekt in Betracht zu ziehen, es sei denn, Sie benötigen tatsächlich die erweiterten Funktionen der verteilten Versionskontrolle.

Mason Wheeler
quelle
16
Ich bin mit Ihrer Einschätzung nicht ganz einverstanden, aber ich möchte einen wichtigen Punkt zugunsten von SVN hinzufügen: Viele Leute in der Branche sind mit SVN vertraut, kennen aber nicht genug Git, um bequem damit zu arbeiten. Wenn Ihr gesamtes Team an SVN gewöhnt ist, kann der Wechsel zu Git mit erheblichen Kosten verbunden sein. (Das Gegenteil kann natürlich auch der Fall sein).
Joachim Sauer
8
Ich würde dieses Dutzend Mal positiv bewerten, wenn ich könnte. Viele Leute gehen mit der Modeerscheinung, aber denken nicht wirklich, warum sie verteilte Quellcodeverwaltung benötigen würden.
Euphoric
21
@Euphoric: Ich weiß genau, warum ich immer eine verteilte Quellcodeverwaltung für jedes Projekt haben möchte. Es hat den wichtigen Nebeneffekt, dass das Verzweigen und Zusammenführen einfach, offensichtlich und zuverlässig ist. Subversion ist in Eckfällen mit Verzweigungen immer noch festgefahren, weil das von ihr gewählte Grundmodell es einfach komplizierter macht.
Jan Hudec
18
Verteilte Versionskontrolle ist keine Modeerscheinung. Es ist eine Weiterentwicklung der Quellcodeverwaltung, genau wie die gleichzeitige Versionskontrolle eine Weiterentwicklung des Paradigmas der Dateisperrung war.
JesperE
6
@MichaelBorgwardt, ich habe es tatsächlich einige Male gemacht. Es ist viel einfacher als bei Subversion, die Tatsache, dass alles lokal ist, hilft viel, es besteht keine Notwendigkeit, die Interaktion von "Client" und "Server" zu erklären. Der Workflow in git oder hg ist viel natürlicher und intuitiver (wenn Sie sich von den kniffligen Dingen wie der Bearbeitung des Verlaufs fernhalten).
SK-logic
19

Client-Tooling wurde noch nicht erwähnt. Mit einem Befehlszeilenskript können Sie sicherlich alles tun, aber die Integration der Benutzeroberfläche kann einen echten Produktivitätsschub bedeuten.

Wir arbeiten hauptsächlich mit Visual Studio. Die Integration in die IDE ist bei SVN definitiv besser als bei Git. Dies kann sich in Zukunft ändern, aber ich würde dies sicherlich ebenso in Ihre Entscheidung einfließen lassen wie die Funktionen der Versionskontrolle.

Wie alles andere ist auch ein Versionskontrollsystem kein Ziel an sich, sondern nur ein Werkzeug, um Sie dahin zu bringen, wohin Sie wollen. Wählen Sie die aus, die Sie je nach Ihrer Situation am schnellsten ans Ziel bringt.

njr101
quelle
Das ist ein guter Punkt. Ich denke, einer der Gründe, warum die Leute Git gegenüber SVN bevorzugen, ist, dass Git über bessere CLI-Tools verfügt. Dies kann jedoch mit einer guten SVN-Benutzeroberfläche von Drittanbietern wie TortoiseSVN unter Windows ausgeglichen werden.
Euphorischer
2
Dies ist einer der Gründe, warum wir Mercurial (und TortoiseHg) für Git ausgewählt haben. Die Vorteile einer verteilten Versionskontrolle und einer angemessenen Tool- und IDE-Integration.
HappyCat
15

Ich bin ein Git-Fan. Vor kurzem musste ich zugeben, dass einer der Nachteile von Git darin besteht, Versionen mit Hashes zu identifizieren, die den Versionsnummern von svn entgegengesetzt sind. Die Versionsnummer kann einfacher per Telefon oder so weitergegeben werden.

Und das ist der einzige Profi, den ich mir vorstellen kann. Wenn Sie sich wirklich auf diese Funktion verlassen möchten, können Sie sie in einem verteilten und / oder zentralisierten VCS- Basar verwenden . In Git gibt es Tags, die diesen Zweck erfüllen können.

Jedenfalls konnte ich mir nicht vorstellen, ohne schnelles Wechseln der Zweige und Verstecken zu entwickeln. Allein diese beiden Features haben SVN geschlagen, und soweit ich mich erinnere, war es für dieselbe Aufgabe erforderlich, einen ganzen Baum in getrennten Verzeichnissen zu erstellen und auszuchecken, um dasselbe Ziel zu erreichen.

Diese so genannten "erweiterten Funktionen der verteilten Versionskontrolle" werden mit der Zeit mitgeliefert und müssen nicht gleich zu Beginn erlernt werden. Hab keine Angst vor ihnen. Sie sind hier, um Ihnen zu helfen und nicht in die Quere zu kommen. Und es ist kein Problem, ein zentrales Repository für ein DVCS einzurichten.

Rajish
quelle
1
Dies ist eigentlich umstritten. Git benötigt nur einen ausreichend großen Teil des Hashs, um eindeutig zu sein. In der Regel sind 6 Zeichen ausreichend, nicht der gesamte Hash.
TC1,
2
In der Praxis gibt man den Git-Hash nie weiter. Sie können ein beliebiges eindeutiges Präfix des Hashs verwenden, das normalerweise 6 bis 7 Zeichen umfasst.
JesperE
1
@JesperE: Ja, aber die SVN-Veröffentlichungsnummern steigen mit der Zeit sequenziell an, während Gits Hashes, selbst wenn Sie sie abkürzen, ebenso zufällig sein können.
Keith Thompson
2

Mit SVN können Sie problemlos Teile eines Repositorys bis auf Ordnerebene auschecken, während Sie mit git das gesamte Repository einschließlich des gesamten Verlaufs abrufen.

Abhängig von der Situation kann dies einige Vorteile für SVN haben

(Dies hat auch einige große Nachteile wie den versteckten ".svn" -Müll ganz oben in Ihrem Ordnerbaum).

Richard Nichols
quelle
3
hinweis: seit v1.7 kein .svn-müll mehr - alles wird jetzt an einem einzigen ort gespeichert.
Gbjbaanb
Dies ist nicht korrekt. Mit git können Sie nur die Dateien auschecken, ohne den Verlauf. Wenn Sie möchten, können Sie auch nur Teile der Repo-Einzeldateien auschecken. Es ist etwas komplexer als SVN, aber die Kapazität ist vorhanden.
Benubird
2

"Wenn Sie eine Aufgabe haben, die in sechs Stunden erledigt werden kann, ist es besser, ein Tool zu schreiben, das dies in 20 Minuten erledigt, selbst wenn das Erstellen des Tools sechs Stunden dauert?"

Die verteilte Versionskontrolle ist eine andere Herausforderung. Es erfordert ein umfangreiches Lernen für jeden Entwickler. Wenn Sie den Puffer für den Lernprozess für jeden Entwickler haben, sollten Sie auf ein gutes verteiltes Versionskontrollsystem umsteigen. Sobald die Lernphase abgeschlossen ist, ist die verteilte Versionskontrolle viel besser als die zentralisierte Versionskontrolle.

Distributed Version Control scheint eine Möglichkeit zu sein. Es ist hier, um für eine sehr lange Zeit zu bleiben, es ist besser, dass wir uns früher als später daran anpassen. Ich erinnere mich an dieselbe Diskussion, als SVN neu war und die Leute an CVS gewöhnt waren. Es wurden viele Argumente dafür angeführt, SVN nicht zu verwenden, aber schließlich wurde SVN das beliebteste Versionskontrollsystem.

Wenn das Unternehmen im vorhandenen Versionskontrollsystem mit viel Quellcode gut etabliert ist, ist der Umstieg auf ein neues System eine große Aufgabe. Wenn das Unternehmen jedoch klein ist oder neu startet, ist der Umstieg auf eine neue Versionskontrolle sehr einfach. Wenn Sie sich jedoch an eine ältere Versionskontrolle halten (in einem neuen Setup), werden Sie in Zukunft irgendwo auf den Engpass stoßen, wo Sie ohnehin eine Migration der Versionskontrolle planen müssen.

Ich habe viele SVN-Profikommentare gesehen, aber alle sind eher von der Art "SVN ist nicht schlecht" als "SVN ist besser". Daher würde ich Ihnen dringend empfehlen, eine verteilte Versionskontrolle (z. B. Git) für Ihr Projekt zu wählen.

EDIT Vorteile von GIT gegenüber SVN

  1. Kein dedizierter Server erforderlich Tatsächlich können beide ohne Server verwendet werden.
  2. Kann auch ohne Netzwerkverbindung weiterentwickelt werden.
  3. Filialverwaltung ist viel einfacher.
  4. Bessere Unterstützung durch CI-Tools wie Bamboo

Jemand nannte Tooling (für Visual Studio) als Grund, sich an SVN zu halten. http://gitscc.codeplex.com/ bietet GIT-Unterstützung für Visual Studio.

Apeirogon Prime
quelle
6
SVN tut Griff Binärdateien besser als Git oder Hg.
Fake Name
2
"Sie werden in Zukunft irgendwo auf den Engpass stoßen, wo Sie irgendwann eine Versionskontrollmigration planen müssen ..." Entschuldigung, ich kann nicht zustimmen, dass dies ein guter Grund ist, heute umzusteigen. Ich habe an vielen Projekten gearbeitet, bei denen dieser Ansatz dazu führt, dass die Dinge komplizierter werden, als sie sein müssen, und das Projekt abgesagt wird, lange bevor es jemals die zukünftigen Vorteile nutzen kann. Manchmal ist gut genug gut genug. Halten Sie sich an YAGNI und nehmen Sie, was der Job heute macht. Es bleibt genügend Zeit, um sich später über Migrationen Gedanken zu machen. Zumindest hast du noch ein Projekt.
njr101
2
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.Dem stimme ich überhaupt nicht zu. Es mag unter bestimmten Umständen einige wahrgenommene Vorteile haben, aber etwas so Einfaches wie die Versionsnummer in svn, die für Menschen lesbar ist, ist in vielen Organisationen ein enormer Vorteil.
TZHX
1
@apeirogon - Alles hängt davon ab, was Sie in das Repository stellen werden. Der HEAD eines der wichtigsten Repositorys, mit denen ich arbeite, ist 11,1 GB! Wenn ich es in einem Git / bzr / hg-Repo hätte, würde es wahrscheinlich mehr als 100 GB aufnehmen.
Fake Name
1
Dies liegt natürlich daran, dass dieses spezielle Repo voller PCB-Dateien und 3D-Modelle ist, die alle im Binärformat vorliegen und nicht sehr platzsparend sind. Die Empfehlung hier (Electronics.SE, z. B. für Personen, die PCB-Design-Dateien usw. speichern) ist ganz anders als für Personen, die Quellcode speichern.
Fake Name
1

Gibt es einen bestimmten Grund, Subversion in diesen Tagen zu verwenden?

Abgesehen von der Werkzeugunterstützung in IDEs (die ich nicht benutze) - nicht wirklich, nein. Natürlich mag SVN vertrauter sein, aber das ist ungefähr der einzige Grund, und ich fand, dass sowohl Hg als auch Git sehr einfach (und sehr schnell) zu lernen sind.

Ja, es gibt all diese komplexen Anleitungen, die beschreiben, wie trivial Git ist, wenn Sie verstehen, dass Zweige nur homöomorphe Endofunktoren sind, die Untermanifolds eines Hilbert-Raums abbilden. 1

Ich verstehe das nicht. Aber weißt du was? Es spielt keine Rolle. Sie müssen nichts davon wissen, um Git zu benutzen.

Git und Hg sind größtenteils einfach zu bedienen und bieten gegenüber SVN entscheidende Vorteile. Der Elefant im Raum verzweigt sich natürlich: Zweige funktionieren nur in Git und Hg. Im Gegensatz dazu sind sie in SVN bestenfalls schmerzhaft und schlimmstenfalls gebrochen (Zusammenführen mehrerer Köpfe).

Natürlich können Sie SVN weiterhin verwenden. Sie können auch weiterhin Windows XP verwenden. Die Mehrheit der Benutzer, die beide ausprobiert haben, ist sich jedoch einig, dass eine der Alternativen weit überlegen ist.


1 Ja, ich verstehe, dass dies ein Witz ist. Ich glaube.

Konrad Rudolph
quelle
Ein Git-Tutorial mit homöomorphen Endofunktoren, die Untervielfaltigkeiten eines Hilbert-Raums abbilden? Ich muss das lesen! Aber trifft dies nicht eher auf Darcs zu, der in Haskell geschrieben ist (worauf sich meiner Meinung nach Endofunctor bezieht) und von der Quantenmechanik inspiriert ist (daher der Hilbert-Raum )? Ich kann wirklich nicht sehen, was Git und HG mit diesen Dingen zu tun haben.
Leftaroundabout
Es ist ein Witz. Die Beschreibung ist nicht einmal korrekt (soweit ich weiß). Es ist ein Riff über die vielen Tutorials, die mit "Git-Zweige sind einfach, sobald Sie das merken ..." beginnen, und danach folgt eine komplexe domänenspezifische Metapher.
Konrad Rudolph
1
Haben Sie jemals darüber nachgedacht, dass all diese zu komplizierten Tutorials aus einem bestimmten Grund existieren? Und wofür ist es überhaupt? Ich habe nie die Besessenheit der DVCS-Masse verstanden, für jede Kleinigkeit einen Zweig zu verzweigen und wieder zu integrieren. Das ist für mich immer eine Lösung auf der Suche nach einem Problem. Die Wiedereingliederung einer Filiale in SVN ist schwierig, da dies eine wirklich blöde und konzeptionell falsche Sache ist und ich wirklich kein Argument finde, das darauf hinausläuft, dass "unser Produkt es sooo viel einfacher macht, das Falsche zu tun". sehr überzeugend.
Mason Wheeler
1
Was die parallele Bearbeitung mehrerer Änderungen angeht, muss ich zugeben, dass dies ein bisschen schmerzhaft ist, aber die richtige Lösung ist das Shelfing, das für die nächste SVN-Veröffentlichung geplant ist. Und die meiste Zeit, wenn Sie gleichzeitig an mehreren Änderungen arbeiten (und vor allem, wenn Sie dies konsequent tun!), Ist dies ein Beweis für ein größeres Problem, das auf Organisationsebene angegangen werden sollte und nicht mit neu aktiviert werden sollte Werkzeuge. (Siehe oben, bezüglich "unser Produkt macht es viel einfacher, das Falsche zu tun" und Joels klassischem Artikel über das Wechseln menschlicher Aufgaben.)
Mason Wheeler
3
@KonradRudolph Das Zusammenführen von Zweigen in den Stamm funktioniert in den neuesten Versionen von SVN einwandfrei. Es wird seit einigen Jahren stetig besser, wo es jetzt sehr gut ist.
Adam Bruss