2012-06-13 10 views
6

He instalado git y svn con homebrew en mi Mac con 10.7.4. Hay una versión de svn en mi máquina en /usr/bin que parece ser la versión que está usando git svn.¿Cómo decide git qué versión de svn usar en 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) 

Entonces, ¿puedo cambiar la versión de svn que usa git-svn? Si es así, ¿cómo lo hago?

Gracias por leer.

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

¿Cuál es la salida de 'which svn', y lo que está en su' PATH' – Daenyth

Respuesta

7

Hice un poco de excavación, y parece que git-svn utiliza enlaces perl de subversión. Después de un poco de experimentación, descubrí que la instalación de una versión mejorada de svn con Perl habilitado solucionó el problema. En Mac OS X, esto sería algo como esto:

# 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 

Su problema se reduce al simple hecho de que la instalación de Subversion actualizada no incluyó los módulos de perl que acompañan, por lo git-svn estaba cayendo de nuevo en la mayor completar la instalación del sistema.

Para el registro, symlinking/usr/bin/svn a/usr/local/bin/svn no sirvió de nada. Esto no tiene nada que ver con $PATH o cualquier otra cosa, y todo que ver con los módulos perl.

+0

Intenté su solución y git svn --versión aún hace referencia a la versión de svn del sistema, así que cambio el nombre de '/Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ SVN' a' SVN- old' y '/ Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ auto \ SVN' a 'SVN-old' (use' sudo') y reemplácelo con symlink from '/usr/local/Cellar/subversion/1.8.8/Library/Perl/ 5.16/darwin-thread-multi-2level/SVN' y '/ usr/local/Cellar/subversion/1.8.8/Library/Perl/5.16/darwin-thread-multi-2level/auto/SVN' respectivamente – qsoft

1

El sistema tiene dos versiones de Subversion instalado: 1.6.17 en /usr/bin/svn y 1.7.5 en /usr/local/bin/svn. Cuando ejecuta svn, analiza su $PATH correctamente para recoger el de /usr/local/bin/svn, pero git-svn no molesta, y solo usa la versión en /usr/bin.

Habiendo obtenido un rápido vistazo a través del código, no hay nada en git-svn.pl o SVN Alien-(la biblioteca Perl Subversion que git-svn usos) que señala explícitamente a cualquier svn binaria en particular, por lo que sospechan que es una "característica" de seguridad para evitar mirando su personalizado $PATH.

La opción fácil, si tiene acceso, es reemplazar /usr/bin/svn con /usr/local/bin/svn; posiblemente eliminando y reemplazando con un enlace simbólico. De lo contrario, sospecho que necesitará profundizar en la fuente de git-svn.pl y volver a escribir para aceptar su $PATH personalizado.

+0

Probé la idea de symlinking, no funcionó, git-svn aún logró usar svn 1.6.17, lo que realmente no tiene sentido a mi. Desearía saber cómo desinstalar esa versión de svn por completo. – lashleigh

0

Para los que llegan aquí con el mismo problema: Ahora Git tiene una opción para utilizar la versión de SVN del Homebrew: (! Cavé mucho tiempo antes de encontrarlo)

brew install --with-brewed-svn git 

Esperanza esta ayuda

Cuestiones relacionadas