Área de configuración de parámetros de ejecución

Subversion proporciona muchos comportamientos opcionales que pueden ser controlados por el usuario. Muchas de estas opciones son del tipo que el usuario querría aplicar a todas las operaciones de Subversion. Así que en lugar de obligar a los usuarios a recordar parámetros de línea de comando para especificar estas opciones, y usarlos para todas y cada una de las operaciones que realicen, Subversion usa ficheros de configuración, segregados en un área de configuración de Subversion.

El área de configuración de Subversion es una jerarquía de dos capas de nombres de opciones y sus respectivos valores. Normalmente, esto se reduce a un directorio especial que contiene ficheros de configuración (la primera capa), que son simplemente ficheros de texto en un formato INI estándar (con secciones, las cuales forman la segunda capa). Estos ficheros pueden ser modificados fácilmente usando su editor de texto favorito (como Emacs o vi), y contienen directivas leídas por el cliente para determinar qué comportamiento opcional, de varios a elegir, prefiere el usuario.

Estructura del área de configuración

La primera vez que el cliente de línea de comando svn es ejecutado, crea un área de configuración para el usuario. En sistemas tipo Unix, este área aparece como el directorio .subversion en el directorio home del usuario. En sistemas Win32, Subversion crea un directorio llamado Subversion, típicamente dentro del área Application Data del directorio de perfil del usuario (el cual, por cierto, suele ser un directorio oculto). No obstante, en esta plataforma la ubicación exacta difiere de sistema a sistema, y es dictada por el registro de Windows. [33] A lo largo del libro nos referiremos al área de configuración de cada usuario usando su nombre Unix, .subversion.

Además del área de configuración de cada usuario, Subversion también reconoce la existencia de un área de configuración global de sistema. Ésta le permite al administrador de sistema establecer valores por defecto para todos los usuarios en una máquina determinada. Tenga en cuenta que el área de configuración global de sistema por sí sola no dicta reglas obligatorias—los parámetros del área de configuración de cada usuario tienen prioridad a los globales, y los parámetros proporcionados en la línea de comando al programa svn tienen la palabra final sobre el comportamiento. En plataformas tipo Unix, el área de configuración global de sistema estará posiblemente en el directorio /etc/subversion; en máquinas Windows, se busca el directorio Subversion dentro de la ubicación común Application Data (de nuevo, especificada por el registro de Windows). A diferencia del caso específico de cada usuario, el programa svn no intentan crear un área de configuración global de sistema.

El área de configuración actualmente contiene tres ficheros—dos ficheros de configuración (config y servers), y un fichero README.txt que describe el formato INI. En el momento de su creación, los ficheros contienen los valores por defecto para cada una de las opciones soportadas por Subversion, en su mayoría con comentarios y agrupadas con descripciones textuales que indican cómo los valores de cada opción afectan al comportamiento de Subversion. Para cambiar un comportamiento dado, sólo necesita cargar el fichero de configuración adecuado en su editor de texto, y modificar el valor de la opción deseada. Si en algún momento desea recuperar los valores de configuración por defecto, puede simplemente borrar (o renombrar) su directorio de configuración y entonces ejecutar algún comando svn inocuo, como svn --version. Entonces se creará un nuevo directorio de configuración con el contenido por defecto.

El área de configuración de cada usuario también contiene una cache de datos de autenticación. El directorio auth agrupa un conjunto de subdirectorios que contienen trozos de información guardada usada por los varios métodos de autenticación soportados por Subversion. Este directorio es creado de tal manera que sólo su usuario tiene permiso para leer su contenido.

La configuración y el registro de Windows

Además del área de configuración habitual basada en ficheros INI, los clientes de Subversion ejecutados en plataformas Windows también pueden usar el registro de Windows para almacenar datos de configuración. Los nombres de las opciones y sus valores son iguales que en los ficheros INI. La jerarquía fichero/sección también se mantiene, aunque especificada de una manera ligeramente diferente—en este esquema, los ficheros y las secciones son simples niveles del árbol del registro de claves.

Subversion busca valores de configuración global de sistema bajo la clave HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion. Por ejemplo, la opción global-ignores, que pertenece a la sección miscellany del fichero config, se encontraría en HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Config\Miscellany\global-ignores. Los valores de configuración de cada usuario debería poder encontrarlos en HKEY_CURRENT_USER\Software\Tigris.org\Subversion.

Las opciones de configuración almacenadas en el registro son procesadas antes que sus versiones en ficheros de texto, por lo que sus valores son sobreescritos por lo que contengan los ficheros de configuración. En otras palabras, en un sistema Windows, la prioridad de configuración sigue el siguiente orden:

  1. Opciones de línea de comando

  2. Ficheros INI de cada usuario

  3. Valores de registro de cada usuario

  4. Ficheros INI globales de sistema

  5. Valores de registro globales de sistema

Además, el registro de Windows no soporta el concepto de que algo esté comentado. No obstante, Subversion ignorará cualquier opción cuyo nombre comience con el carácter almohadilla (#). Esto le permite comentar de forma efectiva una opción de Subversion sin tener que borrar la clave completa del registro, obviamente simplificando el proceso de recuperación de esta opción.

El cliente de línea de comando svn nunca intenta modificar el registro de Windows, así que no intentará crear ahí ningún área de configuración por defecto. Puede crear las claves que necesita usando el programa REGEDIT. Alternativamente, puede crear un fichero .reg, y entonces hacer doble click sobre ese fichero desde una ventana de explorador, lo cual hará que los datos sean fusionados en su registro.

Ejemplo 7.1. Fichero ejemplo de registro (.reg).

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\groups]

[HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\global]
"#http-proxy-host"=""
"#http-proxy-port"=""
"#http-proxy-username"=""
"#http-proxy-password"=""
"#http-proxy-exceptions"=""
"#http-timeout"="0"
"#http-compression"="yes"
"#neon-debug-mask"=""
"#ssl-authority-files"=""
"#ssl-trust-default-ca"=""
"#ssl-client-cert-file"=""
"#ssl-client-cert-password"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auth]
"#store-auth-creds"="no"

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\helpers]
"#editor-cmd"="notepad"
"#diff-cmd"=""
"#diff3-cmd"=""
"#diff3-has-program-arg"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"#global-ignores"="*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#*"
"#log-encoding"=""
"#use-commit-times"=""
"#template-root"=""
"#enable-auto-props"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\tunnels]

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auto-props]

El ejemplo anterior muestra el contenido de un fichero .reg que contiene algunas de las opciones de configuración más usadas y sus valores por defecto. Tenga en cuenta la presencia tanto de opciones globales de sistema (para opciones relacionadas con proxys) como opciones de cada usuario (programas de edición y almacenamiento de claves, entre otras). Fíjese también que todas las opciones están comentadas. Sólo tiene que eliminar el carácter almohadilla (#) del comienzo de cada nombre de opción, y poner los valores que desee.

Opciones de configuración

En esta sección discutiremos las opciones específicas de parámetros de ejecución soportados actualmente por Subversion.

Servers

El fichero servers contiene opciones de configuración de Subversion relacionadas con las capas de red. Hay dos nombres de sección especiales en este fichero—groups y global. La sección groups es esencialmente una tabla de referencias cruzadas. Las claves en esta sección son nombres de otras secciones en el fichero; sus valores son máscaras—palabras textuales que posiblemente contienen caracteres comodines—que son comparadas contra los nombres de la máquina a la que se envían peticiones Subversion.

[groups]
beanie-babies = *.red-bean.com
collabnet = svn.collab.net

[beanie-babies]
…

[collabnet]
…

Cuando Subversion es usado en una red, intenta encontrar una coincidencia entre el nombre del servidor al que intenta llegar con un nombre de grupo de la sección groups. Si se encuentra tal coincidencia, Subversion busca entonces una sección en el fichero servers cuyo nombre coincida con el nombre del grupo. De esta sección obtendrá la configuración de red que será usada.

La sección global contiene la configuración que será usada para todos los servidores que no encajen con ninguna de las máscaras de la sección groups. Las opciones disponibles en esta sección son exactamente las mismas que aquellas válidas para otras secciones de servidor en el fichero (excepto, por supuesto, la sección especial groups), y son las siguientes:

http-proxy-host

Especifica el nombre del ordenador proxy por el cual deben pasar sus peticiones Subversion basadas en HTTP. Por defecto es un valor vacío, lo que significa que Subversion no intentará enrutar peticiones HTTP por un ordenador proxy, y que en su lugar intentará contactar la máquina destino directamente.

http-proxy-port

Especifica el número de puerto del ordenador proxy que debe usar. Por defecto es un valor vacío.

http-proxy-username

Especifica el nombre de usuario que se le facilitará al proxy. Por defecto es un valor vacío.

http-proxy-password

Especifica la palabra clave que se le facilitará al proxy. Por defecto es un valor vacío.

http-timeout

Especifica la cantidad de tiempo, en segundos, que se espera las respuestas del servidor. Si experimenta problemas con una conexión de red lenta que provoca que las operaciones de Subversion fallen por tiempo de espera agotado, debería incrementar el valor de esta opción. El valor por defecto es 0, que indica a la librería HTTP subyacente, Neon, que use su valor tiempo de espera por defecto.

http-compression

Especifica si Subversion debería o no intentar comprimir las peticiones de red realizadas a servidores con soporte DAV. El valor por defecto es yes (aunque la compresión sólo ocurrirá si esta característica fue compilada en la capa de red). Cambie esto a no para desactivar la compresión, por ejemplo para depurar transmisiones por red.

neon-debug-mask

Esto es una máscara de bits que la librería HTTP subyacente, Neon, usa para determinar el tipo de información de depuración que debe mostrar. El valor por defecto es 0, el cual elimina cualquier información de depuración. Para más información sobre cómo Subversion usa Neon, vea Capítulo 8, Información para desarrolladores.

ssl-authority-files

Esto es una lista delimitada con punto y coma de rutas a ficheros que contienen certificados de las autoridades de certificación (o CAs) que son aceptadas por el cliente de Subversion cuando se accede a un repositorio sobre HTTPS.

ssl-trust-default-ca

Modifique esta variable a yes si quiere que Subversion confíe de forma automática el conjunto de CAs por defecto que se distribuyen con OpenSSL.

ssl-client-cert-file

Si una máquina (o grupo de máquinas) requieren un certificado de cliente SSL, normalmente se le preguntará por la ruta a su certificado. Ajustando esta variable a esta misma ruta, Subversion será capaz de encontrar la certificación de su cliente automáticamente sin tener que preguntarle. No hay un lugar estándar para almacenar certificados en disco; Subversion los obtendrá de cualquier ruta que especifique.

ssl-client-cert-password

Si el fichero de su certificado de cliente SSL está cifrado con una frase, Subversion le preguntará por ésta cada vez que el certificado vaya a ser usado. Si considera esto un inconveniente (y no le importa almacenar la palabra clave en el fichero servers), entonces modifique esta variable para que contenta la clave. Ya no se le preguntará más.

Config

El fichero config contiene el resto de los parámetros de ejecución actualmente disponibles con Subversion, aquellos no relacionados con la conexión a red. Sólo hay un par de opciones en uso por ahora, pero de nuevo están agrupadas en secciones pues se esperan adiciones futuras.

La sección auth contiene parámetros relacionados con autenticación y autorización de Subversion contra un repositorio. Éstos son:

store-auth-creds

Esto indica a Subversion si desea mantener una caché o no de las credenciales de autenticación proporcionadas por el usuario en respuesta a demandas de autenticación por parte del servidor. El valor por defecto es yes. Cambie esto a no para desactivar la caché de credenciales en disco. Puede reemplazar esta opción en invocaciones individuales del comando svn usando la opción --no-auth-cache como parámetro (para aquellos subcomandos que la soportan). Para más información, vea “Client Credentials Caching”.

La sección helpers controla qué aplicaciones externas son usadas por Subversion para realizar ciertas tareas. Las opciones válidas en esta sección son:

editor-cmd

Especifica el programa que Subversion usará para solicitar al usuario el mensaje del informe de cambios cuando envía cambios al repositorio, como por ejemplo al usar svn commit sin las opciones --message (-m) o --file (-F). Este programa también se usa con el comando svn propedit—un fichero temporal es rellenado con los valores actuales de la propiedad que el usuario desea modificar, y los cambios toman forma en el programa editor (vea “Propiedades”). El valor por defecto de esta opción es vacío. Si la opción no está activada, Subversion comprobará las variables de entorno SVN_EDITOR, VISUAL, y EDITOR (en ese orden) para encontrar un comando de edición.

diff-cmd

Especifica una ruta absoluta a un programa de diferenciación, usado cuando Subversion genera salida diff (como cuando usa el comando svn diff). Por defecto Subversion usa una librería de diferenciación interna—activando esta opción obligará realizar esta tarea usando un programa externo.

diff3-cmd

Especifica una ruta absoluta a un programa de diferenciación a tres bandas. Subversion usa este programa para fusionar cambios realizados por el usuario con aquellos recibidos del repositorio. Por defecto Subversion usa una librería de diferenciación interna—activando esta opción obligará realizar esta tarea usando un programa externo.

diff3-has-program-arg

Este parámetro debe ajustarse a true si el programa especificado por la opción diff3-cmd acepta el parámetro de línea de comando --diff-program.

La sección tunnels le permite definir nuevos esquemas de túneles a usar con svnserve y conexiones cliente svn://. Para más detalles, vea “Autenticación y autorización SSH”.

La sección miscellany es donde acaba todo lo que no encaja en otra parte. [34] En esta sección puede encontrar:

global-ignores

Cuando ejecuta el comando svn status, Subversion muestra un listado de ficheros y directorios no versionados junto con los versionados, anotándolos con el carácter ? (vea svn status). A veces puede ser molesto ver elementos no versionados o no interesantes—por ejemplo, ficheros objeto resultado de la compilación de un programa— en pantalla. La opción global-ignores es una lista de máscaras delimitadas por espacio que describen los nombres de ficheros y directorios que Subversion no debe mostrar a no ser que estén versionados. El valor por defecto es *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#*.

Puede redefinir esta opción en invocaciones individuales del comando svn status usando la opción de línea de comando --no-ignore. Para más información sobre el control detallado de elementos ignorados, vea svn:ignore.

enable-auto-props

Esto indica a Subversion que añada propiedades automáticamente en ficheros nuevos o importados. El valor por defecto es no, así que cambie esto a yes para activar auto propiedades.

La sección auto-props controla la capacidad del cliente de Subversion de poner automáticamente propiedades en ficheros que fueron añadidos o importados. Contiene un número de parejas clave-valor en el formato PATRÓN = NOMBREPROPIEDAD=VALORPROPIEDAD donde PATRÓN es una máscara de fichero que encaja con un grupo de ficheros y el resto de la línea es la propiedad y su valor. Múltiples coincidencias en un fichero resultarán en múltiples propiedades para ese fichero; no obstante, no hay garantía alguna de que las auto propiedades sean aplicadas en el orden en el cual fueron listadas en el fichero de configuración, así que no puede tener una regla que redefina otra. Puede encontrar varios ejemplos del uso de auto propiedades en el fichero config. Por último, no olvide cambiar enable-auto-props a yes si quiere activar las auto propiedades.

log-encoding

Esta variable ajusta el formato por defecto de codificación de caracteres de los informes de cambios. Es una versión permanente de la opción --encoding (vea “Parámetros de svn.) El repositorio Subversion almacena los mensajes de los informes de cambios en UTF8, y asume que su mensaje es escrito usando las locales nativas de su sistema operativo. Debería especificar una codificación diferente si sus mensajes son escritos con otra codificación.

use-commit-times

Normalmente los ficheros de su copia local de trabajo tienen marcas de tiempo que reflejan el último momento en que fueron tocados por cualquier proceso, ya sea su propio editor o uno de los subcomandos svn. Esto es normalmente conveniente para gente que desarrolla software, porque los sistemas de compilación a menudo comprueban las marcas de tiempo para decidir qué ficheros necesitan ser recompilados.

En otras situaciones, no obstante, es conveniente tener en su copia local de trabajo ficheros con marcas de tiempo que reflejan el último momento en el que cambiaron en el repositorio El comando svn export siempre pone estas marcas temporales de última modificación en los árboles que produce. Cambiando esta variable de configuración a yes, los comandos svn checkout, svn update, svn switch, y svn revert también ajustarán la marca temporal a la última modificación en el repositorio en los ficheros que manejen.



[33] La variable de entorno APPDATA apunta al área Application Data, así que siempre puede referirse a este directorio como %APPDATA%\Subversion.

[34] ¿Le gustan las sobras?