Subversion (SVN)
Acerca de SVN
Apache Subversion (SVN) es un sistema de control de versiones centralizado (utiliza un servidor centralizado, y a veces algunos más de respaldo).
Clientes SVN
El cliente SVN más básico es el de modo consola (en Ubuntu, se instala mediante sudo apt install subversion). Existen diversos clientes SVN cuya interfaz es gráfica. Tortoise SVN es un cliente SVN gráfico para Windows que agrega funcionalidades al menú que se despliega al pulsar el botón derecho del ratón dentro de una carpeta. Para Linux existe RabbitVCS, muy semejante. RapidSVN es un cliente SVN gráfico multiplataforma (en Ubuntu se instala con un sudo apt-get install rapidsvn). SVN ofrece además una inferfaz web ("http") para navegar y descargar ficheros, y se puede integrar con TRAC para ofrecer una interfaz web con más funcionalidades.
Comandos básicos
Deberéis descargar el repositorio o trozo de repositorio sobre el que vais a trabajar ("check-out"). Por defecto descarga la última revisión ("HEAD").
svn co https://asrob.svn.sourceforge.net/svnroot/asrob # Cambia la URL (http...) por la del repositorio en cuestión. Posiblemente necesites escribir tu contraseña de usuario del repositorio
A medida que generéis contenido, éste no se "agrega" al repositorio. Al comprobar el "status" del svn tecleando:
svn st
Si has generado ficheros nuevos, la contestación tendrá el siguiente aspecto:
? tu_fichero_nuevo1....
? tu_fichero_nuevo2....
? tu_carpeta_nueva1...
Deberás agregar todo lo nuevo:
svn add * <- Se podría también hacerlo fichero a fichero
Viendo el "status" veréis que: ```bash svn st
A tu_fichero_nuevo1.... A tu_fichero_nuevo2.... A tu_carpeta_nueva1...
Y si hay algún fichero existente modificado, aparecerá como:
```bash
svn st
M tu_fichero_modificado1....
- Sólo falta subir todo al repositorio ("commit").
svn ci -m"He mejorado mi nivel de usuario SVN!"
El cliente de interfaz de texto de SVN exige que se escriba un mensaje que explique el porqué de los cambios realizados entre "revisión" y "revisión".
Otro comando muy interesante es este, que sirve para ver la diferencia entre un fichero con una revisión pasada del mismo:
svn diff -r numero_de_la_revisión_antigua fichero_con_extensión
Cheatsheet
Ignorar cierto fichero o tipo de fichero
Añadir la siguiente línea al fichero config
(en Windows se encuentra en: C:\\Documents and Settings\\\[username\]\\Application Data\\Subversion
, y en Debian/Ubuntu puede encontrarse en ~/.subversion
):
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo Thumbs.db *.aux *.blg *.out *.lof *.suo build
svn diff: con colores
Configuración para svn diff
de colores:
- Instalar
colordiff
. En una consola de una distribución Debian/Ubuntu:sudo apt install colordiff
- Añadir la siguiente línea al fichero
config
(en Windows se encuentra en:C:\\Documents and Settings\\\[username\]\\Application Data\\Subversion
, y en Debian/Ubuntu puede encontrarse en~/.subversion
) como se ha hecho aquí:diff-cmd = colordiff
Marcar ficheros inexistentes como borrados en el proyecto svn
En una consola (gracias: ref):
svn st | grep ^! | awk '{$1=""; print " --force \""substr($0,2)"@\"" }' | xargs svn rm
Marcar ficheros nuevos como añadidos en el proyecto svn
En una consola:
svn st | grep ^? | awk '{$1=""; print " --force \""substr($0,2)"@\"" }' | xargs svn add