Configuración del proyecto

Figura 5.30. Página de propiedades del Explorador, pestaña Subversion

Página de propiedades del Explorador, pestaña Subversion


A veces desea obtener información más detallada sobre un fichero o directorio que la que proporcionan los iconos sobreimpresionados. Puede obtener toda la información que Subversion proporciona en el diálogo de propiedades del explorador. Simplemente seleccione el fichero o directorio y seleccione Menú de WindowsPropiedades en el menú contextual (atención: ésta es la entrada normal del menú de propiedades que el explorador proporciona, ¡no la que está en el submenú de TortoiseSVN!). En el cuadro de diálogo de propiedades, TortoiseSVN ha añadido una nueva página de propiedades para los ficheros y carpetas bajo control de Subversion, donde puede ver toda la información relevante sobre el fichero/directorio seleccionado.

Propiedades de Subversion

Figura 5.31. Página de propiedades de Subversion

Página de propiedades de Subversion


Puede leer y establecer las propiedades de Subversion desde el diálogo de propiedades de Windows, pero también desde TortoiseSVNPropiedades y dentro de las listas de estado de TortoiseSVN, desde Menú contextualPropiedades.

Puede añadir sus propias propiedades, o algunas propiedades con un significado especial en Subversion. Éstas empiezan con svn:. svn:externals es una de esas propiedades; vea cómo manejar externos en “Proyectos referenciados”.

svn:keywords

Subversion soporta expansión de palabras clave similar a CVS, lo que puede utilizarse para introducir el nombre del fichero y la información de la revisión dentro del propio fichero. Las palabras clave actualmente soportadas son:

$Date$

Fecha de la última confirmación conocida. Esto se basa en la información obtenida cuando actualiza su copia de trabajo. No se contacta con el repositorio para buscar cambios más recientes.

$Revision$

Revisión de la última confirmación conocida.

$Author$

Autor que hizo la última confirmación conocida.

$HeadURL$

La URL completa de este fichero en el repositorio.

$Id$

Una combinación comprimida de las cuatro palabras clave anteriores.

Para averiguar cómo utilizar estas palabras clave, lea la sección svn:keywords del libro de Subversion, que porporciona información completa sobre estas palabras clave y cómo habilitarlas y utilizarlas.

Puede encontrar más información sobre las propiedades en Subversion en Propiedades especiales.

Añadiendo y editando propiedades

Figura 5.32. Añadiendo propiedades

Añadiendo propiedades


Para añadir una nueva propiedad, primero pulse en Añadir.... Seleccione el nombre de la propiedad deseado del cuadro desplegable, o escriba un nombre de su elección, y luego introduzca un valor en la caja de texto que hay debajo. Para las propiedades que admiten múltiples valores, como una lista de ignorados, éstos se pueden introducir en múltiples líneas. Pulse en Aceptar para a

Si desea aplicar una propiedad a muchos ítems a la vez, seleccione los ficheros/carpetas en el explorador, y luego seleccione Menú contextualpropiedades

Si desea aplicar la propiedad a cada fichero y carpeta en la jerarquía debajo de la carpeta actual, seleccione la casilla Recursivo.

Algunas propiedades, por ejemplo svn:needs-lock, pueden aplicarse únicamente a ficheros, por lo que ese nombre de propiedad no aparece en la lista desplegable para las carpetas. Aún así puede aplicar dicha propiedad recursivamente a todos los ficheros en una jerarquía, pero tendrá que escribir el nombre de la propiedad usted mismo.

Si desea editar una propiedad existente, primero seleccione dicha propiedad de la lista de propiedades existentes, y luego pulse en Editar....

Si desea eliminar una propiedad existente, seleccione dicha propiedad de la lista de propiedades existentes, y luego pulse en Eliminar.

La propiedad svn:externals se puede utilizar para traer otros proyectos del mismo repositorio o de otro completamente distinto. Para más información, lea “Proyectos referenciados”.

Exportando e importando propiedades

A menudo se encontrará aplicando el mismo conjunto de propiedades muchas veces, por ejemplo bugtraq:logregex. Para simplificar el proceso de copiar propiedades de un proyecto a otro, puede utilizar la característica Exportar/Importar.

Desde el fichero o carpeta en el que las propiedades ya están establecidas, utilice TortoiseSVNPropiedades, seleccione las propiedades que desea exportar y haga click en Exportar.... Se le preguntará por un nombre de fichero donde se grabarán los nombres de las propiedades y sus valores.

Desde la(s) carpeta(s) donde desea aplicar estas propiedades, utilice TortoiseSVNPropiedades y haga click en Importar.... Se le preguntará por un nombre de fichero desde el que importar, por lo que deberá navegar al lugar donde almacenó el fichero exportado anteriormente y seleccionarlo. Las propiedades se añadirán a las carpetas de forma no recursiva.

Si desea añadir las carpetas a un árbol recursivamente, siga los pasos anteriores, y luego en el diálogo de propiedades seleccione cada propiedad por turnos, haga click en Editar..., seleccione la casilla Aplicar propiedad recursivamentey haga click en Aceptar.

El formato del fichero de importación es binario y propietario de TortoiseSVN. Su único propósito es transferir las propiedades utilizando Importar y Exportar, por lo que no hay necesidad de editar estos ficheros.

Propiedades binarias

TortoiseSVN puede manejar valores de propiedades binarios utilizando ficheros. Para leer un valor de propiedad binario, utilice Grabar... para almacenarlo en un fichero. Para establecer un valor binario, utilice un editor hexadecimal u otra herramienta adecuada para crear un fichero con el contenido que necesite, y luego utilice Cargar... para leer ese fichero.

Aunque las propiedades binarias no se utilizan a menudo, pueden ser útiles en algunas aplicaciones. Por ejemplo, si está almacenando ficheros gráficos muy grandes, o si la aplicación que se utiliza para cargar el fichero es pesada, puede querer guardar una pequeña imagen guía como una propiedad para poder obtener una previsualización rápidamente.

Establecer propiedades automáticamente

Puede configurar Subversion y TortoiseSVN para que establezca propiedades automáticamente en ficheros y carpetas cuando se añaden al repositorio. Hay dos formas de hacerlo.

Puede editar el fichero de configuración de Subversion para habilitar esta característica en su cliente. La página General del diálogo de configuración de TortoiseSVN tiene un botón de edición para llevarle allí directamente. El fichero de configuración es un fichero de texto simple que controla algunas de las funciones de Subversion. Necesita cambiar dos cosas: primero, en la sección encabezada por miscellany, descomente la línea enable-auto-props = yes. En segundo lugar, necesita editar la sección a continuación para definir qué propiedades quiere que se añadan a qué tipos de ficheros. Este método es una función estándar de Subversion y funciona con cualquier cliente de Subversion. Sin embargo, debe definirse en cada cliente de forma individual - no hay forma de propagar estas configuraciones desde el repositorio.

Un método alternativo es establecer la propiedad tsvn:autoprops en las carpetas, como se describe en la siguiente sección. Este método funciona sólo con los clientes TortoiseSVN, pero se propaga a todas las copias de trabajo al actualizarlas.

Sea cual sea el método que elija, debe tener en cuenta que las auto-props se aplican sólo a los ficheros en el momento en que se añaden al repositorio. Las auto-props nunca cambiarán las propiedades de ficheros que ya estén versionados.

Si desea estar totalmente seguro de que a los nuevos ficheros se les aplica las propiedades correctas, debería establecer un script gancho pre-confirmación para rechazar las confirmaciones cuando estas propiedades necesarias no estén establecidas.

Confirmar propiedades

Las propiedades de Subversion están versionadas. Después de que cambie o añada una propiedad tiene que confirmar sus cambios.

Conflictos en las propiedades

Si hay un conflicto al confirmar los cambios, porque otro usuario ha cambiado la misma propiedad, Subversion genera un fichero .prej. Borre este fichero después de que haya resuelto del conflicto.

Propiedades de projecto TortoiseSVN

TortoiseSVN tiene unas pocas propiedades especiales para sí mismo, y estas empiezan con tsvn:.

  • tsvn:logminsize establece la longitud mínima de un mensaje de registro para una confirmación. Si introduce un mensaje más corto de lo especificado aquí, la confirmación se deshabilita. Esta característica es muy útil para que se acuerde de proporcionar un mensaje descriptivo apropiado para cada confirmación. Si esta propiedad no se establece, o el valor es cero, se permiten mensajes de registro vacíos.

    tsvn:lockmsgminsize establece la longitud mínima para un mensaje de bloqueo. Si introduce un mensaje más corto de lo especificado aquí, el bloqueo se deshabilita. Esta característica es muy útil para que se acuerde de proporcionar un mensaje descriptivo apropiado para cada blqoueo que obtenga. Si esta propiedad no se establece, o el valor es cero, se permiten mensajes de bloqueo vacíos.

  • tsvn:logwidthmarker se utiliza con proyectos que necesitan que los mensajes de registro se formateen con algún ancho máximo (típicamente, 80 caracteres) antes de un salto de línea. Al establecer esta propiedad a un valor distinto de cero ocurren dos cosas en el diálogo de entrada de mensajes de registro: pone un marcador para indicar el ancho máximo, y deshabilita el ajuste de línea en la pantalla, para que pueda ver si el texto que ha introducido es muy largo. Tenga en cuenta que esta característica sólo funcionará correctamente si ha seleccionado una fuente de ancho fijo para los mensajes de registro.

  • tsvn:logtemplate se utiliza en proyectos que tienen reglas sobre el formateo de mensajes. Esta propiedad alberga una cadena de texto de múltiples líneas que se insertará en el cuadro del mensaje de confirmación cuando inice una confirmación. Puede editarlo para incluir la información necesaria. Tenga en cuenta que si estaba utilizando también tsvn:logminsize, debe asegurarse de establecer una longitud mayor que la de la plantilla o perderá el mecanismo de protección.

  • Subversion le permite establecer “autoprops” (autopropiedades), que serán aplicadas a los ficheros recién añadidos o importados, basándose en la extensión del fichero. Esto necesita que todos los clientes hayan establecido las autoprops adecuadas en el fichero de configuración de Subversion. tsvn:autoprops puede establecerse en carpetas y éstas se fusionarán con las autoprops locales del usuario cuando se importen o añadan ficheros. El formato es el mismo que para las autopropiedades de Subversion, por ejemplo *.sh = svn:eol-style=native;svn:executable establece dos propiedades en los ficheros con extensión .sh.

    Si hay un conflicto entre las autoprops locales y tsvn:autoprops, la configuración del proyecto tiene preferencia ya que son específicas para ese proyecto.

  • En el diálogo de Confirmar tiene la opción de pegar la lista de ficheros cambiados, incluyendo el estado de cada fichero (añadido, modificado, etc). tsvn:logfilelistenglish define si el estado del fichero se inserta en inglés o en el idioma traducido. Si la propiedad no se establece, el valor por defecto es true.

  • TortoiseSVN puede utilizar los módulos de corrector ortográfico que se utilizan también por OpenOffice y Mozilla. Si tiene éstos instalados, esta propiedad determinará qué corrector ortográfico utilizar, es decir, en qué lenguaje deberían estar escritos los mensajes de registro para su proyecto. tsvn:projectlanguage establece el módulo de idioma que el motor del corrector ortográfico debería utilizar cuando introduzca un mensaje de registro. Puede encontrar los valores para su idioma en esta página: MSDN: Language Identifiers.

    Puede introducir este valor en decimal, o en hexadecimal si se precede por 0x. Por ejemplo, Español (España, ordenación tradicional) puede introducirse como 0x040a or 1034.

  • La propiedad tsvn:logsummary se utiliza para extraer una porción del mensaje de registro que luego se muestra en el diálogo de registro como el sumario del mensaje de registro.

    El valor de la propiedad tsvn:logsummary debe establecerse a una cadena de texto regex de una línea que contenga un grupo regex. Lo que satisfaga ese grupo se utilizará como sumario.

    Por ejemplo: \[SUMARIO\]:\s+(.*) capturará todo lo que haya tras “[SUMARIO]” en el mensaje de registro y lo utillizará como sumario.

  • Cuando quiera añadir una nueva propiedad, puede o bien elegir una desde la lista en el cuadro desplegable, o puede introducir el nombre de propiedad que desee. Si su proyecto utiliza algunas propiedades personalizadas, y quiere que esas propiedades aparezcan en la lista del cuadro desplegable (para evitar errores ortográficos cuando introduzca un nombre de propiedad), puede crear una llista de sus propias propiedades personalizadas utilizando tsvn:userfileproperties y tsvn:userdirproperties. Aplique estas propiedades a una carpeta. Cuando vaya a editar las propiedades de cualquier ítem hijo, sus propiedades personalizadas aparecerán en la lista de nombres de propiedades predefinidas.

Algunas propiedades tsvn: necesitan un valor true/false (verdadero/falso). TortoiseSVN también entiende yes (sí) como un sinónimo de true y no como un sinónimo de false.

TortoiseSVN puede integrarse con algunas herramientas de control de errores. Esto utiliza propiedades de proyecto que comienzan con bugtraq:. Para más información, lea “Integración con sistemas de control de errores / seguimiento de incidencias”.

También puede integrarse con algunos visores de repositorios basados en web, utilizando propiedades de proyecto que comienzan con webviewer:. Para más información, lea “Integración con visores de repositorios basados en web”.

Establecer las propiedades de proyecto en carpetas

Estas propiedades especiales del proyecto deben estar establecidas en carpetas para que el sistema funcione. Cuando confirma un fichero o una carpeta, se leen las propiedades de esa carpeta. Si no se encuentran allí las propiedades, TortoiseSVN las buscará hacia arriba en el árbol de carpetas para encontrarlas, hasta que llega a una carpeta sin versionar, o se encuentra la raíz del árbol (por ejemplo, C:\). Si puede estar seguro de que cada usuario obtiene sólo desde por ejemplo trunk/ y no desde alguna subcarpeta, entonces es suficiente establecer las propiedades en trunk/. Si no puede estar seguro, debería establecer las propiedades recursivamente en cada subcarpeta. Una propiedad establecida en una carpeta más profunda dentro de la jerarquía del proyecto tiene preferencia sobre las propiedades establecidas en niveles más altos (más cerca de trunk/).

Para las propiedades de proyecto sólo puede utilizar la casilla Recursivo para establecer la propiedad en todas las subcarpetas de la jerarquía, sin establecerla en todos los ficheros.

Cuando añada nuevas subcarpetas utilizando TortoiseSVN, cualquier propiedad de proyecto presente en la carpeta padre se añadirá también automáticamente a la nueva carpeta hija.

Atención

Aunque las propiedades de proyecto de TortoiseSVN son extremadamente útiles, sólo funcionan con TortoiseSVN, y algunas sólo funcionarán en las versiones más recientes de TortoiseSVN. Si la gente que trabaja en su proyecto utiliza un número de clientes de Subversion diferentes, o es posible que tengan versiones antiguas de TortoiseSVN, puede que quiera utilizar ganchos de repositorio para forzar políticas de proyectos. Las propiedades de proyecto sólo ayudan a implementar una política, no pueden forzarlas.