Wo finde ich "SVN für Git-Benutzer" -Ressourcen? [geschlossen]

18

Also nahm ich einen Job an, bei dem die Firma SVN verwendet (aber irgendwann in der Zukunft zu Git wechseln wird). Das Problem ist, dass ich SVN nicht kenne. Ich habe zahlreiche Google-Abfragen ausprobiert und alles, was ich jemals finden kann, sind SVN-> Git-Tutorials, "Warum ist Git besser als SVN" -Blogs und ein bestimmtes "Spickzettel", das (einige) vergleichbare Befehle enthält ...

Was sind die kurzen (aber nicht zu kurzen) Anweisungen an SVN für Git-Benutzer, bevor Sie das O'Reilly-Buch über SVN lesen ?

agent154
quelle
3
Kurz gesagt: a) es gibt keinen Index, b) svn up = git pull, c) svn commit = git commit && git push d) Zweige werden von Verzeichnissen emuliert ... ;-)
Johannes
1
Ich bin mir nicht sicher, wie ich das mehr zum Thema machen kann ...
Agent154
5
Auf keinen Fall. Fast alles ist auf P.SE offtopic.
JensG
@ agent154 Bitten Sie nicht darum, dass wir eine Crowd-Sourcing-Suchmaschine für Sie sind. Identifizieren Sie das Problem, das Sie haben - das Problem ist nicht "wo kann ich Dinge auf svn finden", sondern "Ich versuche etwas zu tun, und ich kann nicht herausfinden, wie es geht." Wenn das für den Befehl 'svn' spezifisch ist und Sie gerade daran arbeiten, es zu schreiben, fragen Sie bei Stack Overflow nach. Wenn das etwas mit dem Workflow und der Organisation von svn zu tun hat (wann verzweigen, wann zusammenführen, wie mit anderen Entwicklern arbeiten), dann frage es hier.
2
Ich denke, das festgestellte Problem ist ein Mangel an Ressourcen, die sogar aus der Ferne verfügbar sind, um SVN als Git-Benutzer zu verstehen. Ehrlich gesagt, würde ich eine Diskussion zu diesem Thema sehr nützlich finden, nachdem ich mehrere Seiten mit Google / DuckDuckGo-Ergebnissen durchgearbeitet habe und nichts anderes als das gefunden habe, was das OP erwähnt hat.
Metagrapher

Antworten:

8

Die kanonische Referenz ist das Subversion RedBook . Unabhängig von Ihren bisherigen Fähigkeiten lesen Sie dies von Neuem und Sie erhalten alle Nutzungsinformationen, die Sie benötigen. Es ist nicht schwierig oder völlig fremd, die meisten Leute sagen, SVN sei viel einfacher zu verstehen als Git, also sollte es Ihnen gut gehen, wenn Sie nur ein bisschen die Hauptbefehle lesen. Das Kapitel über die grundlegende Verwendung sollte Sie ohne Probleme in Betrieb nehmen.

Es gibt 2 Hauptunterschiede:

  • Commit = Push zum zentralen Repo. Es gibt kein Rebase oder Local Commit, auch keine Pulls.
  • Die Verzweigung erfolgt nach Verzeichnis. Wenn Sie sich das gesamte Repo als Verzeichnisstruktur vorstellen, ist das Verzweigen wie das Herstellen eines Symlinks mit einer Schreib-Kopie-Semantik. Während Sie in git das gesamte Repo verzweigen und zwischen diesen wechseln, sodass der neue Zweig Ihre Arbeitskopie überlagert, können Sie mit SVN Teile Ihres Repos austauschen. Im Allgemeinen verzweigen sich die Benutzer in einen Ordner der obersten Ebene (normalerweise als "Zweige" bezeichnet), sodass das Wechseln eher dem "Overlay" -Arbeitsstil von git ähnelt.

Das Verzweigen ist trivial, das Zusammenführen ist bei weitem nicht so schlimm, wie DVCS-Apologeten es ausmachen wollen, besonders wenn Sie sich an das "Standard" -Trio von Ordnern der obersten Ebene (genannt Trunk, Branches und Tags) halten.

Es gibt ein paar Stellen, in denen SVN Git schlägt, und spärliche Verzeichnisse kommen einem in den Sinn - wo Sie nur einen Teil Ihres Repos auschecken. Wenn Sie mehr Teile benötigen, aktualisieren Sie nur das, was Sie benötigen. Wenn Sie ein riesiges Repo haben (z. B. ein Kernprodukt und jede Menge Plugins), ist dies brillant.

Es gibt ein paar Stellen, die nicht so gut wie git sind, und der gefürchtete Baumkonflikt kommt einem in den Sinn - wo Sie einen Konflikt auf Verzeichnisebene haben (dh jemand hat eine von Ihnen bearbeitete Datei gelöscht).

Wenn Sie unter Windows arbeiten, verwenden Sie TortoiseSVN. Es rockt stark.

gbjbaanb
quelle
Hängt davon ab. Das Zusammenführen mit SVN wird schlecht, wenn Dateien von jemandem verschoben (was im Wesentlichen eine gebildete Form des Löschens + Hinzufügens ist, die von SVN selbst verwaltet wird) UND von jemand anderem geändert wurden. Ansonsten nette Antwort.
JensG
1
Ich habe das Problem mit dem Baumkonflikt erwähnt ... Solch ein Zustand ist ein Problem für andere SCMS. Obwohl ich verstehe, dass git eine Heuristik verwendet, um festzustellen, ob die verschobene Datei dieselbe ist, kann es trotzdem falsch sein, wenn die Änderungen erheblich sind. zB wird die Datei in 2) aufgeteilt.
gbjbaanb
Git benötigt keine Heuristiken zum Erkennen von Baumänderungen - der Benutzer muss die Datei mit verschieben git mv. SVN hat svn move, aber da das Verzweigen und Zusammenführen in SVN eine Art Hack ist, glaube ich nicht, dass es automatisch Baumkonflikte lösen kann, wie es git tut ...
Idan Arye
3
@IdanArye git mvwird als Add + Remove implementiert. Git verwendet Heuristiken, um zu bestimmen, ob ein Verschieben oder Kopieren während eines Commits stattgefunden hat (ich denke, der Standardwert ist "ist 80% + der Datei gleich?")
Izkata
3

Verwenden Sie nach Möglichkeit git svn. Ich war in Ihrer Situation und nach einem halben Jahr der Frustration bin ich zu git svn gewechselt und bin seitdem glücklich.

Mit Git svn können Sie das Repository lokal verwenden, und git svn rebasedas Festschreiben an den SVN-Server wird dann von einem erledigt, der Ihre lokalen Änderungen auf den Subversion-Trunk git svn dcommitzurückführt und dann die neu basierten Festschreibungen festschreibt.

Vielleicht ist es nicht optimal für fortgeschrittene Subversion-Nutzung, aber da Sie Git lokal verwenden, ist alles in Ordnung.

Wenn Sie git clone verwenden, sollten Sie nicht den Subversion-Stammordner, sondern Ihr Zielverzeichnis direkt klonen (clone trunk). Dadurch wird Git viel schneller ausgeführt, andernfalls kann Ihre Arbeitskopie sehr groß werden.

Haftungsausschluss : Ich weiß nicht, wie es ist, wenn Sie Subversion-Filialen usw. erstellen möchten. Die Teams, mit denen ich zusammengearbeitet habe, haben keine Filialen verwendet (nur meine lokalen Git-Filialen).

wirrbel
quelle