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.
version-control
git
svn
user1179459
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle
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).
quelle
"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
Kein dedizierter Server erforderlichTatsächlich können beide ohne Server verwendet werden.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.
quelle
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.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.
quelle