2012-10-05 22 views
27

Ich mache ein Entwicklungsprojekt.git svn - Kann ich git und svn gleichzeitig benutzen? keine Notwendigkeit Interaktion zwischen Git und SVN

Das Unternehmen SVN verwendet, so zum Haupt commit und checkout soll über SVN erfolgen.

Allerdings mag ich nicht SVN und bin ein git Benutzer. Nur wenn ich denke, dass mein Code gut ist, werde ich mich an die Firma SVN binden, ich würde gern git für meinen eigenen Geschichtswächter verwenden.

Ich brauche keine git zu tun SVN Sache, noch umgekehrt.

Kann ich meinen gleichen Code mit SVN und Git gleichzeitig kontrollieren? Keine Interaktion zwischen ihnen.

+1

Ignorieren Sie einfach den '.git' Ordner für SVN und den' .svn' Ordner für Git und Sie sollten in Ordnung sein. Oder fragst du, wie man im Grunde beide gleichzeitig drückt/zieht? – Blender

+0

Aber warum? Git funktioniert perfekt mit einem Svn-Repository auf der anderen Seite, warum nicht davon profitieren? –

+3

Sicher möglich, und eine faire Bewegung in Richtung Ihrer Kollegen, nicht unvollendete Änderungen zu schieben. Allerdings ist dort eine _große_ Gefahr versteckt: Sie werden dazu neigen, sehr wenige Commits an das Repository des Unternehmens zu machen. Das bedeutet, dass Sie im Vergleich zu Ihren Kollegen viel mehr Konflikte produzieren werden. Bei Verwendung von Subversion ist es sinnvoll, ein häufiges Commit-Verhalten zu verwenden. Ich musste das auf die harte Tour lernen :-) – arkascha

Antwort

32

Sie können ein Subversion-Repository mit git svn clone <SVN repo URL> auf Ihrem Computer klonen. Der Code wird als Git-Repository verfügbar sein. Du kannst dort deine Arbeit machen und lokale Commits machen, wie es dir gefällt. Es gibt eine Befehlszeilenoption, um ein "oberflächliches" Auschecken anstelle des gesamten Repositorys zu erhalten, was oft nützlich ist. Ich vergesse was es ist.

Zu jeder Zeit möchten Sie den Äquivalent von svn update ausführen, tun Sie eine git svn rebase. Dadurch werden neue Commits abgerufen, die nach der letzten Synchronisierung in SVN eingecheckt wurden. Anschließend werden die Änderungen erneut auf den neuen Tipp übertragen.

Wenn Sie mit Ihren Commits fertig sind, tun Sie eine git svn dcommit. Dadurch werden alle deine neuen Commits einzeln an svn gesendet. Sie können Ihre lokalen Commits auch in einen einzigen quetschen und es senden, indem Sie zuerst eine lokale Rebase und dann eine Svn DCommit machen. Dies sollte im ersten Zweig geschehen (normalerweise master).

Die Tatsache, dass Sie aus Subversion auschecken und dann lokal in git arbeiten, bedeutet, dass es eine "Interaktion" zwischen ihnen gibt, so dass Ihre letzte Aussage nicht gültig ist.

+1

Es wurde eine Änderung an der Antwort vorgenommen, die als Kommentar gepostet werden sollte. Ich habe die Änderung rückgängig gemacht und den Zusatz wortwörtlich in diesem Kommentar gepostet - Es wird allgemein als eine schlechte Übung angesehen, alle Ihre Änderungen als eine einzige Revision zu übernehmen (siehe zB http://stackoverflow.com/questions/107264/how-oft) -zu-commit-changes-to-source-control und http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html). –