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...')
 
m (Un poco de formato)
Línea 6: Línea 6:
 
* Instalar git-svn.
 
* Instalar git-svn.
 
* Crear fichero authors.txt con una correspondencia entre usuarios svn y usuarios git:
 
* Crear fichero authors.txt con una correspondencia entre usuarios svn y usuarios git:
 
+
<pre>
 
inconexo=inconexo <inconexo@maquina.local>
 
inconexo=inconexo <inconexo@maquina.local>
 
+
</pre>
  
 
* Crear el repositorio con:
 
* Crear el repositorio con:
Línea 41: Línea 41:
 
* Crear script de actualización
 
* Crear script de actualización
 
jdr.localgit/update.sh
 
jdr.localgit/update.sh
 
+
<pre>
 
#!/bin/bash
 
#!/bin/bash
  
Línea 58: Línea 58:
  
 
GIT_DIR="$old_GIT_DIR"
 
GIT_DIR="$old_GIT_DIR"
 
+
</pre>
  
 
* Añadir el script al hook de post-receive
 
* Añadir el script al hook de post-receive
 
jdr.git/hooks/post-receive
 
jdr.git/hooks/post-receive
 
+
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
/<path>/jdr.localgit/update.sh
 
/<path>/jdr.localgit/update.sh
 
+
</pre>
 
* Enlazar los ficheros desde el directorio web deseado.
 
* 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.
 
Así, cuando se empujen cambios al servidor, la copia se actualizará y serán directamente visibles en el servidor.

Revisión del 15:17 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

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