# Git und SVN zusammen?



## Gast2 (3. Mai 2012)

Hallo zusammen,

besteht die Möglichkeit Git und SVN zusammen zu betreiben für eine Übergangsphase? Oder funktioniert "nur" entweder oder?
Kennt jemand gute Tools für Git? Bin für Eclipse auf EGit gestoßen...

Danke


----------



## schalentier (3. Mai 2012)

Du kannst auf ein Subversion Repo mittels Git zugreifen. git-svn(1)

So kann man Git benutzen, ohne das irgendein anderer Entwickler was davon mitbekommt.

Zu den Tools: Das wichtigste Tool ist die Kommandozeile. Am besten du nimmst die Console von einem Linux deiner Wahl oder von MacOS. Wenn du unter Windows entwickelst, nimm Cygwin. 

EGit find ich furchtbar. Muss es aber nur ab und an bei den Kollegen sehen. Da ich IntelliJ benutze, nehm ich deren Git Integration, die mir sehr gut gefaellt. Aber vieles machen ich nach wie vor auf der Cmdline.


----------



## Gast2 (3. Mai 2012)

Wenn ich das richtig verstanden haben, gehen ja beide Richtungen (also genau das was ich suche)...
Ich greife von git auf svn zu und comitte in das svn repo und von svn kann ich was ins git repo committen? 
Mal testen


----------



## schalentier (3. Mai 2012)

Ne nicht ganz. Mit git-svn benutzt du git nur bei dir lokal. Remote gibt es weiterhin nur und ausschliesslich das SVN Repo.

Es gibt auch noch ein Tool irgendwo, was ein SVN Repo und ein zweites Git-Repo miteinander synchronisiert. Dann kannst du per SVN auf das SVN Repo und per Git auf das Git Repo. Bei jedem Commit oder zeitlich gesteuert wird das dann synchronisiert. Bei uns hat sich das aber als ziemlich fehleranfaellig herausgestellt (ein paar Commits sind einfach verschwunden) und wir haben es ziemlich schnell sein gelassen und nur noch git verwendet.


----------



## Gast2 (3. Mai 2012)

schalentier hat gesagt.:


> Ne nicht ganz. Mit git-svn benutzt du git nur bei dir lokal. Remote gibt es weiterhin nur und ausschliesslich das SVN Repo.
> 
> Es gibt auch noch ein Tool irgendwo, was ein SVN Repo und ein zweites Git-Repo miteinander synchronisiert. Dann kannst du per SVN auf das SVN Repo und per Git auf das Git Repo. Bei jedem Commit oder zeitlich gesteuert wird das dann synchronisiert. Bei uns hat sich das aber als ziemlich fehleranfaellig herausgestellt (ein paar Commits sind einfach verschwunden) und wir haben es ziemlich schnell sein gelassen und nur noch git verwendet.



Ok danke...

Dann wäre eigentlich das zweitere das was ich wollte, vielleicht weißt ja noch zufällig wie Tool geheißen hat, mal zum Testen in der Hoffnung, dass es besser geworden ist 

Eine Frage ist mir noch Unklar, sagen wir das wäre alles zuverlässig, dann könnte ein paar im Team mit SVN committen und ein paar mit Git?


----------



## Gast2 (3. Mai 2012)

schalentier hat gesagt.:


> Ne nicht ganz. Mit git-svn benutzt du git nur bei dir lokal. Remote gibt es weiterhin nur und ausschliesslich das SVN Repo.



Hierzu noch kurz eine Frage, wenn ich das git repo dann lokal habe, kann ich es dann nicht mir einem (zentralen) remote git repo mergen?


----------



## TheDarkRose (3. Mai 2012)

SirWayne hat gesagt.:


> Eine Frage ist mir noch Unklar, sagen wir das wäre alles zuverlässig, dann könnte ein paar im Team mit SVN committen und ein paar mit Git?



Nein, entweder nur das eine oder das andere. Irgendwann bekommst noch große merge Probleme. Gewöhnt euch z.b git an, für die Übergangsphase dürfte es auch ein SVN-Frontend auf das git-repo geben.


----------



## schalentier (3. Mai 2012)

Ich hab grad mal mit dem zustaendigen Kollegen geredet, der hat das damals selbst gebaut. Einige Bashscripte, die git-svn verwenden. Aber wie gesagt, das ist weder "mal-eben-so" zu installieren, noch funktioniert es wirklich zuverlaessig. 

Es gibt auch noch git-cvs, damit kannst du per CVS auf ein Git Repo zugreifen (bzw. eben mit jedem CVS Tool). Evtl. waere das noch was...

Ansonsten kann ich nur nochmal sagen: Entscheidet euch fuer oder gegen Git und nehmt dann nur noch das. Am Anfang wird alles bissel nervig, komisch und fremd wirken - aber das gibt sich. Sinnvollerweise solch ein Umstieg nur machen, wenn grad KEIN wichtiges Release/Deadline ansteht. Grad zur Einfuehrung wird die Produktivitaet des Teams sinken. Dagegen kann man leider nix machen.


----------



## Gast2 (3. Mai 2012)

Also ich teste grad ein bischen rum. Mit msysgit geht git svn nicht auf windows.

Aber eigentlich habe ich mir das so überlegt:
1. mit git svn auschecken in lokales git
2. irgendwann in svn committen
3. das lokale git in das zentrale git committen

Sollte doch funktionieren?!?


----------



## TheDarkRose (3. Mai 2012)

Warum willst du mit git und svn gleichzeitig zums*****en. Entscheidet euch für eines von beiden!


----------



## Gast2 (3. Mai 2012)

schalentier hat gesagt.:


> Du kannst auf ein Subversion Repo mittels Git zugreifen. git-svn(1)
> 
> Wenn du unter Windows entwickelst, nimm Cygwin.



Versuch grad das git svn ausführen und bekomme immer "cannot exec 'git-svn': Permission denied".
Hattest du das Problem auch schon mal?


----------



## schalentier (3. Mai 2012)

Was passiert bei "git svn" (also ohne das Minus)?


----------



## Gast2 (3. Mai 2012)

schalentier hat gesagt.:


> Was passiert bei "git svn" (also ohne das Minus)?



ist ohne "-" also "git svn"
mit - "git-svn" kommt Kommando nicht gefunden.


----------



## schalentier (3. Mai 2012)

Mhhh... Welches System benutzt du? Wie hast du Git installiert? Gehen die restlichen Befehle (z.B. git status, git --version)?

Sehr seltsam, wir hatten hier schon alle denkbaren Probleme, aber die von dir gepostete Meldung kenn ich so nicht (wir haben alle Win hier).


----------



## Gast2 (3. Mai 2012)

schalentier hat gesagt.:


> Mhhh... Welches System benutzt du? Wie hast du Git installiert? Gehen die restlichen Befehle (z.B. git status, git --version)?
> 
> Sehr seltsam, wir hatten hier schon alle denkbaren Probleme, aber die von dir gepostete Meldung kenn ich so nicht (wir haben alle Win hier).



Win7, restliche Befehle gehen. 
Git habe ich die exe einfach runtergeladen udn ausgeführt.


----------



## freak_007 (3. Mai 2012)

Ich benutze nicht Windows, aber ich glaube du musst erst einmal git-svn installieren.
Gruß,
Freak


----------



## Gast2 (3. Mai 2012)

freak_007 hat gesagt.:


> Ich benutze nicht Windows, aber ich glaube du musst erst einmal git-svn installieren.
> Gruß,
> Freak



Wie meinst installieren? Also das Paket ist vorhanden sonst würde ja kommen Kommando nicht vorhanden.


----------



## TheDarkRose (4. Mai 2012)

git-svn ist ein eigenständiges Binary. "git svn" ruft intern git-svn auf.


----------



## Gast2 (4. Mai 2012)

Jetzt habe ich mir mal git-svn 1.7.5-1 runtergeladen (also ne ältere Version), damit bekomme ich den Fehler

```
$ git svn clone svn://svn......
Initialized empty Git repository in /cygdrive/c/Users/DME/gitLokal/testGit/.git/
W: Eintrag ist nicht lesbar at /usr/lib/git-core/git-svn line 1785

      1 [main] perl 5636 child_info_fork::abort: unable to remap cygldap-2-3-0.dll to same address as parent (01F50000) - try running rebaseall
      0 [main] perl 1052 child_info_fork::abort: unable to remap cygsvn_client-1-0.dll to same address as parent (01F00000) - try running rebaseall
```


----------



## TheDarkRose (4. Mai 2012)

Probier mal diese Pakete Git for Windows


----------



## Gast2 (4. Mai 2012)

TheDarkRose hat gesagt.:


> Probier mal diese Pakete Git for Windows



Habe ich beide schon runtergeladen und ausprobiert:


```
Use of uninitalized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.8/mysys/SVN/Core.pm line 579
W: Item ist not readable at C:\Git/libexex/git-core\git-svn line 2144
```


Hab jetzt schon SVN 1.7.9 und 1.6.7 probiert. Jetzt finden ich nur SVN 1.7.4.
Git habe ich 1.7.9 und 1.7.4 getestet.

EDIT:

So jetzt habe ich installiert: Subversion 1.7.4-1 git 1.7.9-1
Und bekomme die Nachricht


```
user ~/gitLokal
$ git svn init svn:bla.bla
Initialized empty Git repository in /cygdrive/c/Users//gitLokal/.git/

user ~/gitLokal
$ git svn fetch
W: Eintrag ist nicht lesbar at /usr/lib/git-core/git-svn line 2144

      1 [main] perl 5232 child_info_fork::abort: unable to remap cygsvn_client-1-0.dll to same address as parent (00A80000) - try running rebaseall
      1 [main] perl 5528 child_info_fork::abort: address space needed by 'cygsvn_client-1-0.dll' (0xA80000) is already occupied
```

EDIT EDIT: dann wollte ich das mal testen
Capi’s Corner  git-svn fails with fatal error: unable to remap
aber ich hab im usr die datei gar nicht :autsch:


----------



## freak_007 (6. Mai 2012)

SirWayne hat gesagt.:


> EDIT EDIT: dann wollte ich das mal testen
> Capi’s Corner  git-svn fails with fatal error: unable to remap
> aber ich hab im usr die datei gar nicht :autsch:






> Quit all cygwin processes
> Start ash (<cygroot>\bin\ash.exe) (<edit>Use “Run as Administrator…”</edit>)
> Execute /usr/bin/rebaseall


Auf meinem Win7er funktioniert es. Ich rate dir nur auf die Dauer git UND svn NICHT zu verwenden.


----------



## Gast2 (6. Mai 2012)

freak_007 hat gesagt.:


> Auf meinem Win7er funktioniert es. Ich rate dir nur auf die Dauer git UND svn NICHT zu verwenden.



Ja das ist logisch soll auch nicht auf Dauer sein! 
Auf Linux hat es ohne Probleme funktioniert, auf Win7 bekomme ich alles mögliche Fehlermeldungen.


----------

