Komplexes SVN-Repository samt Projektstruktur nach GIT überführen

Hallo Hackerfreunde,

vor 3 Jahren stellte ich eine Frage bez. SVN vs. GIT und nun steht der Umstieg vor der Tür. Wird ja auch Zeit. :rolleyes:

Hauptproblem ist nicht der Einsatz von GIT, sondern das adäquate Umwandeln meines aktuellen SVN Repositories mit mehreren hundert Projekten nach GIT.

Mein SVN Repository ist wie folgt strukturiert:

Code:
C/prj_1 (trunk, branches, tags)
C/prj_2 (trunk, branches, tags)
C/prj_n (trunk, branches, tags)
Java/prj_1 (trunk, branches, tags)
Java/prj_2 (trunk, branches, tags)
Java/prj_n (trunk, branches, tags)
Python/prj_1 (trunk, branches, tags)
Python/prj_2 (trunk, branches, tags)
Python/prj_n (trunk, branches, tags)
Perl/prj_1 (trunk, branches, tags)
Perl/prj_2 (trunk, branches, tags)
Perl/prj_n (trunk, branches, tags)
...
Diese Strukturierung hat sich für mich als sehr praktisch und flexibel herausgestellt, da ich hiermit via SVN sowohl das komplette Repository, als auch alle Projekte einer Programmiersprache, als auch ein einzelnes Projekt, als auch eine einzelne Version eines bestimmten Projektes auschecken kann (aus dem trunk- oder tags-Zweig). Diese Flexibilität ist für mich unerlässlich und muss nach der Überführung des SVN-Repositories nach GIT wieder hergestellt werden.

Aktuell habe ich das komplette SVN-Repository mal in ein einziges GIT Bare-Repository umgewandelt (via git-svn). Da GIT meines bisherigen Wissens nur komplette Repositories klonen kann und im Gegensatz zu SVN keine einzelnen Ordner oder Dateien auschecken kann, ist es mir aktuell nur möglich das GIT Bare-Repository komplett als Workingcopy zu klonen, was sehr unschön ist, da es mehrere GB groß ist.

Es muss nun dieses GIT-Repository in Programmiersprachen und dann innerhalb der Programmiersprachen in Projekte unterteilt werden wie oben dargestellt, so dass ich weiterhin sowohl eine Gesamtheit von Projekten innerhalb einer Sprache als auch jedes Projekt spezifisch klonen und bearbeiten kann.

Ich habe über GIT-Konzepte wie Submodules als auch Subtrees gelesen, rede mir ein verstanden zu haben was diese sind und wie diese funktionieren. Da ich jedoch hunderte von Projekten in SVN habe, suche ich nach einem Weg der Strukturierung, die nur endlich viel Aufwand darstellt.

Ein Aufteilen aller Projekte in Submodules wäre sehr viel Aufwand.

Was ist denn ein in endlicher Zeit durchführbarer und typischer Weg des Umwandelns komplexer SVN-Repositories nach GIT und anschließender Strukturierung?


Greetz
Hackse
 
Ich habe nun Unterverzeichnisse für die Programmiersprachen angelegt und dort die jeweiligen Projektordner des SVN-Repositories in einzelne GIT-Repositories übersetzt, d.h. ein Projekt entspricht einem GIT-Repository.

Diese müssen später noch in verknüpft werden, so dass man auf alle Projekte über ein übergeordnetes Upstream-Repository zugreifen kann.
 
Howdy,

verwende nun GIT seit einem halben Jahr täglich und bin sehr froh, dass ich von SVN auf GIT umgestiegen bin.

Was soll ich sage ... wenn man nur SVN kennt, ist es halt das Nonplus-Ultra. Glücklicherweise ist das vorbei.
 
Für komplexe Entwicklungsprojekte verwende ich Eclipse mit spezifischen Sprach-Plugins (CDT für C/C++, PyDev für Python, ...) und das Plugin EGIT für die GIT-Integration in Eclipse.

Für kleine Programme und Skripte verwende ich den Vim, Makefiles bzw.
Installskripte und GIT auf der Kommandozeile.

GIT ist gegenüber SVN sehr komfortabel und mächtig, die Projekte können im Gegensatz zu SVN physikalisch getrennt verwaltet werden, die Performance ist sehr viel besser, das komplette Projekthandling als auch Backup und Restore sind wesentlich flexibler und einfacher.

Wer GIT kennt und versteht, kann SVN nicht mehr guten Gewissens verwenden.
 
Für komplexe Entwicklungsprojekte verwende ich Eclipse mit spezifischen Sprach-Plugins (CDT für C/C++, PyDev für Python, ...) und das Plugin EGIT für die GIT-Integration in Eclipse.

Ich arbeite gerne mit Eclipse und habe für einige Projekte auch schon Egit genutzt. Was mich dabei gestört hat, war die Tatsache, dass alle Meta-Informationen der Eclipse-Projekte auch in das Repository geladen werden mussten. Anders lassen sich die Projekte von anderen Team-Mitgliedern nicht richtig mit Egit klonen. Wie hast du das gelöst?
 
Zuletzt bearbeitet:
Die notwendigen Metadaten (hier: Javaprojekt) bestehen aus nur 1 KB Daten aufgeteilt auf 3 Dateien.

.classpath
.project
.settings

Mich stören die paar Bytes nicht.

Entwickelt wird bei uns auf einem Branch namens "Development". Dort sind Eclipse's Metadaten vorhanden. Ist ein getesteter Softwarestand erreicht, findet das Merging in den Master-Branch statt. In den Master-Branch werden keine Metadaten von Eclipse übernommen, da diese dort überflüssig sind, zum einen weil Eclipse's Metadaten nichts zur Installation der Produktivversion beitragen, zum anderen, weil auf dem produktiven Master-Branch nicht entwickelt wird und Eclipse diesen somit nicht zu sehen bekommt.

Man kann somit sagen, dass sich das von Dir beschriebene Problem organisatorisch lösen lässt: Im Entwicklungszweig die Metadaten vorhanden lassen und aus dem produktiven Zweig einfach entfernen.
 
Zurück
Oben