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 ?
Antworten:
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:
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.
quelle
git mv
. SVN hatsvn 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 ...git mv
wird 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?")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 rebase
das Festschreiben an den SVN-Server wird dann von einem erledigt, der Ihre lokalen Änderungen auf den Subversion-Trunkgit svn dcommit
zurü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).
quelle