Diferencia entre revisiones de «De svn a git»

De Wiki Asqueados
Saltar a: navegación, buscar
(Página creada con 'Proceso que he seguido para realizar el git de las fichas == Crear repositorio a través de svn == * Instalar git-svn. * Crear fichero authors.txt con una correspondencia ent...')
(Sin diferencias)

Revisión del 15:10 11 nov 2011

Proceso que he seguido para realizar el git de las fichas


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

  1. !/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

  1. !/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.