2012-06-13 15 views
6

Ho installato git e svn con homebrew sul mio mac che esegue 10.7.4. C'è una versione di svn sulla mia macchina in /usr/bin che sembra essere la versione che utilizza git svn.In che modo git decide quale versione di svn usare in git-svn?

$ 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) 

Quindi, posso modificare la versione di svn che git-svn utilizza? Se è così, come faccio a farlo?

Grazie per la lettura.

--Updated per 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

Che cosa è l'output di 'which svn', e cosa c'è nel tuo' PATH' – Daenyth

risposta

7

Ho fatto un po 'di scavo, e sembra che git-svn usi i collegamenti perl di subversion. Dopo una piccola sperimentazione, ho scoperto che l'installazione di una versione aggiornata di svn con perl abilitato risolve il problema. Su Mac OSX, questo sarebbe qualcosa di simile:

# 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 

Il tuo problema si riduce al semplice fatto che l'installazione di Subversion aggiornata non ha incluso i moduli Perl che accompagnano, in modo da git-svn stava cadendo di nuovo sul più installazione completa del sistema.

Per la registrazione, il collegamento simbolico/usr/bin/svn a/usr/local/bin/svn non ha assolutamente funzionato. Questo non ha nulla a che fare con $PATH o altro, e tutto ciò che ha a che fare con i moduli perl.

+0

Ho provato la soluzione e git svn --version si riferisce ancora alla versione svn del sistema, quindi rinominare '/Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ SVN' in' SVN- old' e '/ Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ auto \ SVN' a 'SVN-old' (usa' sudo') e sostituirlo con symlink da '/usr/local/Cellar/subversion/1.8.8/Library/Perl/ 5.16/darwin-thread-multi-2level/SVN' e '/ usr/local/Cellar/subversion/1.8.8/Library/Perl/5.16/darwin-thread-multi-2level/auto/SVN' rispettivamente – qsoft

1

Il sistema dispone di due versioni di Subversion installato: 1.6.17 in /usr/bin/svn, e 1.7.5 in /usr/local/bin/svn. Quando esegui svn, esso analizza correttamente il tuo $PATH per prelevare quello in /usr/local/bin/svn, ma lo git-svn non dà fastidio e utilizza solo la versione in /usr/bin.

Avendo ottenuto un rapido colpo d'occhio attraverso il codice, non c'è niente in git-svn.pl o Alien SVN-(la libreria Perl Subversion che git-svn usi) che punta esplicitamente a nessuna particolare svn binario, quindi ho il sospetto che sia un titolo "caratteristica" per evitare guardando la tua dogana $PATH.

L'opzione facile, se si ha accesso, è quella di sostituire /usr/bin/svn con /usr/local/bin/svn; possibilmente cancellando e sostituendo con un link simbolico. In caso contrario, ho il sospetto che dovrai scavare nella fonte di git-svn.pl e riscriverlo per accettare la tua personalizzata $PATH.

+0

Ho provato l'idea di symlinking, non ha funzionato, git-svn è ancora riuscito a usare svn 1.6.17, che in realtà non ha senso per me. Vorrei sapere come disinstallare completamente quella versione di svn. – lashleigh

0

Per quelli che arrivano qui con lo stesso problema: Ora Git ha la possibilità di utilizzare la versione del Homebrew di SVN: (! Ho scavato molto tempo prima di trovare)

brew install --with-brewed-svn git 

Spero che questo aiuto

Problemi correlati