De svn a git
Proceso para tranformar un repositorio de svn (llamado 'jdr') en uno de git y compartirlo remotamente.
Contenido
Crear repositorio a través de svn
- Instalar git-svn.
- Crear fichero authors.txt con una correspondencia entre usuarios svn y usuarios git:
inconexo=inconexo <inconexo@maquina.local>
- Crear el repositorio con:
git svn clone --prefix=svn/ --stdlayout --authors-file=authors.txt http://localhost/svn/jdr -s git-jdr -T/
- Actualizar el repositorio svn con los cambios que hagamos en git (si queremos por algún motivo seguir manteniéndolo actualizado):
git svn dcommit
Crear repositorios en el servidor
Necesitamos dos repositorios para el invento: uno contra el que hacemos el push, que no tendrá copia de trabajo, y otro que sí tenga copia de trabajo y tire del primero.
Repositorio sin copia de trabajo
- Crear directorio jdr.git en el sevidor
- Iniciar el repositorio sin copia de trabajo
user@server:jdr.git# git --bare init
- Crear el destino remoto en el repositorio local:
user@local:git-jdr$ git remote add server.net user@server.net:jdr.git
- Empujar el repositorio a la rama master del servidor
user@local:git-jdr$ git push server.net
Repositorio que sirve los datos
Todo esto ejecutar en el servidor remoto
- Clonar el repositorio
git clone jdr.git jdr.localgit
- Crear script de actualización
jdr.localgit/update.sh
#!/bin/bash dir=`dirname "$0"` old_GIT_DIR="$GIT_DIR" unset GIT_DIR cd "$dir" git pull if [ $? == 0 ] then echo "Repositorio $dir actualizado con éxito" else echo "ERROR: No se ha podido actualizar el repositorio $dir" fi GIT_DIR="$old_GIT_DIR"
- Añadir el script al hook de post-receive
jdr.git/hooks/post-receive
#!/bin/bash /<path>/jdr.localgit/update.sh
- Enlazar los ficheros desde el directorio web deseado.
Así, cuando se empujen cambios al servidor, la copia se actualizará y serán directamente visibles en el servidor.