2010-12-02 12 views
12

He estado usando git-svn y me encanta. Pero simplemente cambiamos nuestro repositorio a uno que requiere una versión svn de 1.5.0 o superior. Actualmente, tengo esto:Cómo actualizar la versión de SVN utilizada por git-svn

triedsound-lm:android holmesj$ git svn --version 
git-svn version 1.7.3.1 (svn 1.4.4) 

triedsound-lm:android holmesj$ svn --version 
svn, version 1.6.15 (r1038135) 
    compiled Nov 29 2010, 13:32:56 

Así, cuando trato de dcommit, me sale este mensaje de error:

... 
... 
A repository hook failed: Commit blocked by start-commit hook (exit code 1) with output: 
Only clients >= 1.5.0 may commit to this repository. 
For upgrade instructions please see: 
    http://twiki.corp.yahoo.com/view/Subversion/SubversionFAQ#Upgrade 
at /usr/local/git/libexec/git-core/git-svn line 573 

Esto es una mierda, no quiero dejar de usar git- svn. Eso en serio sería horrible. Va a apestar si solo tengo que agrupar todos mis commit de git en un gran commit de svn.

¿Alguien sabe cómo actualizar la versión de svn que usa git-svn? Estoy ejecutando esto en OSX 10.5

+0

¿Cómo instalar SVN y GIT? ¿Lo construiste tú mismo? –

+0

SVN i mantuvo que sea fácil e instalado desde http://subversion.apache.org/packages.html#osx git he instalado desde el binario desde git-scm.org, y luego a través de la liberación 1.7.3.2 homebrew. quité el/usr/bin/svn y lo vinculé al svn en/opt/subversion/bin/svn – holmes

Respuesta

9

git-svn está escrito en perl y utiliza el módulo SVN :: Core, por lo que utiliza cualquier versión de la biblioteca svn a la que apunta el módulo. Para hacer que git-svn use una versión más nueva de svn, probablemente puedas actualizar el módulo SVN :: Core del sistema ... un sudo cpan SVN::Core podría ser suficiente. Alternativamente, puede reemplazar las bibliotecas svn en/usr/lib.

No puedo hacer ninguna de las anteriores, ya que no tengo privilegios de administrador en mi máquina de trabajo. Esto es lo que hice para superar eso. Si toma esta ruta, es posible que deba ajustar algunas de las rutas a continuación. Yo uso ~/local/lib, etc. ~/local/bin

Configure las siguientes variables de shell:

export PERL_MB_OPT="--install_base $HOME/local" 
export PERL_MM_OPT="INSTALL_BASE=$HOME/local" 

A continuación, ejecute cpan SVN::Core. En algún momento se preguntará "¿Desea pasar algún argumento para configurar?", A lo que respondí --libdir=/Users/sean/local/lib --prefix=/Users/sean/local. Esto construirá una nueva copia de la biblioteca svn y los enlaces perl para ella, que terminará en ~/local/lib/perl5/.

Ahora, en mi instalación de Git (de origen), git-svn hace esto:

use lib (split(/:/, $ENV{GITPERLLIB} || "/Users/sean/local/lib/perl5/site_perl")); 

Así que moví mi módulo de SVN recién instalado desde ~/local/lib/perl5/ a ~/local/lib/perl5/site_perl. Hay un par de cosas para reubicarse; lib/perl5 su directorio debe ser algo como esto:

alt text

(Podría ser más fácil simplemente para establecer GITPERLLIB a $HOME/local/lib/perl5 y mover Git.pm de site_perl)

soy ningún gurú claramente Perl, así que probablemente haya una mejor manera de lograr todo esto. Sin embargo, puedo confirmar que funciona: git-svn version 1.7.3.1 (svn 1.6.12)

+0

que puedo ejecutar como root, por lo que 'sudo cpan SVN :: Core' se ejecuta. Definitivamente está agarrando Alien-SVN-1.6.12.0 y parece que lo está instalando con éxito. Pero cuando ejecuto 'git svn --version', todavía está enlazando con 1.4.4. Cualquier pensamiento en cuanto a donde debo mirar para asegurar que el nuevo SVN :: Core se está instalando en el lugar correcto. Estoy totalmente perdido cuando se trata de perl – holmes

+0

No sé dónde se instala de forma predeterminada el archivo cpan. Puede estar colocándolo en algún lugar de '/ Library/Perl /', pero encontrando la versión en '/ System/Library/Perl/'primero? ¿O viceversa tal vez? Si lo encuentra, es posible que sólo tenga que configurar la variable SHELL PERL5LIB hacer referencia a ese lugar primero. Alternativamente, puede copiar el módulo SVN recién instalado en el directorio que contiene Git.pm. Si no está seguro de dónde es decir, podrías comprobar a la parte superior de la secuencia de comandos Perl git-svn. Debe estar en libexec/git-core (el directorio libexec al lado del directorio bin que contiene git). –

2

Si puede usar MacPorts, un simple port install git-core +svn instalará una versión reciente tanto de git como del cliente y las bibliotecas svn.

$ git svn --version 
git-svn version 1.7.3.2 (svn 1.6.15) 
+0

"git-core" se ha quedado obsoleta por el GIT puerto. Por favor instale "git" en su lugar. – DanFromGermany

0

Nota: a partir Git 1.7.8 (a finales de octubre de 2012), git svn trabajará con SVN1.7.

Ver "[ANNOUNCE] Git v1.8.0-rc3 ":

" git svn" ha sido actualizado para trabajar con SVN 1.7.

0

Una forma de cambiar la versión de svn utilizada por git-svn es la variable de entorno PERL5LIB al svn-perl correspondiente de la instalación de svn que elija en su sistema. Eso sería hecho mediante la adición siguiente línea al perfil bash:

export PERL5LIB=/usr/local/lib/svn-perl 

La ruta variará dependiendo del directorio de instalación de fijaciones SVN-perl. Por ejemplo, WANdisco cliente SVN hace instalar fijaciones SVN-perl por defecto y es por lo general bajo /opt/subversion/lib/svn-perl. Con homebrew, puede ejecutar el comando siguiente para instalar SVN con fijaciones Perl:

$ brew install subversion --perl 

Para versiones anteriores:

$ brew install subversion17 --perl 
$ brew install subversion16 --perl 

he aprendido acerca de la variable de PERL5LIB here.

0

Para mí, la siguiente secuencia de pasos trabajaron:

  1. Obtener Apache fuente de subversión
  2. Construir la subversión de la fuente utilizando hacer, y luego hacer:
    • maquillaje trago-pl
  3. Instalar subversion usando make install, y luego hacer:
    • make install-trago-pl fuente git
  4. Get git
  5. Construir como de costumbre

Referencia: http://www.linuxfromscratch.org/blfs/view/cvs/general/subversion.html

Cuestiones relacionadas