Frage

Ich habe meine Projekte in 2-Repositories. Ein unter SVN und ein unter Git. Jedes Mal, wenn ich etwas in SVN ändern mag ich die gleiche Sache mit der Git-Repository zu tun.

Sagen, dass ich eine Änderung an SVN-Repository machen, Revision produzierte 125. Wie würde ich die gleichen Änderungen an meine Git-Repository anwenden (vorausgesetzt, meine Git-Repository liegt mit Revision 124 bis heute).

Danke.

War es hilfreich?

Lösung

Was ich eigentlich tat / Suche wurde:

cd /path/to/svn/repo
svn diff -r 125 > /tmp/patch.diff
cd /path/to/git/repo
patch -p0 < /tmp/patch.diff

Andere Tipps

Versuchen:

svn diff | patch -d /path/to/git/repo -p0

Siehe svn help diff, wenn Sie eine bestimmte Revision des diff exportieren möchten.

Warum niemand wie git-svn? Ich kann nicht davon ausgehen, niemand weiß es.

Es gibt git-svn (und git-hg und git-cvs und git-BZR AFAICT). Mindestens mit git-svn Sie einfach tun können,

git svn clone --stdlayout http://myrepo/root here

es (--stdlayout) mit übernimmt Standard trunk / branches / tags / Layout, aber man kann es irgendeine Art und Weise, welche (man git-svn).

Die Abbildung ist bidirektional, so können Sie schieben und ziehen, wie mit einer nativen (git), entfernt. Keine Fragen gestellt.

Wenn Sie einen Patch in SVN generieren gehen und wenden Sie es mit Git später, vergessen Sie nicht verwenden --git Befehlszeilenoption :

  

--git

     

Aktiviert eine spezielle Ausgabemodus für svn diff die für Cross-Kompatibilität mit dem beliebten Git verteiltes Versionskontroll   System.

Zum Beispiel führt

svn diff --git -r 125 > /tmp/patch.diff

Neben der Verwendung von Patch wie oben Sie erwähnt auch eine post-commit Haken , so dass Sie jedes Mal, wenn Sie diese neue etwas verpflichten nicht zu tun haben.

Die unten arbeitete für mich.

Quelle: Wie erstellen und einen Patch mit Git

anwenden

Nehmen Sie sich zuerst einen Blick auf, welche Änderungen im Patch sind . Sie können mit git dies ganz einfach anwenden

git apply --stat fix_empty_poster.patch

Beachten Sie, dass dieser Befehl DOES NOT , um den Patch anwenden, aber nur zeigt Ihnen die Statistiken über das, was es tun werde. Nach spähen in die Patch-Datei mit Ihrem bevorzugten Editor, können Sie sehen, was die tatsächlichen Änderungen sind.

Als nächstes sind Sie daran interessiert, wie mühsam der Patch sein wird . Git können Sie den Patch testen, bevor Sie es tatsächlich anwenden.

git apply --check fix_empty_poster.patch

Wenn Sie keine Fehler erhalten, kann der Patch sauber angewendet werden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top