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