2009-05-22 5 views
4

Ich habe mit Git zu Hause gespielt und ich mag die Idee von lokalen Commits. In der Lage zu sein, kleinere Änderungen zu begehen, ohne meinen potentiell kaputten Code an alle zu verteilen, ist nett, ebenso wie kleinere Änderungen wegen der häufigeren Commits rückgängig zu machen.Wie kann ich Git lokal in einer SVN + Visual Studio-Umgebung verwenden?

Ich habe über den Befehl git-svn gelesen, aber ich bin mir nicht sicher, ob ich völlig verstehe, wie es funktioniert. Wir arbeiten an Visual Studio 2008-Projekten und führen VisualSVN aus, das Dateiumbenennungen, Verschiebungen und alles, was für uns von der IDE ausgeht, behandelt.

Was ich wissen möchte ist: Ist es mir möglich, zu einem lokalen Git-Repository zu committen, sondern auch zum entfernten SVN-Repository zu verpflichten? Ich würde gerne VisualSVN Änderungen verfolgen und commit von innerhalb der IDE, aber auch in der Lage sein, git zu verwenden, um Änderungen vorübergehend zu speichern. Werden sie sich wahrscheinlich in die Quere kommen?

Antwort

1

Ich habe git-svn verwendet, um vom Remote-Repository "zu aktualisieren", aber ich habe es nicht verwendet, um in ein SVN-Repository zu committen, also kann ich Ihnen nicht über diesen Teil helfen.

Was Sie tun, ist einfach, mit allen Einstellungen auf Standard:

>git svn init <url......> 
>git svn fetch 

Wenn Sie das tun, um es zu einem „remote“ Zweig holt namens „git-svn“. Um es mit Ihrem aktuellen Zweig fusionieren:

>git merge git-svn 

Sie in einige Probleme laufen können, wenn Sie mit git-svn nach der Tat. Was ich damit meine ist: Sie haben das Projekt bereits mit svn ausgecheckt, dann haben Sie auch ein git-Repository in Ihrem lokalen svn-Arbeitsverzeichnis erstellt. Dann verwendest du git-svn darüber.

Zwei Fragen, die ich zu tun hatte:

  1. Zeilenende. svn könnte Zeilenenden in Fenster konvertieren, während git-svn sie in Unix-Stil erhalten. So können Sie aufgrund der Unterschiede in den Zeilenenden viele Konflikte bekommen.

    Um sicher zu sein, verwenden Sie ein Werkzeug, um Zeilenenden für alle Dateien zu Unix (oder Windows, je nachdem, welche Zeilenende in der Svn Repo verwendet wird) zu konvertieren.

  2. svn Schlüsselwort Expansion. z.B. $Id$

    git-svn wird diese Schlüsselwörter nicht erweitern, während svn wird. Sie werden also auch Konflikte haben. wieder zu verwenden, ein Werkzeug (oder ein Skript schreiben), die alle Instanzen von $Id .......crap.....$ wandelt nur Id `

$ $
2

Es funktioniert wunderbar. Tue es. Überprüfe einfach nicht deinen .git-Ordner in svn.

bearbeiten: ähm, wenn ich es tue, störe ich nicht mit git-svn. Ich behandle nur das lokale Arbeitsverzeichnis für SVN wie jedes andere Verzeichnis, und ich sorge mich nicht viel um den vorherigen SVN-Verlauf.

+0

Cool, ich irgendwie hatte wie die vorherige SVn Geschichte in git zu bekommen, aber es ist nicht ein Deal Breaker. –

Verwandte Themen