Categories
German Technics

Umstieg von SVN auf Git

Hinweis: Vorab muss ich sagen, dass ich jedes Projekt (bisher) unter Windows erstellt habe und somit nur die Windows-Clienten verwende.

Das Leben mit SVN

CVS habe ich schon von Anfang aus ausgelassen, da dem SVN nachgesagt wurde, dass es die Weiterentwicklung und somit in einigen Punkten besser ist. Ich habe das nie näher verfolgt und kann das somit auch nicht weiter bestätigen oder dementieren. Somit bin ich gleich mit dem TortoiseSVN-Client eingestiegen und war echt zufrieden damit.

Musste ich mal selbst einen SVN Repository anlegen, so habe ich auf einer Linux-Maschine das Apache-Modul eingesetzt. Unter Windows nutzte ich die Software VisualSVN. Online hatte und habe ich mehrere Repositories auf Projectlocker.com, wo man kostenlos SVN und GIT gleichzeitig nutzen kann, natürlich nicht für ein Projekt, schon mal als Tipp für alle potentiellen späteren Git-Nutzer ;)

Solange das SVN Repository erreichbar war, war SVN echt klasse, da ich immer und überall committen konnte. Nur wenn man mal unterwegs war, oder eben keinen Zugriff gehabt hatte, war das committen (soweit ich weiß) einfach nicht möglich. Somit wurde innerhalb eines Commits sehr viel Änderungen übergeben, welches das Zurücksetzen nicht so toll gestaltete.

Wieso aber nun Git?

Überrascht wurde ich vor längerer Zeit von Git. Ich bin mehr oder weniger durch Zufall darauf gestoßen und habe mir ein paar Dinge von einem Kommilitonen zeigen lassen. Hier nur ein paar Dinge, die ich (nach einiger Nutzung) besser finde:

  • Es gibt einen ebenbürtigen Client für Windows namens TortoiseGit (wobei man hierzu noch msysgit benötigt).
  • Der Login läuft (je nach Server) verschlüsselt ab. Man authentifiziert sich hierbei mittels eines Zertifikats oder aber auch über einen normalen Login (Username/Password).
  • Es liegt nur ein Ordner für Meta-Daten vor, der im Root-Verzeichnis des Projekts liegt. Dies nennt sich .git. Fragt man einen SVN-Nutzer, wie er ein Projekt vom SVN befreit? :) Er muss jedenfalls viele Ordner löschen. Ebenso gestaltet es sich z.B. wenn man ein Repository auf einen FTP kopieren will, aber doch bitte ohne diese .svn-Ordner. Das läuft mit Git mit wesentlich weniger Aufwand ab.
  • Übertragung läuft nicht über den Apache, sondern über gesonderte Protokolle (siehe Wikipedia). Somit ist man unabhängig von anderen Projekten.
  • Es gibt keinen zentralen Server, denn man kann in jedes Repository — der Ordner .git im Root-Verzeichnis ist selbst ein Repository — committen. Man benötigt somit keinen Server mehr, sondern alles läuft über Dateien, was sehr bequem ist.

Weiter bin ich in der Nutzung noch nicht gekommen, da ich immer alleine das Repository genutzt habe :) Branches und dergleichen habe ich mir noch nicht angeschaut. Somit kann ich über diese Features auch noch nichts sagen.

Ich hoffe, ihr habt ein wenig einen Eindruck von Git erhalten. Vor allem, wenn man schon erfolgreich SVN einsetzt sollte man sich überlegen, ob man nicht umsteigt. Es fehlen bisher immer noch gute (native) Integrationen in IDEs, als dass es bisher etwas ausmachen würde, welches System man nutzt.

In diesem Sinne noch einen schönen Donnerstag.

3 replies on “Umstieg von SVN auf Git”

Hallo Armin,

ein paar Dinge möchte ich noch erwähnen:

“[…] Dies nennt sich .git. Fragt man einen SVN-Nutzer, wie er ein Projekt vom SVN befreit? :) Er muss jedenfalls viele Ordner löschen. Ebenso gestaltet es sich z.B. wenn man ein Repository auf einen FTP kopieren will, aber doch bitte ohne diese .svn-Ordner. […].”

Das mit einem Verzeichnis ist richtig, das man viele davon löschen muss, allerdings nicht.

TortoiseSVN bietet eine “Export”-Option an, die alle Dateien aus dem Repository rauskopiert, ohne diese lästigen .svn Ordner.
Klar, ist zwar auch ein Klick mehr, aber die ganzen .svn Order muss man nicht löschen.

Bezüglich dem Apache: Ich bin mir nicht ganz sicher, allerdings nutze ich auf dem Laptop auch SVN ohne vorherige Apache-Installation. Das Repository liegt auf einer anderen Maschine (per VisualSVN), angesteuert wird das ganze über das svn:// und nicht über das http:// Protokoll.

Der englischen Wiki ist dazu noch zu entnehmen: “There is also an independent server process called svnserve that uses a custom protocol over TCP/IP”

Man ist also auch bei SVN nicht zwingend an den Apachen gebunden.

Liebe Grüße,

Manuel

Da muss ich dir Recht geben, man kann die Daten exportieren, wobei da ein zusätzliches Problem auftritt. Was ist mit dem Daten, die noch *nicht* im Repository sind? Soweit ich es noch weiß, gab es keine Möglichkeit diese mit einem Export exportieren zu lassen (welch gelungene Wortwahl :) ), ebenso war es mit den ignorierten Datein. Da fehlte etwas die Flexibilität. Diese Ein-Ordner-Lösung von Git ist hier definitiv gelungener, ebenso hat man um so schneller ein Projekt von Git befreit.

VisualSVN erzeugt im Endeffekt aber auch einen Server, mit dem man kommuniziert. Bei Git braucht man im Prinzip gar keinen, sondern kann sich nur auf Dateien verlassen, was sehr praktisch ist, vor allem wenn man einen Rechner mit weniger Leistung hat — ich denke hierbei an Notebooks, mit denen man unterwegs arbeitet. Das mit dem Apache hätte man wahrlich anders ausdrücken sollen. Ich meinte, dass man keinerlei Server-Software benötigt und, wie schon eben erwähnt, nur auf Dateien zurückgreifen kann.

Zudem will ich keinen von SVN abbringen, sondern vielmehr das Interesse an Git wecken, da es echt gelungen ist.

Leave a Reply to armin Cancel reply

Your email address will not be published. Required fields are marked *

Captcha * Time limit is exhausted. Please reload CAPTCHA.