Este breve artículo demuestra cómo saber si un directorio corresponde con una copia de trabajo de algún repositorio SVN.

Una copia de trabajo de Subversion es un directorio ordinario en un sistema de archivos local, el cual contiene una colección de archivos. Es posible editar los mismos, ya que se trata de una copia privada, una especie de área de trabajo (o desarrollo, mejor dicho). Subversion nunca incorporará cambios hechos por otros en nuestra copia de trabajo, ni hará nuestros cambios disponibles a los demás, salvo que uno explícitamente se lo ordene. Incluso es posible tener múltiples copias de trabajo locales de un mismo proyecto.



Luego de realizar cambios en los archivos de una copia de trabajo, y verificar que sean correctos, Subversion permite "publicar" los mismos al resto del equipo escribiendo en el repositorio remoto. A su vez es posible incorporar cambios de terceros en nuestra copia de trabajo, leyendo nuevamente los archivos en el repositorio remoto.

Es posible identificar una copia de trabajo de un repositorio Subversion fácilmante dado que incluyen un subdirectorio ".svn". Este directorio se denomina "directorio administrativo", y ayuda a Subversion a reconocer cuáles de los archivos bajo seguimiento contienen cambios sin publicar, y qué archivos están desactualizados respecto al trabajo del resto del equipo.

webadmin@www-devel:~$ cd /usr/local/proyectos/www
webadmin@www-devel:/usr/local/proyectos/www$ ll
total 40
drwxr-x--- 9 www-data www-data 4096 jun 29  2018 .
drwxr-x--- 7 www-data www-data 4096 jun 29  2018 ..
drwxr-x--- 5 www-data www-data 4096 jul  2  2018 data
drwxr-x--- 6 www-data www-data 4096 jul  2  2018 data-compiled
drwxr-x--- 9 www-data www-data 4096 jul  2  2018 php
-rw-r----- 1 www-data www-data 3711 may 16  2013 phpconf.ini
drwxr-x--- 3 www-data www-data 4096 jul 10  2018 scrips
drwxr-x--- 4 www-data www-data 4096 jul  2  2018 .svn
drwxrwx--- 2 www-data www-data 4096 nov  8  2017 tmp
drwxr-x--- 7 www-data www-data 4096 jul  2  2018 www

Se observa que el directorio /usr/local/proyectos/www corresponde con una copia de trabajo de SVN, dado que contiene un subdirectorio ".svn". Es posible entonces ejecutar el comando svn info para obtener información del mismo:

webadmin@www-devel:/usr/local/proyectos/www$ svn info
Ruta: .
Working Copy Root Path: /usr/local/proyectos/www
URL: https://svn.linuxito.com/svn/www/trunk/2.0/www
Relative URL: ^/trunk/2.0/www
Raíz del repositorio: https://svn.linuxito.com/svn/www
UUID del repositorio: abc123def456
Revisión: 222
Tipo de nodo: directorio
Agendado: normal
Autor del último cambio: webadmin.www
Revisión del último cambio: 222
Fecha de último cambio: 2018-07-10 12:44:36 -0300 (mar 10 de jul de 2018)

Esta salida muestra la URL del repositorio e información del último cambio sobre el mismo.

Si en cambio se corre svn info sobre un directorio que no corresponde con una copia de trabajo de SVN, la salida es la siguiente:

webadmin@www-devel:/usr/local/proyectos/www$ cd ..
webadmin@www-devel:/usr/local/www/webadmin/2.0$ svn info
svn: E155007: '/usr/local/www/webadmin/2.0' no es una copia de trabajo

Buscar todas las copias de trabajo en un sistema

Para encontrar todas las copias de trabajo presentes en un sistema de archivos local, simplemente buscar todos los directorios llamados ".svn":

root@www-devel:~# find / -type d -name '.svn'
/usr/local/flask/.svn
/usr/local/proyectos/www/.svn
/usr/local/proyectos/intra/.svn

Es posible encontrar y obtener información al mismo tiempo sobre todas las copias de trabajo existentes en un simple comando:

# find / -type d -name '.svn' | rev | cut -d '/' -f2- | rev | xargs svn info

Referencias


Tal vez pueda interesarte


Compartí este artículo