On Freitag, 4. Juni 2010 08:55:44 Konrad Rosenbaum wrote:
Ich habe: einen Clone des Git-Repos. Ich brauche: eine Kopie des master-Branch plus ein paar Erweiterungen von mir in meinem SVN
Was muss ich jetzt machen?
Im Allgemeinen ist es aussichtslos, eine Git-Historie in ein SVN zu linearisieren. Andersherum ist es relativ einfach, siehe git-svn (was Robert in seiner Mail beschrieben hat, aber das geht eben in die falsche Richtung).
Am Sinnvollsten (wenn man gezwungen ist, mit Git zu arbeiten), wäre wahrscheinlich, beide Checkouts im selben Verzeichnis zu haben. Du legst dir also einen lokalen SVN-Master an, machst den Initial-Checkout, und kopierst dann den gesamten Git-Klon (inklusive .git-Verzeichnis) rein. Dann stellst du ein, dass die beiden VCS gegenseitig ihre Datenverzeichnisse ignorieren, checkst im Git den Master aus, und commitest das dann ins SVN. Am besten legst du dir bei der Gelegenheit bei dem aktuellen Git-Commit eine Branch an, damit du den wiederfindest.
Dann kannst du im SVN arbeiten, und wenn du deine SVN-Commits dann ins Git pushen möchtest, gehst du per svn up zum ersten Commit nach dem Git-Import, und commitest dann die geänderten Dateien wieder ins Git. Dann holst du mit svn up den nächsten Commit und fügst auch den ins Git ein. Diese Prozedur kann man sicher per Skript automatisieren.
Das ganze Commiten vom SVN nach Git sollte erstmal auf die lokale Branch legen, die du dir beim Import angelegt hast. Am Ende machst du einen Rebase dieser Branch auf den Git-Master, und pushst das ganze dann auf den Git- Server.
Gruß Stefan
P.S. Wahrscheinlich gibts für sowas schon Skripte etc. Tante Google weiß hoffentlich Rat.