Sollte ich SVN verstehen, bevor ich zu GIT gehe? [geschlossen]

31

Ich arbeite in einer Abteilung, in der noch niemand zuvor die Quellcodeverwaltung verwendet hat, auch ich nicht.

Ich versuche das Konzept voranzutreiben. Ich habe ein wenig Zeit mit der Erforschung von SVN verbracht. Ich habe ein paar Grundlagen gelernt. Ich kann mit Kommandozeile und von Tortoise erstellen / aktualisieren / auschecken / festschreiben. Ich fange an zu lernen, wie man Äste markiert und verzweigt, bin aber immer noch verwirrt über Konflikte zwischen Ästen und Stamm usw. Ich lerne immer noch, aber ich habe keine physische Person, die mir irgendetwas zeigen kann. Es ist alles aus Büchern / Tutorials und Versuch und Irrtum.

Nach dem, was ich online gelesen habe, scheint gites das Bessere zu sein, aber es ist auch komplizierter. Ich will mich nicht überwältigen. Sollte ich svn weiterhin beherrschen, bevor ich zu git wechsle, oder wäre es klüger, jetzt einfach zu git zu springen?

Gibt es Vor- und Nachteile für beide Ansätze?

JD Isaacks
quelle
Siehe stackoverflow.com/questions/161541/svn-vs-git/2549128#2549128 : Beide unterscheiden sich grundlegend, wie allgemein ein CVCS und ein DVCS ( stackoverflow.com/questions/2704996/… und stackoverflow.com/ questions / 2563836 /… )
VonC
1
gitref.org ist eine großartige Quelle, um Git zu lernen.
Jeremy Heiler
4
Nein, es wird deinen Verstand trüben und dann wirst du "Subversion Umerziehung" brauchen. Auch Git / Mercurial sind die besseren Technologien. Wenn Sie Ihre Mitarbeiter in Subversion schulen, wird es später schwieriger, auf die besten Tools umzusteigen.
Keyo
Try Git ist ein schöner einfacher, gut gestalteter Einstiegskurs
Ben Brocka

Antworten:

58

Nein

Git unterscheidet sich so radikal von SVN, dass es Ihnen nicht weiterhilft. Wenn überhaupt, werden Sie nach "update" - und "commit" -Befehlen suchen und sich fragen, warum alles anders ist.

Beginne mit Git von unten nach oben und gehe von dort aus.


Das Vergleichen eines standardmäßigen zentralisierten Versionsverwaltungssystems für Aktualisierungen / Festschreibungsmuster mit Git gleicht dem Vergleichen eines Busses mit dem Nahverkehr. Ein Bus bringt Sie (und alle anderen) auf genau derselben Strecke von Punkt A nach Punkt B. Der Nahverkehr bringt Sie mit einer beliebigen Route von Punkt A nach Punkt B.

Distributed selbst hat Nachteile, die Sie beachten sollten. Es erfordert mehr Arbeit, um alle auf derselben Seite zu halten. Es bietet jedoch eine enorme Steigerung der Flexibilität.


Revisions-Hashes vs.

Jemand hat Git mit SHA1-Hashes erwähnt, während Hg Zahlen verwendet.

Zuerst müssen Sie selten (wenn überhaupt) die Hashes in täglichen Commits / Pulls direkt verarbeiten. Sie müssen das Protokoll hochziehen und Hashes abrufen, wenn Sie Diffs oder einige der schwierigeren Elemente zum erneuten Basieren ausführen.

Mit Git hat jeder die gleichen Hashes. Verschiedene Repositorys haben keine unterschiedlichen Festschreibungsnummern und alle befinden sich auf derselben Seite. Bei Hg ist das weniger. In der Praxis ist es einfacher, mit anderen Personen zu synchronisieren, wenn Sie die Festschreibungs-Hashes abrufen und mit ihnen arbeiten müssen (entweder zum Vergleichen oder Durchlaufen der Timeline des Codes), wenn Sie Hashes anstelle von Zahlen haben.

Josh K
quelle
3
Vielleicht ist es eine US-Sache, aber ist "Nahverkehr" nicht dasselbe wie "öffentlicher Verkehr", dh Busse, Züge usw.?
Dean Harding
@ Dean: Ja, sie sind die gleichen. Ich habe den Nahverkehr genutzt, weil er sich allgemeiner anfühlte als der "öffentliche Nahverkehr".
Josh K
Hatte mich dort ein bisschen verwirrt, bis ich die Kommentare las, da "MassTransit" ( masstransit-project.com ) auch ein Bus ist ...
FinnNk
3
Ich dachte an ein großes NEIN und es zeigte sich. +1
ZJR
22

Nein, bitte kümmere dich nicht einmal darum.

Im Ernst, starten Sie von einem DVCS. Die Tatsache, dass SVN beliebt ist, macht es nicht zum Standard. Linus Torvalds würde Ihnen sagen, dass es Ihr Gehirn verrotten könnte .

Lesen Sie diesen großartigen Artikel / die Einführung von Joel Spolsky mit dem Titel Subversion Re-education .

Sie könnten auch daran interessiert sein, diese andere Frage zu lesen: Ich bin ein Subversion-Freak, warum sollte ich Mercurial oder Git oder ein anderes DVCS in Betracht ziehen oder nicht?

Wahl zwischen DVCSs

Persönlich verwende ich sowohl Quecksilber als auch Git und ich denke, dass es wichtig ist, beide zu kennen. Eine empfehlenswerte Lektüre dazu ist Git vs. Mercurial: Please Relax (siehe das Beispiel git-addremove). Zwei Zitate aus diesem Artikel, die ich denke, fassen es zusammen.

In Bezug auf Git:

Die Designphilosophie von Git ist eindeutig die von Unix: Im Gegensatz zu Subversion, CVS oder Mercurial ist git keine monolithische Binärdatei, sondern eine Vielzahl individueller Tools, die von hochrangigen „Porzellan“ -Befehlen wie git-pull, git-merge und reichen git-checkout zu einfachen “Sanitär” -Befehlen wie git-apply, git-hash-object und git-merge-file. Wie bei MacGyver können Sie mit Git so gut wie alles tun, was Sie brauchen - dazu gehören fantastische Wiki-Engines, Issue-Tracker, Dateisysteme und Sysadmin-Tools - alles außer der Reparatur von Sicherungen.

In Bezug auf Quecksilber:

Entwickler, die ihr System sauber halten möchten, werden wahrscheinlich die Tatsache zu schätzen wissen, dass hg im Gegensatz zu den 144, aus denen git besteht, eine Binärdatei installiert, und Entwickler, die die Fähigkeit von git, Ihre vorherigen Commits zu bearbeiten, für schwachsinnig, unnötig und gefährlich halten, werden dies zu schätzen wissen Einfachheit hg bietet durch Weglassen dieses besonderen Merkmals.

Viele Projekte finden sich auf Github und Git ist leistungsfähiger, aber es kann auch für Neulinge, insbesondere für Windows-Benutzer, ein wenig einschüchternd sein. Es gibt auch Bitbucket (Github-Äquivalent für Quecksilber).

Meine Empfehlung: Beginnen Sie mit Quecksilber und nehmen Sie, sobald Sie sich damit wohl fühlen, den Schwachsinn in die Hand; Es geht nicht um die Werkzeuge, sondern um die Menschen, mit denen Sie arbeiten .

Was ich für den realen und praktischen Nutzen von subversion halte, ist, nicht für die Arbeit mit anderen Menschen, sondern um vielleicht einen Updater für Ihre Produktionsanwendungen zu implementieren:

  • Derzeit ist svn bei den meisten Hosting-Anbietern fast vollständig installiert
  • Hat eine gute Unterstützung von Teilprojekten (jetzt jedoch in Git und HG adressierbar). svn upund Ihr Projekt und seine Abhängigkeiten werden aktualisiert.

Zitiert Thorbjørn in diesem anderen Thread :

DVCSes sind zu Subversion, was Bittorrent zu ftp ist

Bearbeiten : Wenn es ein VCS gibt, das Sie vor Git kennen sollten, könnte das Mercurial sein (viel benutzerfreundlichere CLI-Oberfläche und eine gute Einführung in die verteilten Konzepte). Dieser Rat gilt insbesondere für diejenigen, die von Subversion kommen, da die CLI in gewissem Maße ähnlich ist. Die verteilte Versionskontrolle kann einfacher zu erlernen sein als die zentralisierte Versionskontrolle, da Sie sich nur um Ihre Repository-Instanz kümmern und nicht um die Client- und Serverteile in getrennten Abschnitten .

dukeofgaming
quelle
1
+1 für nützliche Links. Subversion ist so einfach und gut dokumentiert, dass Sie es bei Bedarf anwenden können, sobald Sie die Ideen der Quellcodeverwaltung in Ihrem mentalen Modell haben.
Gary Rowe
2
Die vorherige Verwendung von SVN könnte Ihren Geist verschmutzen.
5
@ John Es ist bitbucket.org
dukeofgaming
1
Ich würde sagen, der Hauptgrund für die Verwendung von hg wäre die bessere Windows-Unterstützung
jk.
1
Als ich mir Git surport für Windows ansah, stellte ich fest, dass viele Git-Benutzer jeden hassten , der Windows verwendete, und wir entschieden, welche Version besser zu uns passte.
Ian
4

Sie sollten lernen, was Sie verwenden möchten. Git ist beliebt, ebenso wie Mercurial sich einiger Beliebtheit erfreute. Git / Mercurial sind beide verteilte Versionsverwaltungssysteme.

Das Wichtigste bei der Einführung eines neuen Konzepts in ein Team (und es ist bedauerlich, dass die Versionskontrolle für zu viele Teams als neues Thema angesehen wird), ist, Ihre Ziele und Bewertungskriterien zu skizzieren. Sie müssen nicht sehr formell sein, sondern stellen sich folgende Fragen:

  • Was ist der Zweck der Versionskontrolle in unserem Team. Ja, mit allen Versionskontrollsystemen, die alles wert sind, können Sie in die Vergangenheit zurückkehren und sehen, was sich in einer bestimmten Datei geändert hat. Wirst du es jedoch verwenden, um neue Releases zu veröffentlichen? (Nicke mit dem Kopf, du willst das). Dies ist die 2-3-Zeilen-Vision für das, was Sie erreichen möchten.
  • Ist Ihr Team daran gewöhnt, eine eigene lokale Arbeitsumgebung zu haben, um die Dinge später sorgfältig zusammenzuführen? In diesem Fall ist die DVCS-Route möglicherweise am sinnvollsten.
  • Umgekehrt ist Ihr Team es gewohnt, von einem gemeinsamen Laufwerk aus zu arbeiten, und alles ist in ständiger Integration? In diesem Fall ist das traditionellere VCS möglicherweise am sinnvollsten.

Bei der Bewertung Ihrer Alternativen müssen Sie die wichtigen Dinge berücksichtigen, die alle VCS zu tun haben:

  • Basiscode (markierte Zweige, Beschriftungen usw.). Wie erhalten Sie den genauen Quellcode, der in einem Release Ihres Projekts verwendet wird?
  • Holen Sie sich lokale Änderungen auf den zentralen Server. Es muss eine autorisierende Kopie des Codes vorhanden sein - unabhängig davon, ob Sie DVCS oder Standard-VCS verwenden. Jedes Tool behandelt diesen Prozess anders.
  • Übernehmen Sie die Änderungen auf dem zentralen Server in Ihre lokale Kopie.
  • Umgang mit experimentellen Veränderungen. Mit VCSs können Sie mutiger mit vorgeschlagenen Änderungen umgehen, ohne den Quellcode des Hauptprojekts zu beschädigen. DVCS- und Standard-VCS-Systeme gehen das sehr unterschiedlich an - eines davon funktioniert am besten für Ihr Team.
  • Wie richten Sie die Server ein und konfigurieren sie?
  • Benötigen Sie eine Authentifizierung? Wenn ja, wie stellen Sie sicher, dass nur die Personen Änderungen vornehmen dürfen?

Führen Sie am Ende eine schnelle Evaluierung durch, um festzustellen, ob Standard-VCS- oder -DVCS-Systeme für Ihr Team am besten geeignet sind. Sie müssen das Werkzeug auswählen, das am wenigsten Schmerzen bereitstellt, oder es wird wahrscheinlich nicht übernommen. Bewerten Sie anschließend Ihre Alternativen, die Ihren Anforderungen am besten entsprechen.

Erfahren Sie am Ende, was Sie verwenden möchten.

Berin Loritsch
quelle
3

Ich denke, dass viele Leute Git komplizierter finden als Svn, weil es anders ist. Nach einer Weile der Verwendung von Subversion (oder cvs usw.) kann es schwierig sein, mental in ein DVCS-Modell zu wechseln. Auf dieser Grundlage würde ich sagen, dass es für Sie möglicherweise angebracht ist, traditionelle VCS-ähnliche Subversion und DVCS-ähnliche Git zu erforschen.

Obwohl Git mein bevorzugtes VCS ist, würde ich sagen, dass es wahrscheinlich am besten ist, auch Subversion zu lernen. Zum einen gibt es immer noch viele Subversion- und CVS-Repositorys, mit denen Sie möglicherweise eines Tages interagieren müssen, und Sie haben ein besseres Verständnis für die genauen Vor- und Nachteile von DVCS gegenüber herkömmlichem VCS.

Cercerilla
quelle
Ich habe Beweise dafür gesehen, dass es einfacher ist, eine Sprache wie Scheme zu lernen, wenn Sie nicht in prozeduralen Sprachen gearbeitet haben. Dies kann ähnlich funktionieren.
David Thornley
Verwenden Sie also einfach, git-svn cloneum mit dem Repository zu interagieren.
Keyo
3

Es wäre kontraproduktiv, svn und dann git zu lernen

Hier einige Gründe:

  • Gits radikal anders als svn. Git verteilt und svn ist Client / Server.
  • Dieselben Wörter haben unterschiedliche Bedeutungen. Zum Beispiel hat 'git checkout ...' eine andere Bedeutung als 'svn checkout ...'
  • Verzweigung ist anders. Git hat dieses Konzept von "Topic" -Zweigen, die billige lokale Zweige sind, die svn nicht unterstützt.
  • Git hat einen zusätzlichen Platz, den Index, der sich zwischen dem Arbeitsbaum und Ihrem Repository befindet. Svn hat keinen Index. Mit git werden Ihre Änderungen von Ihrem Arbeitsbaum in den Index zum Repository verschoben.

Mein Rat ist, nur Git zu lernen.

Sashang
quelle
2

In GIT und SVN sind einige Dinge im Großen und Ganzen gleich, andere nicht.

Erstellen / Aktualisieren / Auschecken / Festschreiben

Im Großen und Ganzen sollten Sie es leicht abholen.

wie man einen Zweig markiert und verzweigt, aber immer noch verwirrt über Konflikte zwischen Zweigen und Stamm usw

Unterschiedlich zwischen den beiden.

Ich sage nicht, dass du dich jetzt ändern sollst oder nicht (ich denke, das ist dein Aufruf), ich wollte nur darauf hinweisen, dass es etwas ist, das berücksichtigt werden muss. Wenn Sie sicher sind, dass Sie Git ausprobieren möchten, können Sie jetzt wechseln, um sich das Erlernen von etwas in SVN zu ersparen, das sich in Git unterscheidet.

James
quelle
Hören Sie sich auch nicht die Subversion-Bashers an :-p Git ist im Moment sehr "cool" und svn sehr uncool, aber beide haben ihren Platz. Beides zu benutzen ist meilenweit besser, als nichts so Gutes für Sie zu verwenden, um dies einzuführen. Ich habe 2 kleinen Unternehmen VC vorgestellt, es ist schwer, aber es lohnt sich.
James
+1 Tolle Infos, danke. Scheint, als würde ich springen, jetzt wäre eine gute Zeit.
JD Isaacks
und wo ist der Ort für Subversion?
2

Wow; 12 Antworten und jeder bittet noch um die Frage ...

Nein, Subversion ist keine Voraussetzung für Git.

Es gibt keine saubere Zuordnung zwischen Subversion und Git - wenn Sie beides lernen möchten, müssen Sie lediglich die Tatsache in Kauf nehmen, dass dieselben Begriffe für unterschiedliche Aktionen verwendet werden. (Und verschiedene Begriffe für die gleichen Aktionen.)

  • svn commitist etwas anderes als git commit.
  • Zweige in Svn und Git sind sehr unterschiedlich
  • Ein SVN-Repository ist mehr wie eine Git-Fernbedienung (aber nicht wirklich)
  • Ein Git-Repository ist mehr wie eine SVN-Arbeitskopie (aber nicht wirklich)

Dies sind zwei Tools, die durch eine gemeinsame Sprache unterteilt sind.

Ihre Frage und die meisten anderen Antworten gehen davon aus, dass git eine Art von svn ++ ist. Eine "bessere svn". Ist es nicht. Die beiden sind verschiedene Werkzeuge, die im selben Raum arbeiten, wie ein Auto und ein Motorrad.

Ich würde vorschlagen, dass Sie sich eines aussuchen, es meistern und es in Ihrem Team einsetzen. Das Erlernen der Versionskontrolle wird für Leute, die sie noch nicht benutzt haben, schwierig. Ihr VCS wird ein wichtiger Teil Ihrer Infrastruktur sein, und das Erlernen des Vertrauens erfordert die Entwicklung neuer Arbeitsgewohnheiten. Das dauert eine Weile.

(Stellen Sie auf jeden Fall sicher, dass Ihre Sysadmins das Master-Repository sichern - ein Verlust Ihrer Quellcodeverwaltung wäre katastrophal.)

Sean McMillan
quelle
1

Wahrscheinlich nicht - es gibt genügend Unterschiede zwischen serverbasiert und verteilt, die Sie wahrscheinlich nur weiter verwirren würden.

Machen Sie sich von Anfang an daran, bewährte Methoden mit dem DVCS Ihrer Wahl zu befolgen, und Sie werden wahrscheinlich viel glücklicher sein.

Schau dir Mercurial an (wenn du nicht überwältigt werden willst).

Murph
quelle
2
Wenn Sie dagegen stimmen, geben Sie mir bitte mindestens die Höflichkeit einer Erklärung. Vielen Dank. Zwei Möglichkeiten: 1) Ich könnte die Antwort korrigieren oder 2) Ich könnte sie löschen ... aber nur, wenn ich wirklich weiß, warum Sie denken, dass dies fehlerhaft ist
Murph
1

Git ist nur unwesentlich komplizierter als Subversion, da es in Git einen Unterschied zwischen Commit und Push zum zentralen Repository gibt.

Es lohnt sich, Git zu lernen, während Sie die Chance haben, Ihren Verstand durch Subversion unzerstört zu lassen.

David Kendal
quelle
1

Ich denke nicht, dass man Subversion verstehen muss, um Git zu verstehen.

Zumindest für mich ist der größte Unterschied zwischen Git und Mercurial gegenüber Subversion, dass Sie ein lokales Repository haben, mit dem Sie ein- und auschecken, bis Ihr Code funktioniert, aus dem zentralen Repository auschecken, Konflikte beheben und Checken Sie erneut ein und senden Sie einen Push an den Server.

indyK1ng
quelle
1

Ich mag Git in einer Unix-Umgebung (Linux, MacOS X). In Fenstern ist es ein bisschen hacky. Ich würde Mercurial in Betracht ziehen, wenn ich Windows in der Gleichung habe.

Ich mochte deine Geschichtsklassen, probiere SCCS, RCS, CVS, Subversion und benutze dann nützliche Dinge wie Git oder Mercurial.

Git und Mercurial sind gleichberechtigt, der große Bonus von Git ist Github . Aber wenn Sie Ihre Versionskontrolle nicht auslagern möchten, ist Github nicht mehr in der Gleichung.

Shellholic
quelle
1

Versionskontrollsysteme haben etwas gemeinsam mit Programmiersprachen, da das erste, das Sie lernen, die meiste Zeit in Anspruch nimmt. Danach müssen Sie nur noch lernen, wie Kernkonzepte im neuen System zum Ausdruck kommen.

Sie können jetzt Git lernen und bei Bedarf später Zeit in das Erlernen von Suvbersion investieren.

Sharpie
quelle
0

Nee. Laden Sie Git herunter, erstellen Sie ein Github-Konto und spielen Sie ein paar Tage lang mit Repos herum. Git ist ziemlich trivial, um sich auf dem Laufenden zu halten. Lernen Sie 5 oder 6 Bash-Befehle und Sie können alle wesentlichen Aufgaben erledigen. Ich bevorzuge im Allgemeinen die "Idiotensicherheit" einer GUI, aber der Git Bash ist so einfach wie es nur geht. Außerdem ist das Git Gui ziemlich anständig, wenn Sie diese Route bevorzugen. Ich sehe nicht wirklich den Nutzen, den Sie vom Lernen von SVN sehen würden. Vor einiger Zeit habe ich verschiedene Versionskontrollsysteme für ein neues Open-Source-Projekt getestet. Ich habe SVN, Bazaar, Git und ein paar andere ausprobiert und die Grundlagen von jedem gelernt. YMMV, aber Git war bei weitem am einfachsten. Es ist auch nichts Falsches daran, SVN zu lernen, aber es wird dir wirklich nicht helfen, Git zu lernen.

Morgan Herlocker
quelle