Entradas etiquetadas con SVN
Cómo copiar y restaurar un repositorio Subversion en Linux
0Subversion es un software de control de versiones que precedió a Git, y que en su momento disponía del monopolio de este tipo de software.
Debido a que aun quedan algunos repositorios en Subversion (el mismo WordPress aun lo usa), es posible que puedas verte en la situación de disponer de código legado que aun use este CVS.
Si has llegado hasta aquí, bien porque el repositorio de Subversion te ha dado un error y quieres restaurar un backup de tu repositorio, o bien porque estás moviendo el repositorio a una nueva máquina, o simplemente porque quieres asegurarte de no perder los datos, te voy a indicar cómo realizar una copia o backup de tu repositorio de Subversion y restaurarlo donde lo necesites.
Realizar una copia de respaldo (backup) de un repositorio Subversion usando «svnadmin dump»
El comando «svnadmin dump» es el que realizará el trabajo por nosotros. creará un fichero de los datos del repositorio.
svnadmin dump [ruta_del_repositorio] > [nombre_del_fichero_de_respaldo]
Por ejemplo, para realizar un backup del repositorio localizado en la ruta /var/repos/mi_repo habría que ejecutar el siguiente comando:
svnadmin dump /var/repos/mi_repo > backup_mi_repo.dump
Restaurar una copia de respaldo (backup) desde un fichero usando «svnadmin load»
El funcionamiento del comando «svnadmin load» es igual de simple:
svnadmin load [ruta_del_repositorio] < [nombre_del_fichero_de_respaldo]
Por ejemplo, si quisieramos restaurar la copia del repositorio en el fichero anterior al nuevo repositorio que se encuentra en /var/repos/mi_nuevo_repo:
svnadmin load /var/repos/mi_nuevo_repo < backup_mi_repo.dump
Este ejemplo considera que el directorio en el que se restaura la copia es un repositorio nuevo, creado con el comando:
svnadmin create /var/repos/mi_nuevo_repo
Realizar una copia de respaldo (backup) incremental usando «svnadmin dump»
Si realizas backups frecuentes es posible que solo te interesen los cambios realizados desde la última vez que realizaste el backup, para ello la mejor forma es usar el parámetro «–incremental» y especificar la revisión desde la que comenzar (y terminar) usando «-r»:
svnadmin dump [ruta_del_repositorio] --incremental -r [revision_inicio]:[revision_final] > [nombre_del_fichero_de_respaldo]
El parámetro «-r» puede tener como valor solo la revisión de inicio, o bien usar «HEAD» para la revisión final:
svnadmin dump /var/repos/mi_repo --incremental -r 10:HEAD > backup_mi_repo_incremental.dump
Restaurando una copia de respaldo (backup) usando «svnadmin load»
No es diferente a la restauración de la copia de respaldo normal:
svnadmin load /var/repos/mi_nuevo_repo < backup_mi_repo_incremental.dump
Comprimir el fichero de la copia de respaldo
Esto se puede hacer fácilmente con «gzip»:
gzip backup_mi_repo.dump
Este comando generará un fichero con extensión «.gz» y un tamaño mucho más reducido respecto al fichero original, que fácilmente pueden ser cientos de gigabytes.
Para descomprimir el fichero hay que utilizar «gunzip»:
gunzip backup_mi_repo.dump.gz
Subversion y Apache, corregir el error 413 Request Entity Too Large
0Algunas veces, cuando realizamos commits con muchos archivos, Subversion no es capaz de procesar el commit y nos devuelve el error «413 Request Entity Too Large». Este error se produce porque el commit que estás realizando tiene un tamaño superior al que tiene configurado Subversion al hacer la petición.
Para corregirlo hay que añadir los siguientes parámetros al virtual host del servidor de Subversion:
[codesyntax lang=»apache»]
LimitXMLRequestBody 0 LimitRequestBody 0
[/codesyntax]
Con estos dos parámetros eliminarás el límite impuesto por Subversion.
Si lo deseas, en vez de eliminar el límite puedes aumentarlo a 64MB,256MB, etc.
Integración continua: Automatizando la creación de repositorios con Git y Subversion
0La automatización de procesos es una de las tareas esenciales en integración continua, ya que permite estandarizar los procesos (que siempre sean iguales) y ahorrar muchísimo tiempo en el desarrollo de los proyectos.
Lo primero que vamos a automatizar es la creación de repositorios. Para ello vamos a utilizar un script en Bash para poder ejecutarlo en consola a través de ssh. Es posible crear algo parecido con otros lenguajes de programación y además, con una interfaz web que facilite la gestión; pero de momento vamos con lo más básico.
Integración continua: Instalación de Subversion y Git
0Hoy vamos con algo que supongo ya conoceréis, pero que para esta guía es imprescindible: Los repositorios.
Los repositorios, dicho de una forma sencilla: es un lugar donde guardar y mantener un histórico de los cambios que se realizan en el software o proyecto en el que estás trabajando. De momento solo me centraré en su instalación y en una pequeña configuración que será necesaria para lo que aun queda de esta guía.
Instalación de Subversion
Instalar los paquetes necesarios
apt-get install subversion libapache2-svn subversion-tools
Los repositorios los guardaremos en el siguiente directorio:
/var/repos
Se utilizará la url svn.ic.net para obtener los repositorios. Para ello hay que añadir un virtualhost con la siguiente información (etc/apache2/sites-enabled):
ServerName svn.ic.net DocumentRoot /var/www/svn.ic.net <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/repos> Options Indexes FollowSymLinks MutiViews AllowOverride None Order allow,deny allow from all </Directory>
Añadir el dominio al archivo /etc/hosts, si no el sistema devolverá un 200 OK pero no se podrá trabajar con el repositorio.
Todos los repositorios se deberán añadir a este archivo utilizando los tags <Location></Location>, ejemplo:
<Location "/mediawiki"> DAV svn SVNPath /var/repos/mediawiki </Location>
También se pueden añadir los repositorios en archivos separados en /etc/apache2/repos e incluirlos dentro del virtualhost de svn.ic.net, añadiendo la siguiente línea:
Include /etc/apache2/repos
Instalación de Git
Para instalar Git ejecuta el siguiente comando:
apt-get install git
El virtualhost que usaremos será el mismo que el de Subversion, con lo que no tenemos que hacer nada más con git.
Subversion: */props/tempfile.tmp. No se puede hallar la ruta especificada
1A veces las cosas fallan, sin más. Como en este caso, por alguna extraña razón Subversión no podía hallar la ruta especificada. Reviso la ruta y la carpeta no existe. Solución sencilla:
Creas la carpeta props y dentro de ella con el bloc de notas (si hablo de Windows, si estas en otro SO y te da este error (que lo dudo, sobre todo si es GNU/Linux) te dejo que elijas editor de texto xD) creas el archivo tempfile.tmp en blanco sin que tenga ni siquiera un espacio en blanco, le das a «Guardar como…» y en el deplegable elije «Todos los archivos» de esa forma podrás escribir la extensión del archivo y que no te lo guarde como txt.
Solo tienes que volver a realizar el commit y listo.