En la migración que vamos a realizar, mantendremos tanto los logs como todos sus branches y tags desde un SCV a otro.
Para poder seguir este manual necesitaremos un paquete llamado
git-svn
el cual, según la distribución que usemos, se hará de un modo u otro
Ubuntu, Debian y derivados
apt-get install git-svn
CentOS y derivados
yum install git-svn
1. Creación del repositorio GIT de destino
Para crear el repositorio GIT hacemos uso de un pequeño script que donde se le pasa como único parámetro el nombre del repositorio:
sh makegit.sh mirepo
En este script debes de modificar la definición de las constantes de las primeras líneas para ajustarlo a tu entorno
#!/bin/sh GIT_OWNER="__NOMBRE__PROPIETARIO__" GIT_EMAIL="__EMAIL_PROPIETARIO__" GIT_HOME="__RUTA_COMPLETA_DIRECTORIO_GIT__" GIT_REPO=$1".git" cd ${GIT_HOME} mkdir ${GIT_REPO} cd ${GIT_REPO} git init --bare git config --global user.name ${GIT_OWNER} git config --global user.email ${GIT_EMAIL} git repo-config core.sharedRepository true cd ${GIT_HOME} chown -R git:git ${GIT_REPO} chmod -R 775 ${GIT_REPO} chmod -R g+ws ${GIT_REPO} chgrp -R git ${GIT_REPO}
Lo ejecutamos y creamos el nuevo repositorio GIT.
2. Creamos repositorio GIT vacío
Este repositorio es donde vamos a volcar y transformar todos los datos desde el subversion
cd /tmp/ git svn init -s https://svn.miservidor.com/mirepo migracion cd migracion
3. Usuarios remotos subversion
El siguiente paso es crear un fichero donde vamos a ir poniendo los usuarios subversion, para poder tener la relación de los logs correctamente.
Este fichero tiene el siguiente formato, no debiendo omitir ningún dato
nombre_usuario_1 = Nombre del Usuario 1 <mail1@usuario.com> nombre_usuario_2 = Nombre del Usuario 2 <mail2@usuario.com>
lo guardamos en el fichero
usuarios
y ejecutamos
git config svn.authorsfile usuarios git svn fetch git branch -r | sed -rne 's, *tags/([^@]+)$,\1,p' | while read tag; do echo "git tag $tag 'tags/${tag}^'; git branch -r -d tags/$tag"; done | sh git branch -r | grep -v tags | sed -rne 's, *([^@]+)$,\1,p' | while read branch; do echo "git branch $branch $branch"; done | sh
compactamos el repositorio y quitamos la metadata del subversion
git repack -d -f -a --depth=50 --window=100 git config --remove-section svn-remote.svn git config --remove-section svn rm -r .git/svn
Para poder sacar la lista completa de usuarios subversion desde la misma máquina donde tenemos el repositorio de subversion, podemos ejecutar
svn log -q https://svn.miservidor.com/mirepo | grep -e '^r' | awk 'BEGIN {FS="|"};{print $2}'|sort|uniq
y veremos la lista de todos los usuarios que necesitamos crear en GIT para mantener el log completo y correcto.
4. Integración en GIT
Una vez tenemos el repositorio de subversion pasado a GIT, bastará con asociar el origen y hacer el "push"
cd /tmp/migracion git remote add origin git@miservidor.com:mirepo.git git push --all && git push --tags
y con esto ya tenemos migrado nuestro repositorio subversion a nuestro servidor GIT, y sin perder el histórico.
Cómo añadir un segundo disco para backup en Proxmox
Emanuel
Recuperar la contraseña de acceso a la Extranet de Cliente
Luis.Artola
Timestamp en Linux Bash
Hola
Crear una lista de correo en cPanel
Jair Mtz
Crear una lista de correo en cPanel
Jair Mtz
Cambiar en Linux la fecha y la hora de un fichero
Eduardo
Activar el arranque automático de las máquinas virtuales de Proxmox
Yuleidi Blanco