2012-06-13 6 views
6

Ich habe git und svn mit Homebrew auf meinem Mac 10.7.4 installiert. Es gibt eine Version von svn auf meiner Maschine in /usr/bin, die die Version zu sein scheint, die git svn verwendet.Wie entscheidet git, welche Version von svn in git-svn verwendet werden soll?

$ git --version 
git version 1.7.10.4 

$ svn --version 
svn, version 1.7.5 (r1336830) 

$ git svn --version 
git-svn version 1.7.10.4 (svn 1.6.17) 

$ /usr/bin/svn --version 
svn, version 1.6.17 (r1128011) 

Also, kann ich die Version von Svn ändern, die git-svn verwendet? Wenn ja, wie gehe ich vor?

Danke fürs Lesen.

--Updated für comment--

$ which git svn 
/usr/local/bin/git 
/usr/local/bin/svn 

$ echo $PATH 
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin 
+1

Was ist die Ausgabe von 'which svn', und was ist in Ihrem' PATH' – Daenyth

Antwort

7

Ich habe ein wenig gegraben, und es sieht so aus, als ob git-svn subversions Perl-Bindungen verwendet. Nach ein wenig experimentieren, fand ich, dass die Installation einer aktualisierten Version von svn mit perl aktiviert das Problem behoben. Unter Mac OSX, würde dies in etwa so gehen:

# First, I had to take ownership of the perl libs dir, 
# so homebrew could create perl modules 
chown $USER -R /Library/Perl/5.12/darwin-thread-multi-2level 

# Then, remove and reinstall Subversion, but add the perl option: 
brew remove svn 
brew install --perl svn 

# Lastly, reinstall git (this may be optional, but it may also help.) 
brew remove git 
brew install git 

Ihr Problem läuft darauf hinaus, die einfache Tatsache fest, dass die aktualisierte Subversion Installation das beiliegende Perl-Module nicht enthalten, so git-svn wurde auf der mehr zurückfallen Komplette Systeminstallation.

Zur Erinnerung, symlinking/usr/bin/svn zu/usr/local/bin/svn hat absolut nicht gut. Das hat nichts mit $PATH oder irgendetwas anderem zu tun, und alles, was mit Perl-Modulen zu tun hat.

+0

Ich habe versucht, Ihre Lösung und git svn - Version immer noch auf die System svn Version verweisen, so benenne ich die '/Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ SVN' in' SVN- alt' und '/ Library/Entwickler/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ auto \ SVN' zu 'SVN-alt' (benutze' sudo') und ersetze ihn durch symlink von '/usr/local/Cellar/subversion/1.8.8/Library/Perl/ 5.16/darwin-thread-multi-2level/SVN' und '/ usr/local/Keller/subversion/1.8.8/Library/Perl/5.16/darwin-thread-multi-2level/auto/SVN' – qsoft

1

Ihr System hat zwei Versionen von Subversion installiert: 1.6.17 in /usr/bin/svn und 1.7.5 in /usr/local/bin/svn. Wenn Sie svn ausführen, analysiert es Ihre $PATH korrekt, um die in /usr/local/bin/svn abzuholen, aber git-svn stört nicht, und verwendet nur die Version in /usr/bin.

Nachdem hatte einen kurzen Blick durch den Code, es gibt nichts in git-svn.pl oder Alien-SVN (Perl Subversion-Bibliothek, die git-svn Anwendungen), die svn verweist ausdrücklich eine bestimmte binäre, so dass ich vermute, es ist eine Sicherheit „Feature“ zu vermeiden Blick auf Ihre benutzerdefinierte $PATH.

Die einfache Option, wenn Sie Zugriff haben, ist /usr/bin/svn durch /usr/local/bin/svn ersetzen; möglicherweise durch Löschen und Ersetzen mit einem Symlink. Andernfalls vermute ich, dass Sie in die Quelle von git-svn.pl graben und es neu schreiben müssen, um Ihre Gewohnheit $PATH anzunehmen.

+0

Ich versuchte die symlinking Idee, es hat nicht funktioniert, git-svn immer noch Svn 1.6.17 zu verwenden, die wirklich keinen Sinn macht mir. Ich wünschte, ich könnte diese Version von svn vollständig deinstallieren. – lashleigh

0

Für diejenigen, die hier mit dem gleichen Problem erreichen: Jetzt GIT hat eine Option, die Homebrew-Version von SVN zu verwenden: (! Ich vor langer Zeit ausgegraben, es zu finden)

brew install --with-brewed-svn git 

Hope this Hilfe