TortoiseSVN. Un cliente de Subversion para Windows. Stefan Küng Lübbe Onken Simon Large

Tamaño: px
Comenzar la demostración a partir de la página:

Download "TortoiseSVN. Un cliente de Subversion para Windows. Stefan Küng Lübbe Onken Simon Large"

Transcripción

1 TortoiseSVN Un cliente de Subversion para Windows Stefan Küng Lübbe Onken Simon Large

2 TortoiseSVN: Un cliente de Subversion para Windows por Stefan Küng, Lübbe Onken, y Simon Large translation: Fernando P. Najera Cano (yo@fernandonajera.com) publicado 1970/01/01 01:00:00 (r0)

3

4 Tabla de contenidos Prefacio... ix 1. Audiencia... ix 2. TortoiseSVN es gratis!... ix 3. Comunidad... ix 4. Reconocimientos... ix 5. Terminología usada en este documento... x 1. Introducción Qué es TortoiseSVN? Historia de TortoiseSVN Características de TortoiseSVN Instalando TortoiseSVN Requerimientos del sistema Instalación Conceptos Básicos El Repositorio Modelos de Versionado El Problema de Compartir-Ficheros La Solución Bloquear-Modificar-Desbloquear La Solución Copiar-Modificar-Combinar Qué hace Subversion? Subversion en Acción Copias de Trabajo Revisiones Cómo se unen las Copias de Trabajo al Repositorio Sumario Preparando Un Servidor Servidor Basado en Apache Introducción Instalando Apache Instalando Subversion Configuración Autentificación con un Dominio de Windows Asegurando el servidor con SSL Servidor Basado en Svnserve Introducción Instalando svnserve Ejecutando svnserve Autentificación con svnserve Autentificación con svn+ssh El Repositorio Creación de Repositorios Creando un Repositorio con el Cliente de Línea de Comandos Creando el Repositorio con TortoiseSVN Acceso Local al Repositorio Copia de seguridad del Repositorio Scripts Gancho Enlaces de Obtener Guía de Uso Diario Empezando Menús contextuales Arrastrar y Soltar Autentificación Importando Datos En Un Repositorio Organización del Repositorio Importar Ficheros Especiales Proyectos Referenciados...38 iv

5 TortoiseSVN 5.3. Obteniendo Una Copia de Trabajo Enviando sus Cambios al Repositorio Actualice Su Copia de Trabajo con los Cambios de Otros Resolviendo Conflictos Obteniendo Información del Estado Sobreimpresión de Iconos Columnas de TortoiseSVN en el Explorador Estado del Repositorio Viendo Diferencias Diálogo de Registro de Revisiones Invocando el Diálogo de Registro de Revisiones Obteniendo Información Adicional Obteniendo más mensajes de registro Cambiando el Mensaje de Registro y el Autor Filtrando los Mensajes de Registro Información Estadística Viendo Diferencias Diferencias de Ficheros Diferencias entre Carpetas Herramientas Externas de Diferencias/Combinación Añadiendo Nuevos Ficheros y Directorios Ignorando Ficheros y Directorios Borrando, Renombrando y Moviendo Deshacer Cambios Limpieza Opciones del Proyecto Haciendo Ramas / Etiquetas Crando una Rama o Etiqueta Obtener o Cambiar Combinando Combinando un Rango de Revisiones Combinando Dos Árboles Diferentes Previsualizando Resultados de Combinación Bloqueando Cómo Trabaja el Bloqueo en Subversion Obteniendo un Bloqueo Quitando un Bloqueo Comprobando el Estado de los Bloqueos Haciendo Ficheros No-Bloqueados como Sólo-Lectura Los Scripts Ganchos de Bloqueo Creando y Aplicando Parches Creando un Fichero Parche Aplicando un Fichero Parche Quién Cambió Qué Línea? El Navegador de Repositorios Gráficos de Revisión Relocalizando una copia de trabajo Intregración con Sistemas de Control de Errores / Seguimiento de Incidencias Configuración de TortoiseSVN Configuración General Configuración del Aspecto visual Opciones de Red Opciones de Programas Externos Sonidos de TortoiseSVN Último Paso...90 A. Frequently Asked Questions (FAQ)...92 B. Cómo...?...93 B.1. Mover/copiar muchos ficheros de golpe...93 B.2. Obligar a los usuarios a introducir un mensaje de registro...93 B.2.1. Script-gancho en el servidor...93 B.2.2. Propiedades del proyecto...93 B.3. Actualizar los ficheros seleccionados desde el repositorio...93 B.4. Deshacer revisiones en el repositorio...93 v

6 TortoiseSVN B.4.1. Utilice el diálogo de registro de revisiones...94 B.4.2. Use el diálogo combinar...94 B.4.3. Use svndumpfilter...94 B.5. Comparar dos revisiones de un fichero...94 B.6. Incluir un sub-proyecto común...95 B.6.1. Use svn:externals...95 B.6.2. Use una copia de trabajo anidada...95 B.6.3. Use una ruta relativa...95 B.7. Crear un acceso directo a un repositorio...96 C. Automating TortoiseSVN...97 C.1. TortoiseSVN Commands...97 Índice vi

7 Lista de figuras 2.1. Un Sistema Típico Cliente/Servidor El Problema a Evitar La Solución Bloquear-Modificar-Desbloquear La Solución Copiar-Modificar-Combinar Copiar-Modificar-Combinar Continuado El Sistema de Ficheros del Repositorio El Repositorio El menú de TortoiseSVN para carpetas no versionadas Menú contextual para un directorio bajo el control de versiones Menú de arrastre con el botón derecho para un directorio bajo el control de versiones Diálogo de Autentificación El Diálogo Importar El diálogo Obtener El diálogo de Confirmación El diálogo Progreso mostrando el progreso de una confirmación Diálogo de progreso mostrando una actualización terminada Explorer mostrando iconos sobreimpresionados Comprobar Modificaciones El Diálogo de Registro de Revisiones El Panel Superior del Diálogo de Registro de Revisiones con el Menú Contextual Menú Contextual del Panel Superior con 2 Ficheros Seleccionados El Panel Inferior del Diálogo de Registro con el Menú Contextual Menú contextual del explorador para ficheros no versionados Menú contextual del explorador para ficheros no versionados Menú contextual del explorador para ficheros versionados Diálogo de revertir Página de propiedades de Subversion El Diálogo Rama/Etiqueta El Diálogo Cambiar El Diálogo Combinar El Diálogo Bloquear El Diálogo Comprobar Modificaciones El Diálogo Anotar / Autoría TortoiseBlame El Navegador de Repositorios Un Gráfico de Revisiones El Diálogo Relocalizar El Diálogo de Opciones, Página General El Diálogo Opciones, Página de Aspecto Visual El Diálogo Opciones, Página de Aspecto Visual El Diálogo Opciones, Página de Conjunto de Iconos El Diálogo Opciones, Página de Diálogos El Diálogo Opciones, Página de Red El Diálogo Opciones, Página de Visor de Diferencias El Diálogo Opciones, Pestaña Diferencias/Combinación Avanzadas...90 vii

8 Lista de tablas 2.1. URLs de Acceso al Repositorio Opciones del fichero httpd.conf de Apache...18 C.1. List of available command line options...98 viii

9 Prefacio Trabaja en equipo? Alguna vez le ha ocurrido que estaba trabajando en un fichero, y alguien más también estaba trabajando en ese mismo fichero al mismo tiempo? Perdió sus cambios en ese fichero por ese motivo? Alguna vez ha grabado un fichero, y luego deseó deshacer los cambios que había hecho? Alguna vez ha querido ver cómo estaba un fichero hace tiempo? Alguna vez ha encontrado un error en su proyecto y ha querido saber cuándo se introdujo ese error en sus ficheros? 1. Audiencia Si ha respondido sí a alguna de las preguntas anteriores, entonces TortoiseSVN está hecho para usted! Siga leyendo para saber cómo puede TortoiseSVN ayudarle en su trabajo. No es tan dificil. Este libro está escrito para usuarios informáticos que quieren usar Subversion para manejar sus datos, pero no están cómodos usando el cliente de línea de comandos para hacerlo. Dado que TortoiseSVN es una extensión del shell de Windows, se asume que el usuario está familiarizado con el Explorador de windows y sabe cómo usarlo. Incluso muchos de los usuarios de Subversion nunca tendrán que preparar un servidor por ellos mismos. Hay un capítulo entero que trata sobre cómo preparar dicho servidor. Si tiene problemas al instalar o trabajar con TortoiseSVN, compruebe el Apéndice A, Frequently Asked Questions (FAQ) al final de este manual. Si su pregunta no está respondida allí, busque en nuestro FAQ online en Berlios.de [ que contiene más información y está - por su naturaleza - más actualizado. 2. TortoiseSVN es gratis! TortoiseSVN es gratis. No tiene que pagar por él, puede usarlo para lo que quiera. Está desarrollado bajo la licencia GP (GPL). TortoiseSVN es un proyecto de Código Abierto (Open Source). Eso significa que tiene acceso completo al código fuente de este programa. Puede navegar por él en este vínculo La versión más reciente (en la que estamos trabajando) se encuentra bajo /trunk/, las versiones oficiales se encuentran bajo /tags/. 3. Comunidad Tanto TortoiseSVN como Subversion están siendo desarrollados por una comunidad de gente que trabaja en estos proyectos. Provienen de diferentes países por todo el mundo y se juntan para crear programas estupendos. 4. Reconocimientos Tim Kemp ix

10 Prefacio por fundar el proyecto TortoiseSVN Stefan Küng por el duro trabajo de llevar a TortoiseSVN a lo que es hoy Lübbe Onken por los bonitos iconos, logo, detección de errores y cuidar de la documentación El Libro de Subversion por la gran introducción a Subversion y su capítulo 2 que hemos copiado aquí El proyecto Tigris Style por algunos de los estilos que están siendo reutilizados en esta documentación Nuestros Colaboradores por los parches, informes de errores y nuevas ideas, y por ayudar a otros respondiendo preguntas de nuestra lista de correo. Nuestros Donantes por la cantidad de horas de entretenimiento con la música que nos enviaron 5. Terminología usada en este documento Para hacer más facil la lectura de la documentación, los nombres de todas las pantallas y menús de TortoiseSVN están remarcados en un tipo de letra diferente. Por ejemplo, el Diálogo de Registro. Las opciones de menú se indican con una flecha. TortoiseSVN->Mostrar Registro significa: seleccione Mostrar Registro desde el menú contextual TortoiseSVN. Donde aparezca un menú contextual local dentro de uno de los diálogos de TortoiseSVN, se mostrará así: Menú Contextual->Grabar como... Los Botones del Interfaz de Usuario se indican como este: Pulse OK para continuar. Las Acciones de Usuario se indican en negrita. ALT+A: pulse la tecla ALT en su teclado, y mientras la mantiene pulsada, pulse también la tecla A. Arrastre-con-botón-derecho: pulse el botón derecho del ratón y mientras lo mantiene pulsado, arrastre los ítems a su nuevo destino. La salida del sistema y la entrada por teclado se indica con una fuente también diferente. Importante Las notas importantes están marcadas con un icono. Sugerencia Trucos que le facilitan la vida. Atención Lugares donde debe tener cuidado con lo que hace. Aviso Donde hay que tener un cuidado extremo, porque puede ocurrir corrupción de datos u x

11 Prefacio otras cosas horribles si se ignoran estas advertencias. xi

12 Capítulo 1. Introducción El control de versiones es el arte de manejar cambios en la información. Ha sido desde siempre una herramienta crítica para los programadores, quienes típicamente emplean su tiempo haciendo pequeños cambios al software y luego deshaciendo esos cambios al día siguiente. Imagine un equipo de estos programadores trabajando concurrentemente - y quizás también simultáneamente en los mismos ficheros! - y podrá ver por qué se necesita un buen sistema para manejar el caos potencial Qué es TortoiseSVN? TortoiseSVN es un cliente gratuito de código abierto para el sistema de control de versiones Subversion. Esto es, TortoiseSVN maneja ficheros y directorios a lo largo del tiempo. Los ficheros se almacenan en un repositorio central. El repositorio es prácticamente lo mismo que un servidor de ficheros ordinario, salvo que recuerda todos los cambios que se hayan hecho a sus ficheros y directorios. Esto permite que pueda recuperar versiones antiguas de sus ficheros y examinar la historia de cuándo y cómo cambiaron sus datos. Esta es la razón por la que mucha gente piensa que Subversion, y los sistemas de control de versiones en general, son una especie de máquinas del tiempo. Algunos sistemas de control de versiones también son sistemas de manejo de configuración del software (SCM). Estos sistemas están diseñados específicamente para manejar árboles de código fuente, y tienen muchas características que son específicas para el desarrollo de software - tales como el entendimiento nativo de los lenguajes de programación, o proporcionan herramientas para compilar software. Subversion, sin embargo, no es uno de estos sistemas; es un sistema general que puede ser utilizado para manejar cualquier colección de ficheros, incluyendo código fuente Historia de TortoiseSVN En 2002, Tim Kemp se dio cuenta que Subversion era un sistema de control de versiones muy bueno, pero le faltaba un buen cliente GUI. La idea de tener un cliente de Subversion integrado en el shell de Windows se inspiró por el cliente similar que ya existía para CVS llamado TortoiseCVS. Tim estudió el código fuente de TortoiseCVS y lo utilizó como base de TortoiseSVN. Entonces inició el proyecto, registró el dominio tortoisesvn.org y puso el código fuente online. Durante ese tiempo, Stefan Küng estaba buscando un sistema de control de versiones bueno y gratuito, y encontró Subversion y el código fuente de TortoiseSVN. Como TortoiseSVN todavía no estaba listo para usarse, se unió al proyecto y empezó a programarlo. Pronto reescribió la mayor parte del código existente y empezó a añadir comandos y características, hasta el punto de que no quedó nada del código original. Según se fue estabilizando Subversion, atrajo más y más usuarios que también empezaron a utilizar TortoiseSVN como su cliente de Subversion. Los usuarios de TortoiseSVN se incrementaron rápidamente (y aún crecen día a día). Entonces Lübbe Onken se ofreció a ayudar con algunos iconos más vistosos y un logo para TortoiseSVN. Y también se encarga de la página web y de manejar las traducciones Características de TortoiseSVN Qué hace de TortoiseSVN tan buen cliente de Subversion? Aquí hay una pequeña lista de sus carcterísticas. Integración con el shell de Windows TortoiseSVN se integra perfectamente en el shell de Windows (por ejemplo, el Explorador). Esto significa que puede seguir trabajando con las herramientas que ya conoce. Y que no tiene que cambiar a una aplicación diferente cada vez que necesite las funciones del control de versiones! Y ni siquiera está obligado a usar el Explorador de Windows. Los menús contextuales de TortoiseSVN también funcionan en otros administradores de archivos, y en el diálogo Fichero/ Abrir que es común a la mayoría de aplicaciones estándar de Windows. Sin embargo, debe te- 1

13 Introducción ner en cuenta que TortoiseSVN está desarrollado con la mirada puesta en hacerle extensión del Explorador de Windows. Por este motivo, puede que en otras aplicaciones la integración no sea tan completa y que, por ejemplo, los iconos sobreimpresionados en las carpetas no se muestren. Sobreimpresión de iconos El estado de cada carpeta y fichero versionado se indica por pequeños iconos sobreimpresionados. De esta forma, puede ver fácilmente el estado en el que se encuentra su copia de trabajo. Fácil acceso a los comandos de Subversion Todos los comandos de Subversion están disponibles desde el menú contextual del explorador. TortoiseSVN añade su propio submenú allí. Dado que TortoiseSVN es un cliente de Subversion, también queremos enseñarle algunas de las características del propio Subversion: Versionado de carpetas CVS sólo controla la historia de ficheros individuales, pero Subversion implementa un sistema virtual de ficheros versionados que sigue la pista de los cambios en todos los árboles de directorios en el tiempo. Los ficheros y los directorios están versionados. Como resultado, hay comandos reales en el lado del cliente como mover y copiar que operan en ficheros y directorios. Confirmaciones atómicas Una confirmación o bien entra en el repositorio completamente, o no entra en absoluto. Esto permite a los desarrolladores construir y confirmar cambios como unidades lógicas. Metadatos versionados Cada fichero y directorio tiene un conjunto invisible de propiedades adjuntos. PUede inventarse y almacenar cualquier par de clave/valor que desee. Las propiedades se versionan en el tiempo, igual que el contenido de los ficheros. Elección de capas de red Subversion tiene una noción abstracta del acceso al repositorio, haciéndo que la gente pueda implementar nuevos mecanismos de red fácilmente. El avanzado servidor de red de Subversion es un módulo para el servidor web Apache, que habla una variante de HTTP llamada Web- DAV/DeltaV. Esto dota a Subversion una gran ventaja en estabilidad e interoperatividad, y proporciona varias características importantes gratis: autentificación, autorización, compresión de la transmisión y navegación del repositorio, por ejemplo. También está disponible un proceso servidor de Subversion independiente. Este servidor habla un protocolo propio que puede encapsularse fácilmente sobre ssh. Manejo de datos consistente Subversion expresa las diferencias entre ficheros usando un algoritmo de diferenciación binario, que funciona exactamente igual tanto en ficheros de texto (legibles por los humanos) como en ficheros binarios (que no son legibles por nosotros). Ambos tipos de ficheros se almacenan igualmente comprimidos en el repositorio, y las diferencias se transmiten en ambas direcciones por la red. Etiquetado y creación de ramas eficiente El coste de crear una rama o una etiqueta no necesita ser proporcional al tamaño del proyecto. Subversion crea ramas y etiquetas símplemente copiando el proyecto, utilizando un mecanismo similar a los vínculos duros. Por tanto estas operaciones llevan un tiempo pequeño y constante, y muy poco espacio en el repositorio. Extensibilidad Subversion no tiene lastre histórico; está implementado como una colección de librerías C compartidas con APIS bien definidas. Esto hace que Subversion sea extremadamente mantenible y se pueda utilizar por otras aplicaciones y lenguajes Instalando TortoiseSVN 2

14 Introducción Requerimientos del sistema TortoiseSVN se ejecuta bajo Windows 2000 SP2, Windows XP o superior Instalación TortoiseSVN incluye un instalador fácil de utilizar. Haga doble click en el fichero del instalador y siga las instrucciones. El instalador se encargará del resto. Asegúrese de marcar la opción Instalar para todos los usuarios, a menos que realmente desee restringir su uso para el usuario actual únicamente. Si desea usar un corrector ortográfico para sus mensajes de registro tendrá que descargar los diccionarios necesarios usted mismo. Puede usar los mismos ficheros de diccionario de OpenOffice [ y Mozilla [ Puede encontrar los ficheros de diccionario necesarios en diferentes lugares: También puede usar los diccionarios que se instalan con Mozilla. Se encuentran en la carpeta de instalación de Mozilla. Once you have got the dictionary files, you probably need to rename them so that the filenames only have the locale chars in it. Example: es_es.aff es_es.dic Then just copy them to the bin sub-folder of the TortoiseSVN installation folder. Normally this will be C:\Program Files\TortoiseSVN\bin. If you don't want to litter the bin subfolder, you can instead place your spell checker files in C:\Program Files\TortoiseSVN\Languages. If that folder isn't there, you have to create it first. The next time you start TortoiseSVN, the spell checker will be available. Si encuentra algún problema durante o después de la instalación de TortoiseSVN, por favor visite primero Apéndice A, Frequently Asked Questions (FAQ). 3

15 Capítulo 2. Conceptos Básicos Este capítulo es una versión ligeramente modificada del mismo capítulo en el libro de Subversion. Puede leer el libro de Subversion aquí: Este capítulo es una introducción corta e informal a Subversion. Si el control de versiones es nuevo para usted, este capítulo es definitivamente para usted. Empezamos con una discusión de los conceptos generales de control de versiones, nos hacemos camino dentro de las ideas específicas que hay tras Subversion, y mostramos algunos ejemplos sencillos de Subversion en acción. Incluso aunque los ejemplos en este capítulo muestran a gente compartiendo colecciones de código fuente de programas, tenga en cuenta que Subversion puede manejar cualquier collección de ficheros - no está limitado a ayudar a los programadores de ordenadores El Repositorio Subversion es un sistema centralizado para compartir información. En su núcleo está un repositorio, que es un almacén central de datos. El respositorio almacena información en forma de un árbol de ficheros - una jerarquía típica de ficheros y directorios. Cualquier número de clientes se conectan al repositorio, y luego leen o esriben esos ficheros. Al escribir datos, el cliente hace que la información esté disponible para los otros; al leer los datos, el cliente recibe la información de los demás. Figura 2.1. Un Sistema Típico Cliente/Servidor Y ésto por qué es interesante? Por ahora, eso suena a la definición típica de un servidor de ficheros típico. Y de hecho, el repositorio es una clase de servidores de ficheros, pero no el habitual. Lo que hace al repositorio de Subversion especial es que recuerda todos los cambios que alguna vez se hayan escrito en él: cada cambio en cada fichero, e incluso los cambios en el propio árbol de directorios, como el añadir, borrar o reorganizar ficheros y directorios. Cuando un cliente lee datos de un repositorio, normalmente ve únicamente la última versión del árbol de ficheros. Pero el cliente también tiene la capacidad de ver estados previos del sistema de ficheros. Pro ejemplo, un cliente puede hacer preguntas históricas, como " qué contenía este directorio el último miércoles?", o " quién fue la última persona que cambió este fichero, y qué cambios hizo?" Esta es la clase de preguntas que forman el corazón de cualquier sistema de control de versiones: son sistemas que están diseñados para guardar y registrar los cambios a los datos a lo largo del tiempo Modelos de Versionado Todos los sistemas de control de versiones tienen que resolver los mismos problemas fundamentales: cómo permitirá el sistema compartir información entre usuarios, pero evitando que ellos acci- 4

16 Conceptos Básicos dentalmente se pisen unos a otros? Es demasiado sencillo que los usuarios accidentalmente sobreescriban los cambios del otro en el repositorio El Problema de Compartir-Ficheros Considere este escenario: suponga que tiene dos compañeros de trabajo, Harry y Sally. Cada uno decide editar el mismo fichero del repositorio a la vez. Si Harry graba sus cambios en el repositorio primero, el posible que (unos momentos después) Sally pueda accidentalmente sobreescribirlos con su propia versión nueva del fichero. Mientras que la versión del fichero de Harry no se ha perdido para siempre (porque el sistema recuerda cada cambio), cualquier cambio que Harry hizo no estará en la versión nueva del fichero de Sally, porque para empezar ella nunca vió los cambios de Harry. El trabajo de Harry está aún efectivamente perdido - o al menos falta en la última versión del fichero - y probablemente por accidente. Esta es una situación que definitivamente tenemos que evitar! Figura 2.2. El Problema a Evitar La Solución Bloquear-Modificar-Desbloquear Muchos sistemas de control de versiones utilizan un modelo bloquear-modificar-desbloquear para enfrentarse a este problema, que es una solución muy simple. En estos sistemas, el repositorio sólo permite que una persona cambie un fichero al mismo tiempo. Harry primero debe "bloquear" el fichero antes de que pueda empezar a hacer cambios en él. Bloquear un fichero se parece mucho a tomar prestado un fichero de la biblioteca; si Harry ha bloqueado un fichero, entonces Sally no puede hacer ningún cambio en él. Si ella intenta bloquear el fichero, el repositorio entonces denegará la petición. Todo lo que ella puede hacer es leer el fichero, y esperar a que Harry termine sus cambios y libere su bloqueo. Después de que Harry desbloquee el fichero, se acabó su turno, y ahora le toca a Sally que puede bloquear y editar. 5

17 Conceptos Básicos Figura 2.3. La Solución Bloquear-Modificar-Desbloquear El problema con el modelo bloquear-modificar-desbloquear es que es un poco restrictivo, y a menudo se convierte en una calle cortada para los usuarios: El bloqueo causa muchos problemas administrativos. A veces Harry bloqueará un fichero y luego se olvidará de ello. Mientras tanto, dado que Sally está aún esperando para editar el fichero, sus manos están atadas. Y Harry se va de vacacioens. Ahora Sally tiene que buscar a un administrador para que libere el bloqueo de Harry. La situación acaba causando un montón de retraso y pérdida de tiempo innecesarios. El bloqueo puede causar procesos en serie innecesarios. Qué ocurre si Harry está editando el inicio de un fichero de texto, y Sally simplemente quiere cambiar la parte final del mismo fichero? Esos cambios no se superponen en absoluto. Ellos podrían fácilmente editar el fichero de forma simultánea, y no habría ningún daño, asumiendo que los cambios se combinaran correctamente. No hay necesidad de que se turnen en esta situación. El bloqueo puede causar una falsa sensación de seguridad. Imagine que Harry bloquea y edita el fichero A, mientras Sally simultáneamente bloquea y edita el fichero B. Pero suponga que A y B dependen uno del otro, y que los cambios hechos a cada uno son semánticamente incompatibles. De repente A y B ya no funcionan juntos. El sistema de bloqueo no tiene forma de prevenir este problema - sin embargo, de alguna forma dió una sensación de falsa seguridad. Es fácil para Harry y Sally imaginar que al bloquear los ficheros, cada uno está empezando una tarea segura y aislada, y por tanto les inhibe de discutir sus cambios incompatibles en un momento temprano. 6

18 Conceptos Básicos La Solución Copiar-Modificar-Combinar Subversion, CVS y otros sistemas de control de versiones utilizan un modelo copiar-modificar-combinar como alternativa al bloqueo. En este modelo, el cliente de cada usuario lee el repositorio y crea una copia de trabajo personal del fichero o del proyecto. Luego, los usuarios trabajan en paralelo, modificando sus copias privadas. Finalmente, las copias privadas se combinan juntas en una nueva versión final. El sistema de control de versiones a menudo ofrece ayuda en la combinación, pero al final la persona es la responsable de hacer que ocurra correctamente. Aquí hay un ejemplo. Digamos que Harry y Sally cada uno crean copias de trabajo del mismo proyecto, copiado del repositorio. Ellos trabajan concurrentemente, y hacen los cambios al mismo fichero "A" dentro de sus copias. Sally graba sus cambios al repositorio primero. Cuando Harry intenta grabar sus cambios más tarde, el repositorio le informa que su fichero A está desactualizado. En otras palabras, que el fichero A en el repositorio ha cambiado de alguna forma desde la última vez que lo copió. Por lo que Harry le pide a su cliente que combine cualquier cambio nuevo del repositorio dentro de su copia de trabajo del fichero A. Lo más seguro es que los cambios de Sally no se superpongan a los suyos; por lo que una vez que ambos conjuntos de cambios se han integrado, él graba su copia de trabajo de nuevo en el repositorio. Figura 2.4. La Solución Copiar-Modificar-Combinar 7

19 Conceptos Básicos Figura Copiar-Modificar-Combinar Continuado Pero qué ocurre si los cambios de Sally sí se superponen a los cambios de Harry? Qué hacemos entonces? La situación se denomina un conflicto, y normalmente no es mucho problema. Cuando Harry le pide a su cliente que combine los últimos cambios del repositorio en su copia de trabajo, si copia del fichero A se marca de alguna forma como que está en un estado de conflicto: él será capaz de ver ambos conjuntos de cambios conflictivos, y manualmente podrá elegir entre ellos. Tenga en cuenta que el software no puede resolver conflictos automáticamente; sólo los humanos son capaces de entender y hacer las elecciones necesarias de forma inteligente. Una vez que Harry haya resuelto manualmente los cambios que se superponían ( quizás discutiendo el conflicto con Sally!), puede grabar de forma segura el fichero de nuevo al repositorio. El modelo copiar-modificar-combinar puede sonar un poco caótico, pero en la práctica, funciona extremadamente bien. Los usuarios pueden trabajar en paralelo, sin que tengan que esperar nunca uno por otro. Cuando trabajan en los mismos ficheros, resulta que la mayoría de los cambios concurrentes no se superponen en absoluto; los conflictos no son frecuentes. Y el tiempo que lleva resolver conflictos es mucho menor que el tiempo perdido por un sistema bloqueante. Al final, todo se reduce a un factor crítico: la comunicación entre usuarios. Cuando los usuarios se comunican de forma pobre, aumentan los conflictos sintácticos y semánticos. No hay sistema capaz de forzar a los usuarios a comunicarse perfectamente, y no hay sistema que pueda detectar conflictos semánticos. Por lo que no hay motivo para que se le prometa falsamente que un sistema con bloqueos prevendrá de alguna forma los conflictos; en la práctica, el bloqueo parece inhibir la productividad más que otra cosa. Hay una situación común donde el modelo bloquear-modificar-desbloquear resulta mejor, y es cuan- 8

20 Conceptos Básicos do tiene ficheros no-combinables. Por ejemplo si su repositorio contiene algunas imágenes gráficas, y dos personas cambian la imagen a la vez, no hay forma de combinar esos cambios. O Harry o Sally perderán sus cambios Qué hace Subversion? Subversion utiliza la solución copiar-modificar-mezclar por defecto, y en muchos casos esto es todo lo que necesitará. Sin embargo, desde la Versión 1.2, Subversion también admite bloqueo de ficheros, por lo que si tiene ficheros no-combinables, o si simplemente está forzado a una política de bloqueo por la dirección, Subversion seguirá teniendo las características que necesita Subversion en Acción Copias de Trabajo Ya ha oído hablar sobre las copias de trabajo; ahora le demostraremos cómo las crea y las utiliza el cliente de Subversion. Una copia de trabajo de Subversion es un árbol de directorios ordinario en su sistema local, conteniendo una colección de ficheros. Puede editar estos ficheros como desee, y si son ficheros de código fuente, puede compilar su programa de la forma habitual. Su copia de trabajo es su propia área de trabajo privada: Subversion nunca incorporará los cambios de otra gente, ni hará que sus cambios estén disponibles para los demás, a menos que se lo pida explícitamente. Después de que haya hecho algunos cambios en los ficheros dentro de su copia de trabajo y verifique que funcionan correctamente, Subversion le provee de comandos para "publicar" sus cambios para los demás que trabajan con usted en su proyecto (escribiendo en el repositorio). Si los demás publican sus propios cambios, Subversion le provee de comandos para combinar esos cambios dentro de su copia de trabajo (leyendo desde el repositorio). Una copia de trabajo también contiene algunos ficheros extra, creados y mantenidos por Subversion, para ayudarse a llevar a cabo esos comandos. En particular, cada directorio detnro de su copia de trabajo contiene un subdirectorio llamado.svn, también conocido como el directorio administrativo de la copia de trabajo. Los ficheros dentro de los directorios administrativos ayudan a Subversion a reconocer qué ficheros contienen cambios no publicados, y qué ficheros están desactualizados respecto al trabajo de los demás. Un repositorio típico de Subversion a menudo contiene los ficheros (o el código fuente) de varios proyectos; usualmente, cada proyecto es un subdirectorio en el árbol de ficheros del repositorio. Con esta disposición, una copia de trabajo de un usuario normalmente corresponderán a un subárbol particular del repositorio. Por ejemplo, suponga que tiene un repositorio que contiene dos proyectos de software. 9

21 Conceptos Básicos Figura 2.6. El Sistema de Ficheros del Repositorio En otras palabras, el directorio raíz del repositorio tiene dos subdirectorios, paint y calc. Para obtener una copia de trabajo, primero debe obtener algún subárbol del repositorio. (El término "obtener" puede sonar como que tenga algo que ver con el bloqueo o la reserva de recursos, pero no es cierto; simplemente crea una copia privada del proyecto para usted). URLs de Repositorio Los repositorios de Subversion pueden ser accedidos por muchos métodos diversos - en discos locales, o a través de varios protocolos de red. La ruta de un repositorio es siempre, sin embargo, una URL. El esquema URL indica el método de acceso: Esquema file:/// svn:// svn+ssh:// Método de acceso Acceso directo al repositorio en el disco local. Acceso utilizando el protocolo WebDAV a un servidor Apache configurado para Subversion. Lo mismo que pero con encriptación SSL. Acceso TCP/IP sin autentificación utilizando un protocolo personalizado a un servidor svnserve. acceso TCP/IP autentificado y encriptado utilizando un protocolo propio a un servidor svnserve 10

22 Conceptos Básicos Tabla 2.1. URLs de Acceso al Repositorio En la mayor parte, las URLs de Subversion utilizan la sintaxis estándar, permitiendo que se especifiquen nombres de servidor y números de puertos como parte de la URL. Recuerde que el método de acceso file: es válido sólo para rutas en el mismo servidor que el cliente - de hecho, de acuerdo con la convención, la parte del nombre del servidor en la URL necesita estar o bien ausente o bien ser localhost. Tenga mucho cuidado en NO utilizar el método de acceso file: para acceder a repositorios BDB que estén en unidades compartidas en la red! Además, los usuarios del esquema file: en las plataformas Windows necesitarán utilizar una sintaix estándar no oficial para acceder a los repositorios que están en la misma máquina, pero en una letra de unidad diferente de la unidad actual del cliente. Cualquiera de las siguientes sintaxis de URL funcionarán, donde X es la unidad en la que reside el repositorio: file:///x:/ruta/al/repositorio... file:///x /ruta/al/repositorio... Tenga en cuenta que las URLs utilizan las barras hacia delante (las de dividir) incluso aunque la forma nativa (no-url) de una ruta en Windows utiliza las barras contrarias. Suponga que ha hecho cambios a button.c. Dado que el directorio.svn recuerda la fecha de modificación y los contenidos originales del fichero, Subversion puede decirle que ha cambiado el fichero. Sin embargo, Subversion no hace públicos sus cambios hasta que explícitamente se lo pida. El acto de publicar sus cambios se conoce más comúnmente como confirmar (o enviar) los cambios al repositorio. Para publicar sus cambios para los demás, puede utilizar el comando de Subversion commit. Ahora que sus cambios a button.c se han confirmado en el respositorio, si cualquier otro usuario obtiene una copia de trabajo de /calc, verán sus cambios en la última versión del fichero. Suponga que tiene un colaborador, Sally, que obtuvo una copia de trabajo de /calc al mismo tiempo que usted. Cuando ha confirmado sus cambios en button.c, la copia de trabajo de Sally se queda sin cambios; Subversion sólo modifica las copias de trabajo cuando lo pide el usuario. Para poner al día su proyecto, Sally puede pedirle a Subversion actualizar su copia de trabajo, utilizando el comando de Subversion actualizar. Esto incorporará sus cambios en la copia de trabajo de Sally, junto con cualquier otro que se haya confirmado desde que ella lo obtuvo. Tenga en cuenta que Sally no necesita especificar qué ficheros actualizar; Subversion utiliza la información en el directorio.svn, y más información desde el repositorio, para decidir qué ficheros deben ponerse al día Revisiones Una operación svn commit puede publicar los cambios de cualquier número de ficheros y carpetas como una única transacción atómica. En su copia de trabajo, puede cambiar el contenido de los ficheros, crear, borrar, renombrar y copiar ficheros y directorios, y luego confirmar el conjunto completo de cambios como una unidad. En el repositorio, cada confirmación se trata como una transacción atómica: o bien todos los cambios de la confirmación se llevan a cabo, o bien ninguno de ellos se realiza. Subversion intenta retener esta atomicidad en caso de errores en el programa, errores del sistema, probleams de red, y otras acciones del usuario. 11

23 Conceptos Básicos Cada vez que el repositorio acepta una confirmación, crea un nuevo estado del árbol de ficheros, llamado revisión. A cada revisión se le asigna un número natural único, un número mayor que la revisión anterior. La revisión inicial de un repositorio recién creado se numera como cero, y consiste únicamente en un directorio raíz vacío. Una buena forma de visualizar el repositorio es como una serie de árboles. Imagine una fila de números de revisiones, empezando en 0, de izquierda a derecha. Cada número de revisión tiene un árbol colgando debajo, y cada árbol es una foto de cómo estaba el repositorio tras cada confirmación. Figura 2.7. El Repositorio Números Globales de Revisión Al contrario que la mayoría del resto de sistemas de control de versiones, los números de revisión de Subversion se aplican a árboles completos, no a los ficheros individuales. Cada número de revisión selecciona un árbol entero, un estado particular del repositorio tras algún cambio confirmado. Otra forma de verlo es pensar que la revisión N representa el estado del repositorio tras la confirmación N-ésima. Cuando un usuario de Subversion habla de la "revision 5 de foo.c", realmente quieren decir "foo.c tal y como estaba en la revisión 5". Tenga en cuenta que, en general, las revisiones N y M de un fichero no tienen por qué ser diferentes! Es importante que tenga en cuenta que las copias de trabajo no siempre se corresponden a una única revisión en el repositorio; pueden contener ficheros de varias revisiones.por ejemplo, suonga que obtiene una copia de trabajo de un repositorio cuya revisión más reciente es la 4: calc/makefile:4 integer.c:4 button.c:4 En este momento, esta copia de trabajo corresopnde exactamente a la revisión 4 en el respositorio. Sin embargo, suponga que ha hecho cambios al fichero button.c, y confirme ese cambio. Asu- 12

24 Conceptos Básicos miendo que no se haya llevado a cambio ninguna otra confirmación, su confirmación creará la revisión 5 en el repositorio, y su copia de trabajo quedará así: calc/makefile:4 integer.c:4 button.c:5 Suponga que, en este punto, Sally hace un cambio a integer.c, creando la revisión 6. Si utiliza svn update para actualizar su copia de trabajo, obtendrá ésto: calc/makefile:6 integer.c:6 button.c:6 Los cambios de Sally a integer.c aparecerán en su copia de trabajo, y su cambio estará aún presente en button.c. En este ejemplo, el texto de Makefile es idéntico en las revisiones 4, 5, y 6, pero Subversion marcará su copia de trabajo de Makefile con la revisión 6 para indicar que aún está actualizado. Por lo que, después de que haga una actualización limpia en la parte superior de su copia de trabajo, generalmente obtendrá exactamente una revisión del repositorio Cómo se unen las Copias de Trabajo al Repositorio Por cada fichero en un directorio de trabajo, Subversion grabará dos piezas esenciales de información en el área administrativa.svn/: en qué revisión se basa su fichero de trabajo (lo que se denomina la revisión de trabajo), y una fecha que indica cuándo se actualizó por última vez la copia local por el repositorio. Con esta información, hablando con el repositorio, Subversion puede decirle en cuál de los siguientes cuatro estados está un fichero de trabajo: Sin cambios, y actualizado El fichero no se ha cambiado en el directorio de trabajo, y no se han confirmado cambios a ese fichero en el repositorio desde su revisión de trabajo. Una confirmación de ese fichero no hará nada, y una actualización de ese fichero no hará nada. Cambiado localmente, y actualizado El fichero ha sido cambiado en el directorio de trabajo, y no se ha confirmado ningún cambio a ese fichero en el repositorio desde su revisión base. Hay cambios locales que no se han confirmado al repositorio, por lo que al confirmar el fichero se conseguirá publicar sus cambios, y al actualizar el fichero no se realizará nada. Sin cambios, y desactualizado El fichero no ha sido cambiado en el directorio de trabajo, pero ha sido cambiado en el repositorio. El fichero deberá ser actualizado en algún momento, para actualizarlo con la revisión pública. Un comando confirmar sobre el fichero no hará nada, y al actualizar el fichero se traerán los últimos cambios a su copia de trabajo. Localmente cambiado, y desactualizado El fichero se ha cambiado tanto en el directorio de trabajo como en el repositorio. Un comando confirmar sobre el fichero fallará con un error "desactualizado". El fichero debería actualizarse primero; al actualizar se intentará combinar los cambios públicos con los cambios locales. Si Subversion no puede completar la combinación de una forma plausible automáticamente, le dejará al usuario la tarea de resolver el conflicto Sumario 13

25 Conceptos Básicos Hemos cubierto un número de conceptos fundamentales de Subversion en este capítulo: Hemos introducido las nociones de un repositorio central, la copia de trabajo del cliente, y la lista de árboles de revisiones del repositorio. Hemos visto algunos ejemplos simples sobre cómo dos colaboradores pueden utilizar Subversion para publicar y recibir los cambios de uno a otro, utilizando el modelo 'copiar-modificar-combinar'. Hemos hablado un poco sobre la forma en la que Subversion controla y maneja la información en una copia de trabajo. 14

26 Capítulo 3. Preparando Un Servidor Para utilizar TortoiseSVN (o cualquier otro cliente de Subversion), necesita un lugar donde establecer sus repositorios. Puede o bien almacenar sus repositorios de forma local y acceder a ellos utilizando el protocolo file://, o puede ponerlos en un servidor y acceder a ellos con el protocolo o svn://. Los dos protocolos de servidor también pueden ser encriptados. Utilice o svn+ssh://. Este capítulo le muestra paso a paso cómo puede preparar uno de estos servidores en una máquina Windows. Si no tiene un servidor y/o si trabaja solo, los repositorios locales son probablemente su mejor elección. Puede saltarse este capítulo e ir directamente al Capítulo 4, El Repositorio Servidor Basado en Apache Introducción La configuración más flexible de todas las instalaciones de servidor posibles para Subversion es la que se basa en Apache. Aunque es un poco más complicada de preparar, ofrece beneficios que otros servidores no pueden dar: WebDAV El servidor de Subversion basado en Apache utiliza el protocolo WebDAV que se utiliza por muchos otros programas. Por ejemplo, podría montar un repositorio como una "Carpeta Web" en el explorador de Windows y luego acceder a ella como cualquier otra carpeta en su sistema de ficheros Navegando Por El Repositorio Puede apuntar su navegador a la URL del repositorio y navegar por sus contenidos sin tener un cliente de Subversion. Esto da acceso a sus datos a un mayor círculo de usuarios. Autentificación Puede utilizar cualquier mecanismo de autentificación que Apache soporte, incluyendo SSPI y LDAP. Seguridad Dado que Apache es muy estable y seguro, automáticamente obtendrá la misma seguridad para su repositorio. Esto incluye la encriptación SSL Instalando Apache La primera cosa que necesida antes de instalar Apache es un ordenador con Windows 2000, Windows XP con SP1, o Windows Aviso Por favor tenga en cuenta que utilizar Windows XP sin el Service Pack 1 corrompe datos de la red y por tanto podría corromper su repositorio! 1. Descargue la última versión del servidor web Apache desde Asegúrese de que descarga la versión > las versiones 1.3.xx no sirven! Además, las versiones anteriores a la no funcionará con Subversion 1.2 por culpa de un error en cómo se compiló Apache < para Windows. 2. Una vez que tenga el instalador de Apache2 puede hacer doble click en él y le guiará a través del proceso de instalación. Asegúrese de que ha introducido la URL del servidor correctamente (si no tiene un nombre dns para su servidor introduzca la dirección IP). Le recomiendo que ins- 15

27 Preparando Un Servidor tale apache para Todos los usuarios, en Puerto 80, como un Servicio. Nota: si ya tiene IIS u otro programa ejecutándose que escuche en el puerto 80 la instalación puede fallar. Si esto ocurre, vaya al directorio de Archivos de Programa, \Apache Group\Apache2\conf y localice el fichero httpd.conf. Edite dicho fichero para cambiar Listen 80 por un puerto libre, por ejemplo, Listen 81. Luego reinicie la instalación - esta vez debería terminar sin problemas. 3. Ahora compruebe si el servidor web Apache funciona correctamente apuntando desde su navegador web a la dirección - debería aparecer un sitio web preconfigurado. Atención Si decide instalar Apache como un servicio, queda avisado de que por defecto se ejecutará con la cuenta de sistema local. Sería una práctica más segura que creara una cuenta separada para que Apache se ejecutara bajo ella. Asegúrese de que la cuenta en el servidor bajo la que se ejecuta Apache tenga una entrada explícita en la lista de control de acceso del directorio del repositorio (click con el botón derecho en el directorio propiedades seguridad), con control total. Si no lo hace así, los usuarios no podrán confirmar sus cambios. Incluso si Apache se ejecuta como sistema local, aún así necesitará dicha entrada (que debería ser la cuenta Administrador en este caso). Si Apache no tiene este permiso configurado, sus usuarios tendrán mensajes de error "Acceso denegado", que se mostrarán en el registro de errores de Apache como error Instalando Subversion 1. Descargue la última versión de Subversion desde 2. Ejecute el instalador de Subversion y siga las instrucciones. Si el instalador de Subversion reconoce que ha instalado Apache, habrá casi terminado. Si no puede encontrar un servidor de Apache entonces tendrá que realizar algunos pasos adicionales. 3. Utilizando el explorador de Windows, vaya al directorio de instalación de Subversion (normalmente C:\Archivos de programa\subversion) y busque los ficheros / httpd/mod_dav_svn.so y mod_authz_svn.so. Copie estos ficheros al directorio de módulos de Apache (normalmente C:\Archivos de programa\apache Group\Apache2\modules). 4. Copie el fichero /bin/libdb42.dll desde el directorio de instalación de Subversion al directorio de módulos de Apache. 5. Edite el fichero de configuración de Apache (normalmente C:\Archivos de Programa\Apache Group\Apache2\conf\httpd.conf) con un editor de texto como el Bloc de Notas y haga los siguientes cambios: Descomente (quitando la marca '#') las siguientes líneas: #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so 16

28 Preparando Un Servidor Añada las dos líneas siguientes al final de la sección LoadModule. LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so Configuración Ahora ya ha preparado Apache y Subversion, pero Apache aún no sabe cómo manejar los clientes de Subversion como TortoiseSVN. Para que Apache sepa qué URL debe utilizarse para los repositorios de Subversion debe editar el fichero de configuración de Apache (normalmente está en C:\Archivos de programa\apache Group\Apache2\conf\httpd.conf) con cualquier editor de texto que desee (por ejemplo, el Bloc de Notas): 1. Al final del fichero Config añada las siguientes líneas: <Location /svn> DAV svn SVNParentPath D:\SVN AuthType Basic AuthName "Repositorios de Subversion" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location> Esto configura el Apache de forma que todos sus repositorios de Subversion están físicamente localizados bajo D:\SVN. Los respositorios se sirven al mundo exterior desde la URL: El acceso es restringido a los usuarios/contraseñas listados en el fichero passwd. 2. Para crear el fichero passwd, abra el Símbolo del sistema o línea de comandos (ventana DOS) de nuevo, cambie a la carpeta Apache2 (normalmente C:\Archivos de programa\apache Group\Apache2) y cree el fichero introduciendo bin\htpasswd -c passwd <nombreusuario> Esto creará un nuevo fichero con el nombre passwd que se utilizará para la autentificación. Se pueden crear usuarios adicionales con bin\htpasswd passwd <nombreusuario> 3. Reinice el servicio de Apache de nuevo. 4. Apunte su navegador a (donde MiNuevoRepositorio es el nombre del repositorio de Subversion que creó antes). Si todo ha ido bien debería ver una ventana preguntando por un usuario y una contraseña, y luego podrá ver los contenidos de su repositorio. Una explicación corta de lo que acaba de escribir: Opción <Location /svn> DAV svn Explicación significa que los repositorios de Subversion están disponibles desde la URL le dice a Apache qué módulo debe ser responsable de servir dicha URL - en este caso el módulo de Subversion. 17

29 Preparando Un Servidor Opción SVNParentPath D:\SVN AuthType Basic AuthName "Repositorios de Subversion" AuthUserFile passwd AuthzSVNAccessFile Require valid-user Explicación le dice a Subversion que busque los repositorios bajo D:\SVN activa la autentificación básica, es decir, Usuario/contraseña se utiliza como una información cuando aparece un diálogo de autentificación que le comunica al usuario para qué es la autentificación especifica qué fichero de contraseñas debe utilizarse para la autentificación Ruta del fichero de acceso para las rutas dentro de un repositorio de Subversion indica que sólo a los usuarios que hayan introducido un usuario/ contraseña correctos se les permite el acceso a la URL Tabla 3.1. Opciones del fichero httpd.conf de Apache Pero esto es sólo un ejemplo. Hay muchas, muchas más posibilidades de lo que puede hacer con el servidor web Apache. Si desea que su repositorio tenga acceso de lectura para todo el mundo pero el acceso de escritura sólo para usuarios específicos, puede cambiar la línea Require valid-user por <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> Utilizando un fichero passwd se limita y se otorga acceso a todos sus repositorios como una unidad. Si desea más control sobre qué usuarios tienen acceso a cada carpeta dentro de un repositorio, puede descomentar la línea #AuthzSVNAccessFile svnaccessfile y crear un fichero de acceso de Subversion. Apache se asegurará que sólo los usuarios válidos pueden acceder su ruta /svn, y luego pasará el nombre de usuario al módulo de Subversion AuthzSVNAccessFile para que pueda forzar un acceso más granularizado basado en las reglas que se especifican en el fichero de acceso de Subversion. Esto sería un fichero de ejemplo: [groups] developers = usuario1,usuario2,usuario3,usuario4 docs = usuario5,usuario6,usuario7 #permitir a todo el mundo acceso de lectura [/] * = r #permitir a todos los desarrolladores acceso = rw #los documentadores pueden escribir en la carpeta docs = rw 18

30 Preparando Un Servidor Use SVNParentPath Si ha utilizado la directiva SVNParentPath no necesita cambiar el fichero de configuración de Apache cada vez que añada un nuevo repositorios de Subversion. Simplemente cree el nuevo repositorio bajo la misma ruta que el primer repositorio y ya está! En mi compañía yo tengo acceso directo a esa carpeta específica via SMB (el acceso normal de ficheros de Windows). Por lo que simplemente creo una nueva carpeta allí, ejecuto el comando de TortoiseSVN TortoiseSVN->Crear repositorio aquí... y un nuevo proyecto que ya tiene hogar... Índice de proyectos bajo SVNParentPath La ventaja de utilizar la directiva SVNParentPath es que no tiene que cambiar el fichero de configuración cada vez que cree un nuevo repositorio, pero tampoco tendrá un índice de todos los proyectos creados y disponibles. Si apunta su navegador a la ruta que indica SVNParentPath, obtendrá una fastidiosa página de error. Para evitar esa horrible página de error y tener una bonita página mostrando todos los proyectos disponibles, puede utilizar el siguiente script PHP que genera el índice por usted automáticamente. (Necesitará instalar PHP en su servidor para utilizar el siguiente fichero). <html> <head> <title>subversion Repositories</title> </head> <body> <h2>subversion Repositories</h2> <p> <?php $svnparentpath = "C:/svn"; $svnparenturl = "/svn"; $dh = opendir( $svnparentpath ); if( $dh ) { while( $dir = readdir( $dh ) ) { $svndir = $svnparentpath. "/". $dir; $svndbdir = $svndir. "/db"; $svnfstypefile = $svndbdir. "/fs-type"; if( is_dir( $svndir ) && is_dir( $svndbdir ) ) { echo "<a href=\"". $svnparenturl. "/". $dir. "\">". $dir. "</a>\n"; if( file_exists( $svnfstypefile ) ) { $handle = fopen ("$svnfstypefile", "r"); $buffer = fgets($handle, 4096); fclose( $handle ); $buffer = chop( $buffer ); if( strcmp( $buffer, "fsfs" )==0 ) { echo " (FSFS) <br />\n"; } else { echo " (BDB) <br />\n"; } } else { echo " (BDB) <br />\n"; } } } closedir( $dh ); } 19

31 Preparando Un Servidor?> </p> </body> </html> Grabe las líneas anteriores en un fichero svn_index.php y grabe dicho fichero en su directorio web raíz. Ahora debe decirle a Apache que muestre dicha página en vez del error: Descomente (quite el caracter '#') de la siguiente línea en su fichero de configuración de Apache: #LoadModule rewrite_module modules/mod_rewrite.so Añada las siguientes líneas justo después del bloque <Location> donde define sus parámetros de Subversion: RewriteEngine on RewriteRule ^/svn$ /svn_index.php [PT] RewriteRule ^/svn/$ /svn_index.php [PT] RewriteRule ^/svn/index.html$ /svn_index.php [PT] Autentificación con un Dominio de Windows Como habrá notado necesita introducir una entrada usuario/contraseña en el fichero passwd para cada usuario de forma separada. Y si (por razones de seguridad) quiere que sus usuarios cambien periódicamente sus contraseñas tendrá que hacer el cambio de forma manual. Pero hay una solución a este problema - al menos si accede al repositorio desde dentro de una LAN con un controlador de dominio de Windows: mod_auth_sspi! El módulo original de SSPI lo ofreció Syneapps incluyendo el código fuente. Pero su desarrollo se paró. Todavía puede buscar dicho módulo en Internet - haga una búsqueda en Google para encontrarlo. Nosotros también tenemos una versión compilada en nuestro sitio web, incluyendo un parche de Vladimir Berezniker. Obtenga el módulo mod_auth_sspi [ Descargue el módulo, copie el fichero mod_auth_sspi.so en la carpeta de módulos de Apache. Edite el fichero de configuración de Apache: añada la línea LoadModule sspi_auth_module modules/mod_auth_sspi.so a la sección de LoadModule. Asegúrese de insertar esta línea antes de la línea LoadModule auth_module modules/mod_auth.so Para asegurarse de que la ruta de Subversion utiliza este tipo de autentificación tiene que cambiar la línea 20

32 Preparando Un Servidor AuthType Basic a AuthType SSPI y también deberá añadir SSPIAuth On SSPIAuthoritative On SSPIDomain <domaincontroller> SSPIOfferBasic On dentro del bloque <Location /svn>. Si no tiene un controlador de dominio, deje el nombre del control de cominio como <domaincontroller>. Tenga en cuenta que si se autentifica utilizando SSPI, ya no necesitará la línea AuthUserFile para definir un fichero de contraseñas. En su lugar, Apache autentifica su usuario y contraseña contra su dominio de Windows. También necesitará actualizar la lista de usuarios en su svnaccessfile para referirse a DOMINIO\usuario. Sugerencia Los ficheros AuthzSVNAccessFile de Subversion distinguen mayúsculas y minúsculas respecto a los nombres de usuario ("JuanPerez" es diferente de "juanperez"). En el mundo de Microsoft, los dominios y nombres de usuarios de Windows no distinguen mayúsculas y minúsculas. Incluso así, a algunos administradores de redes les gusta crear las cuentas de usuario en "CamelCase" (por ejemplo, "JuanPerez"). La diferencia puede morderle cuando utilice la autentificación SSPI ya que el dominio de Windows y los nombres de usuario se pasan a Subversion exactamente como los haya tecleado el usuario en la ventana. Internet Explorer a menudo pasa el nombre de usuario a Apache automáticamente utilizando el formato con el que se creó la cuenta. El resultado final es que puede necesitar al menos dos entradas en su fichero AuthzSV- NAccessFile para cada usuario -- una entrada en minúsculas y una entrada con el formato que Internet Explorer pasa a Apache. También tendrá que aleccionar a sus usuarios para que escriban sus credenciales en minúsculas cuando accedan a los repositorios utilizando TortoiseSVN. Los registros de Error y Acceso de Apache son su mejor aliado para descifrar problemas como estos, ya que le ayudarán a determinar la cadena de nombre de usuario pasada al módulo AuthzSVNAccessFile de Subversion. Puede que necesite experimentar con el formato exacto de la cadena del usuario en el svnaccessfile (por ejemplo, DO- MINIO\usuario contra DOMINIO//usuario) para conseguir que todo funcione. SSL e Internet Explorer Si está asegurando su servidor con SSL y utiliza la autentificación contra un dominio de Windows se encontrará que la navegación de repositorios con el Internet Explorer ya no funcionará. No se preocupe - es sólo que Internet Explorer no se puede autentificar. Los demás navegadores no tienen ese problema y tanto TortoiseSVN como cualquier otro cliente de Subversion todavía podrán autentificarse. Si todavía quiere utilizar IE para navegar en el repositorio, puede: 21

33 Preparando Un Servidor defina una directiva separada <Location /ruta> en el fichero de configuración de apache, y añada SSPIBasicPreferred On. Esto permitirá que IE se autentifique de nuevo, pero los demás navegadores y Subversion no se podrán autentificar contra esa ruta. Ofrezca también la navegación sin autentificación encriptada (sin SSL). Extrañamente, IE no tiene ningún problema para autentificarse si la conexión no está asegurada con SSL. En la configuración "estándar" de ssl a menudo aparecen las siguientes líneas en el host virtual ssl de Apache: SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 Hay ( había?) buenas razones para esta configuración, lea Pero si desea autentificación NTLM deberá utilizar keepalive: roddocs/en-us/qos_enablekeepalives.asp Si descomenta todo el "SetEnvIf" debería ser capaz de autentificar IE con la autentificación de Windows sobre SSL contra un Apache sobre Win32 con el módulo incluído mod_auth_sspi Asegurando el servidor con SSL El servidor Apache no tiene soporte SSL instalado por defecto por culpa de las restricciones de exportación de EE.UU. Pero puede descargar el módulo necesario de algún otro lugar e instalarlo usted mismo. 1. Primero necesitará los ficheros necesarios para habilitar SSL. Puede encontrarlos en el paquete disponible en Simplemente descomprima el paquete y luego copie el fichero mod_ssl.so a la carpeta modules de Apache, y el fichero openssl.exe a la carpeta bin. También debe copiar el fichero conf/ssl.conf a la carpeta conf de Apache. 2. Abra el fichero ssl.conf en la carpeta de configuración del Apache con un editor de texto. 3. Ponga un carácter de comentario (#) al inicio de estas líneas: DocumentRoot "c:/apache/htdocs" ServerName ServerAdmin you@example.com ErrorLog logs/error_log TransferLog logs/access_log 4. cambie la línea SSLCertificateFile conf/ssl.crt/server.crt por SSLCertificateFile conf/ssl/my-server.cert la línea SSLCertificateKeyFile conf/ssl.key/server.key 22

34 Preparando Un Servidor por SSLCertificateKeyFile conf/ssl/my-server.key y la línea SSLMutex file:logs/ssl_mutex por SSLMutex default 5. Borre las líneas <IfDefine SSL> y </IfDefine> 6. Abra el fichero de configuración de Apache (httpd.conf) y descomente la línea #LoadModule ssl_module modules/mod_ssl.so 7. Openssl necesita un fichero de configuración. Puede descargar uno que funciona desde Grabe el fichero en bin/openssl.cnf. Por favor, tenga en cuenta que el fichero debe ser de tipo *.cnf. Windows trata dichos ficheros de una forma especial, pero realmente es simplemente un fichero de texto! 8. Lo siguiente que debe hacer es crear un certificado SSL. Para hacer esto, abra un Símbolo del sistema o línea de comandos (ventana DOS) y cambie a la carpeta de Apache (e.g. C:\Archivos de Programa\Apache Group\Apache2) y escriba el siguiente comando: bin\openssl req -config bin\openssl.cnf -new -out my-server.csr Se le preguntará una passphrase (frase de contraseña). Por favor no utilice palabras sencillas sino frases completas (por ejemplo, partes de un poema). Cuanto más larga sea la frase, mejor. También debe introducir la URL de su servidor. Todas las demás preguntas son opcionales, pero le recomendamos que las rellene. Ahora escriba los comandos bin\openssl rsa -in privkey.pem -out my-server.key y (en una única linea) bin\openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000 Esto creará un certificado que expirará en 4000 días. Y finalmente, introduzca (también en una única línea): 23

35 Preparando Un Servidor bin\openssl x509 -in my-server.cert -out my-server.der.crt -outform DER Estos comandos crearán algunos ficheros en la carpeta Apache (my-server.der.crt, myserver.csr, my-server.key,.rnd, privkey.pem, my-server.cert). Copie los ficheros a la carpeta conf/ssl (por ejemplo, C:\Archivos de programa\apache Group\Apache2\conf\ssl) - si esta carpeta no existe deberá crearla antes. 9. Reinicie el servicio de Apache. 10. Apunte su navegador a Forzando el acceso SSL Cuando haya preparado SSL para hacer su repositorio más seguro, puede que desee deshabilitar el acceso normal via no-ssl (http) y sólo permitir el acceso https. Para hacer esto, debería añadir otra directiva al bloque <Location> de Subversion: SSLRequireSSL. Un bloque <Location> de ejemplo se parecería a éste: <Location /svn> DAV svn SVNParentPath D:\SVN SSLRequireSSL AuthType Basic AuthName "Repositorios de Subversion" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location> 3.2. Servidor Basado en Svnserve Introducción Puede haber situaciones donde no es posible utilizar Apache como servidor. Afortunadamente, Subversion incluye Svnserve - un ligero servidor aislado que utiliza un protocolo propio sobre una conexión TCP/IP ordinaria. En la mayoría de los casos svnserve es más fácil de instalar y se ejecuta más rápido que el servidor basado en Apache Instalando svnserve 1. Obtenga la última versión de Subversion desde 2. Ejecute el instalador de Subversion. Si ejecuta el instalador en su servidor, puede saltarse el paso Abra el explorador de Windows, vaya al directorio de instalación de Subversion (usualmente C:\Archivos de programa\subversion) y en el directorio bin, localice los ficheros svnserve.exe, libdb42.dll, libeay32.dll y ssleay32.dll - copie estos ficheros en un directorio de su servidor, por ejemplo c:\svnserve 24

36 Preparando Un Servidor Ejecutando svnserve Ahora que svnserve está instalado, necesitará ejecutarlo en su servidor. La forma más sencilla es ejecutar lo siguiente desde una ventana DOS o bien crear un acceso directo de Windows: svnserve.exe -d svnserve ahora esperará peticiones entrantes en el puerto La opción -d le dice a svnserve que se ejecute como un servicio, por lo que siempre existirá hasta que se le mate manualmente. Si aún no ha creado un repositorio, siga las instrucciones dadas en la instalación del servidor basado en Apache Sección 3.1.4, Configuración. Para comprobar que svnserve está funcionando, utilice TortoiseSVN->Navegador para ver un repositorio. Asumiendo que su repositorio está en c:\repos\testrepo, y que su servidor se llama localhost, introduzca: svn://localhost/repos/testrepo cuando le pregunte el navegador de repositorios. También puede incrementar la seguridad y ahorrar tiempo introduciendo URLs con svnserve utilizando la opción -r para cambiar la ruta raíz y restringir el acceso a un directorio especificado en el servidor: svnserve.exe -d -r unidad:\ruta\a\repositorio Utilizando el test anterior como guía, se debería ejecutar svnserve así: svnserve.exe -d -r c:\repos Y en TortoiseSVN la URL del navegador de repositorios se acorta así: svn://localhost/testrepo Tenga en cuenta que la opción -r también se necesita si su repositorio está en una unidad o partición diferente que donde está svnserve en su servidor. Aviso No cree o acceda a un repositorio Berkeley DB en una unidad de red compartida. No puede existir en un sistema de archivos remoto. Ni siquiera si tiene la unidad de red mapeada a una letra de unidad. Si intenta usar Berkeley DB en una unidad de red compartida, los resultados son imprevisibles - puede ver desde el principio errores misteriosos, o pueden pasar meses antes de que descubra que su base de datos del repositorio está corrupta de una forma inimaginable. Ejecutar svnserve como un Servicio Si le preocupa tener que iniciar siempre sesión con un usuario en su servidor, o preocupado d que alguien apague svnserve o se le olvide volver a ejecutarlo tras un reinicio, es posible ejecutar svnserve como un servicio de Windows utilizando un wrapper como el que está disponible en svnservice [ proporcionado por Magnus Norddahl. Tenga en cuenta que SVNService instala svnser- 25

37 Preparando Un Servidor ve como un servicio manual, puede que desee cambiar esto a automático. Las herramientas más genéricas como firedaemon [ también funcionarán. Tenga en cuenta que aún necesitará ejecutar svnserve con la opción - d Autentificación con svnserve La configuración por defecto de svnserve proporciona acceso de sólo-lectura de forma anónima, por lo que aunque podrá utilizar el navegador de repositorios en TortoiseSVN para ver un repositorio utilizando una URL svn://, no podrá realizar ninguna operación normal de Subversion como obtener, actualizar o confirmar. Para permitir acceso de escritura en un repositorio, necesitará editar el fichero conf/svnserve.conf en el directorio de su repositorio. Este fichero controla la configuración del servicio svnserve, y también contiene información útil. Puede habilitar el acceso anónimo para escritura simplemente poniendo: [general] anon-access = write Sin embargo, no sabrá quién ha hecho cambios en el repositorio, dado que la propiedad svn:author estará vacía. Tampoco podrá controlar quién puede hacer cambios en el repositorio. Esta es una configuración algo arriesgada! Una forma de conseguir esto es crear una base de datos de contraseñas: [general] anon-access = none auth-access = write password-db = ficherodeusuarios Donde ficherodeusuarios es un fichero que existe en el mismo directorio que svnserve.conf. Este fichero también puede estar en cualquier otro sitio de su sistema de ficheros (útil cuando tiene múltiples repositorios que necesitan los mismos derechos de acceso) y puede ser referenciado utilizando una ruta absoluta, o una ruta relativa del directorio conf. Si incluye una ruta, debe estar escrita en /a/la/forma/de/unix. No funcionará si utiliza \ o letras de unidades. El ficherodeusuarios debería tener una estructura como ésta: [users] usuario = contraseña... Este ejemplo denegaría cualquier acceso a los usuarios no autentificados (anónimo), y daría acceso de lectura-escritura a los usuarios listados en ficherodeusuarios. Sugerencia Si mantiene múltiples repositorios utilizando la misma base de datos de contraseñas, la utilización de un dominio de autentificación le hará la vida más fácil a los usuarios, dado que TortoiseSVN puede almacenar en caché sus credenciales para que sólo tenga que introducirlas una vez. Se puede encontrar más información en el libro de Subversion, específicamente en las secciones Create a 'users' file and realm [ y Client Credentials Caching [ Autentificación con svn+ssh 26

38 Preparando Un Servidor Otra forma de autentificar a los usuarios con un servidor basado en svnserve es utilizar un shell seguro (SSH) para encapsular las peticiones a través suyo. Con esta aproximación, svnserve no se ejecuta como un servicio, en cambio, el shell seguro inicia svnserve por usted, ejecutándolo como el usuario autentificado SSH. Para habilitar esto, necesita un servicio de shell seguro en su servidor. Detallar la instalación y configuración de un shell seguro se escapa de los límites de esta documentación, sin embargo puede encontrar más información en el Subversion / TortoiseSVN SSH HowTo [ Puede encontrar más información sobre svnserve en el libro de SVN [ 27

39 Capítulo 4. El Repositorio Sin importar el protocolo que use para acceder a sus repositorios, siempre necesita crear al menos un repositorio. Esto puede hacerse o bien con el cliente de línea de comandos de Subversion o con TortoiseSVN. Si todavía no ha creado un repositorio de Subversion, ahora es el momento de hacerlo Creación de Repositorios Puede crear un repositorio bajo el sistema FSFS o bien con el viejo pero estable formato Berkeley Database (BDB). El formato FSFS es más rápido y ahora funciona en carpetas compartidas y en Windows 98 sin problemas. El formato BDB es más estable porque se ha probado durante más tiempo. Lea el Capítulo 5, Repository Data-Stores [ en el libro SVN si desea más información Creando un Repositorio con el Cliente de Línea de Comandos 1. Cree una carpeta vacía con el nombre SVN (por ejemplo, D:\SVN\), que se usará como la raíz de todos sus repositorios. 2. Cree otra carpeta MiNuevoRepositorio dentro de D:\SVN\ 3. Abra un símbolo del sistema (o ventana MS-DOS), vaya a D:\SVN\ y escriba svnadmin create --fs-type bdb MiNuevoRepositorio o svnadmin create --fs-type fsfs MiNuevoRepositorio Ahora ya tiene un nuevo repositorio que se encuentra en D:\SVN\MiNuevoRepositorio Creando el Repositorio con TortoiseSVN 28

40 El Repositorio Figura 4.1. El menú de TortoiseSVN para carpetas no versionadas 1. Abra el Explorador de Windows 2. Cree una nueva carpeta y llámela por ejemplo SVNRepositorio 3. Haga click con el botón derecho sobre la carpeta recién creada y seleccione TortoiseSVN- >Crear Repositorio aquí... Entonces se creará un repositorio dentro de la nueva carpeta. No edite los ficheros!!!. Si obtiene algún error asegúrese de que la carpeta esté vacía y que no esté protegida contra escritura Acceso Local al Repositorio Para acceder a su repositorio local, necesita la ruta a esa carpeta. Recuerde que Subversion espera todas las rutas de repositorios con el formato file:///c:/repositoriosvn/. Tenga en cuenta el uso de las barras de dividir. Para acceder a un repositorio que se encuentre en una unidad de red compartida puede o bien utilizar mapeado de unidades, o bien usar la ruta UNC. El formato de una ruta UNC es file://nombredelservidor/ruta/al/repositorio/. Observe que sólo hay 2 barras invertidas aquí. Antes de SVN 1.2, las rutas UNC tenían que estar dadas en la forma más oscura file:///\nombredelservidor/ruta/al/repositorio. Esta forma aún se puede utilizar, pero no está recomendada. Aviso No cree o acceda a un repositorio Berkeley DB en una unidad de red compartida. No puede existir en un sistema de archivos remoto. Ni siquiera si tiene la unidad de red mapeada a una letra de unidad. Si intenta usar Berkeley DB en una unidad de red compartida, los resultados son imprevisibles - puede ver desde el principio errores misteriosos, o pueden pasar meses antes de que descubra que su base de datos del repositorio está corrupta de una forma inimaginable. 29

41 El Repositorio Sugerencia Si realmente necesita acceder a un repositorio a través de una unidad de red compartida, cree el repositorio con el formato fsfs. Si también tiene que dar acceso via servidor, necesitará un Servidor de Subversion 1.1 o posterior Copia de seguridad del Repositorio Cualquiera que sea el tipo de repositorio que use, es de vital importancia que mantenga copias de seguridad regulares, y que verifique la copia. Si el servidor falla, puede ser capaz de acceder a la versión más reciente de sus ficheros, pero sin el repositorio toda su historia se perderá para siempre. La manera más simple (pero no recomendada) es tan simple como copiar la carpeta del repositorio a un medio de backup. Sin embargo, tiene que estar absolutamente seguro de que no hay ningún proceso accediendo a los datos. En este contexto, acceder significa cualquier tipo de acceso. En un repositorio BDB se escribe incluso cuando la operación sólo parece que necesite leer, como obtener el estado. Si se accede a su repositorio durante la copia (se deja un navegador web abierto, WebSVN, etc.) la copia puede que no valga para nada. El método recomendado es ejecutar svnadmin hotcopy ruta/al/repositorio ruta/al/backup --clean-logs para crear una copia del repositorio de forma segura. Entonces hacer una copia de seguridad de la copia. La opción --clean-logs no es necesaria, pero quita cualquier fichero de log redundante cuando hace una copia de seguridad de un repositorio BDB; lo que puede ahorrar algo de espacio. La herramienta svnadmin se instala automáticamente cuando instala el cliente de línea de comandos de Subversion. Si está instalando las herramientas de línea de comandos en un PC con Windows, la mejor forma de hacerlo es descargar la versión con Windows installer. Está comprimido de forma más eficiente que la versión.zip, por lo que la descarga es menor, y se encarga de establecer las rutas por usted. Puede descargar la última versión del cliente de línea de comandos desde Scripts Gancho Un script gancho es un programa que se activa por algún evento del repositorio, tal como la creación de una nueva revisión o la modificación de una propiedad no versionada. A cada gancho se le proporciona suficiente información para decirle qué evento es, sobre qué destino(s) se está operando, y el nombre de usuario de la persona que lanzó el evento. Dependiendo de la salida del gancho o del estado de vuelta, el programa gancho puede continuar la acción, pararla, o suspenderla de alguna forma. Por favor vea el capítulo sobre Scripts Gancho [ en el Libro de Subversion donde encontrará todos los detalles sobre la forma en la que están implementados los ganchos. Puede encontrar scripts de ganchos en el directorio hooks del repositorio. Estos scripts de ejemplo son válidos para servidores Unix/Linux pero necesitan modificarse si su servidor está basado en Windows. El gancho puede ser un fichero batch o un ejecutable. El siguiente ejemplo muestra un fichero batch que puede ser usado para implementar un ganch pre-revprop-change. rem Solo se permite cambiar mensajes de registro. if "%4" == "svn:log" exit 0 echo No se puede cambiar la property '%4' >&2 exit 1 Tenga en cuenta que cualquier cosa que mande a la salida estándar se descartará. Si desea que aparezca un mensaje en el diálogo Confirmación Rechazada debe enviarlo a la salida de error. En un fichero batch esto se consigue usando >&2 30

42 El Repositorio 4.4. Enlaces de Obtener Si desea hacer disponible su repositorio de Subversion a los demás, puede que desea incluir un vínculo a él desde su sitio web. Una forma de hacer esto más accesible es incluir un enlace de obtener para otro usuarios de TSVN. Cuando se instala TortoiseSVN, se registra un nuevo protocolo tsvn:. Cuando un usuario de TSVN pulsa en un enlace con ese protocolo, aparece el diálogo obtener automáticamente con la URL del repositorio ya rellena. Para incluir dicho enlace en su propia página html, necesita añadir código que será similar a este: <a href="tsvn: Por supuesto será más bonito si añade una imagen adecuada. Puede utilizar el logotipo de TortoiseSVN [ o puede proporcionar su propia imagen. <a href="tsvn: <img src=tortoisecheckout.png></a> 31

43 Capítulo 5. Guía de Uso Diario Este documento describe el uso diario del cliente TortoiseSVN. No es una introducción a los sistemas de control de versiones, y no es una introducción a Subversion (SVN). Es más como un lugar donde puede venir cuando sepa qué quiere hacer, pero no recuerde exactamente cómo hacerlo. Si necesita una introducción al control de versiones con Subversion, le recomendamos que se lea el fantástico libro: Subversion: La Guía Definitiva [ Este documento es también un trabajo en progreso, igual que lo son TortoiseSVN y Subversion. Si encuentra algún error, por favor háganoslo saber en la lista de correo para que podamos actualizar la documentación. Algunas de las capturas de pantalla en la Guía de Uso Diario (GUD) puede que no reflejen el estado actual del software. Le rogamos nos disculpe. Trabajamos en TortoiseSVN en nuestro tiempo libre. Debe tener ya instalado TortoiseSVN. Debe estar familiarizado con los sistemas de control de versiones. Debe conocer las bases de Subversion. Debe haber preparado un servidor y/o tener acceso a un repositorio de Subversion Empezando Menús contextuales 32

44 Figura 5.1. Menú contextual para un directorio bajo el control de versiones Todos los comandos de TortoiseSVN se invocan desde el menú contextual del explorador de Windows. La mayoría se ven directamente, cuando hace click con el botón derecho en un fichero o una carpeta. Los comandos disponibles dependen de si el fichero o la carpeta, o su carpeta padre, está bajo el control de versiones o no Arrastrar y Soltar 33

45 Figura 5.2. Menú de arrastre con el botón derecho para un directorio bajo el control de versiones Otros comandos están disponibles como manejadores de arrastre, cuando arrastra con el botón derecho ficheros o carpetas a un nuevo destino dentro de copias de trabajo, o cuando arrastra con el botón derecho un fichero o una carpeta no versionados a un directorio que está bajo el control de versiones Autentificación Si el repositorio al que intenta acceder está protegido por contraseña, aparecerá un Diálogo de autentificación. Figura 5.3. Diálogo de Autentificación Introduzca su usuario y contraseña. La casilla le permite que TortoiseSVN almacene las credenciales en el directorio por defecto de Subversion: $APPDATA\Subversion\auth. Se crea un fichero por cada servidor al que acceda. Si desea que Subversion y TortoiseSVN se olviden de sus credenciales, tendrá que borrar los ficheros correspondientes. Para más información sobre cómo preparar su servidor para la autentificación y el control de acceso, vea Capítulo 3, Preparando Un Servidor Sugerencia 34

46 Si tiene que autentificarse contra un dominio Windows NT, introduzca su usuario incluyendo el nombre de dominio, así: MIDOMINIO/juanfdez Importando Datos En Un Repositorio Organización del Repositorio Antes de que importe sus datos al repositorio, primero debería pensar cómo quiere organizar sus datos. Si utiliza uno de los patrones recomendados lo tendrá luego mucho más fácil. Hay algunas formas estándar y recomendadas de organizar un repositorio. La mayoría de la gente crea un directorio trunk (tronco) para alojar la "línea principal" del desarrollo, un directorio branches (ramas) para que contenga las copias/ramas, y un directorio tags (etiquetas) para contener las copias/etiquetas. Si un repositorio sólo aloja un proyecto, entonces la gente a menudo crea estos directorios en el primer nivel: /trunk /branches /tags Si un repositorio contiene múltiples proyectos, la gente a menudo indexa por ramas: /trunk/paint /trunk/calc /branches/paint /branches/calc /tags/paint /tags/calc...o por proyecto: /paint/trunk /paint/branches /paint/tags /calc/trunk /calc/branches /calc/tags Indexar por proyecto tiene sentido si los proyectos no están muy relacionados y cada uno se obtiene de forma individual. Para proyectos relacionados donde puede querer obtener todos los proyectos de golpe, o donde los proyectos están unidos y forman un paquete de distribución único, a menudo es mejor indexar por rama. De esta forma sólo tendrá un tronco para obtener, y las relaciones entre sub-proyectos se ven más fácilmente. Si adopta una aproximación de primer nivel /trunk /tags /branches, no es necesario decir que tendrá que copiar el tronco completo para cada rama y etiqueta, y de alguna forma esta estructura ofrece la mayor flexibilidad. Para proyectos que no tienen que ver, puede preferir utilizar repositorios separados. Cuando confirma los cambios, lo que cambia es el número de revisión del repositorio completo, no el número de revisión del proyecto. Si tiene 2 proyectos que no tengan que ver compartiendo un repositorio, eso puede llevar a que ocurran grandes lagunas en los números de revisión. Los proyectos Subversion y TortoiseSVN aparecen en el mismo servidor, pero son dos repositorios totalmente separados que permiten un desarrollo independiente, y no hay confusión sobre los números de compilación. Por supuesto, tiene libertad para ignorar estos patrones comunes. Puede crear cualquier variación, la que mejor le venga a usted o a su equipo. Recuerde que cualquiera que sea la que elija, no es una 35

47 elección inamovible. Puede reorganizar su repositorio en cualquier momento. Dado que las ramas y las etiquetas son directorios normales, TortoiseSVN puede mover o renombrarlas como desee. Cambiar de una disposición a otra es sólo una cuestión de ejecutar una serie de movimientos en el lado del servidor; si no le gusta la forma en la que están organizadas las cosas en el repositorio, sólo tiene que ir moviendo los directorios. Así que si no ha creado ya una estructura básica de carpetas en su repositorio debería hacerlo ahora: 1. cree una nueva carpeta en su disco duro 2. cree la estructura de carpetas de primer nivel dentro de esa carpeta - no ponga ningún fichero allí todavía! 3. importe esta estructura en el repositorio via click con el botón derecho en la carpeta y seleccionando TortoiseSVN->Importar... Esto importará su carpeta temporal a la raíz del repositorio para crear la estructura básica del repositorio. Tenga en cuenta que el nombre de la carpeta que está importando no aparece en el repositorio, sólo sus contenidos. Por ejemplo, cree la siguiente estructura de carpetas: C:\Temp\New\trunk C:\Temp\New\branches C:\Temp\New\tags Importe C:\Temp\New en la raíz del repositorio, que entonces contendrá: /trunk /branches /tags Importar También puede usar el navegador de repositorios para crear nuevas carpetas directamente en el repositorio. Antes de importar su proyecto en un repositorio debería: 1. Quitar todos los ficheros que no se necesitan para construir el proyecto (ficheros temporales, ficheros que se generan por un compilador como los *.obj, binarios compilados,...) 2. Organizar los ficheros en carpetas y subcarpetas. Aunque es posible renombrar/mover los ficheros más tarde, es muy recomendable que tenga la estructura del proyecto antes de importarlo! Ahora seleccione la carpeta superior de la estructura de directorios del proyecto en el explorador de Windows, y haga click con el botón derecho para abrir el menú contextual. Seleccione el comando TortoiseSVN->Importar... y aparecerá un cuadro de diálogo: 36

48 Figura 5.4. El Diálogo Importar En este diálogo tiene que introducir la URL del repositorio en el que quiere importar su proyecto. El mensaje de importación se usa como un mensaje de registro. Dado que normalmente acaba de empezar su proyecto, TortoiseSVN lo rellena con un mensaje importación inicial. Importante Los ficheros o directorios que coinciden con el patrón de exclusión no se importan. Tan pronto como presione Aceptar, TortoiseSVN importa el árbol completo de directorios incluyendo todos los ficheros en el repositorio. Como antes, el nombre de la carpeta que está importando no aparece en el repositorio, sólo los contenidos de los ficheros. El proyecto ahora está almacenado en el repositorio bajo el control de versiones. Por favor tenga en cuenta que la carpeta que ha importado NO está bajo el control de versiones! Para obtener una copia de trabajo bajo el control de versiones necesita Obtener la versión que acaba de importar Ficheros Especiales A veces necesitará tener un fichero bajo control de versiones que contenga datos específicos del usuario. Esto significa que tiene un fichero que cada desarrollador/usuario necesita modificar para que se ajuste a su configuración local. Pero versionar ese fichero es dificil, porque cada usuario haría confirmaciones de sus cambios cada vez en el repositorio. En estos casos le sugerimos que utilice ficheros plantilla. Cree un fichero que contenga todos los datos que sus desarrolladores puedan necesitar, añádalo al control de versiones y haga que sus desarrolladores lo obtengan. Entonces, cada desarrollador tiene que hacer una copia de ese fichero y renombrar esa copia. Después de eso, modificar la copia no vuelve a ser un problema. Por poner un ejemplo, puede mirar el script de compilación de TortoiseSVN. Se invoca a un fichero llamado TortoiseVars.bat que no existe en el repositorio. Sólo existe el fichero Tortoise- Vars.tmpl. TortoiseVars.tmpl es el fichero plantilla del que cada desarrollador tiene que 37

49 hacer una copia y cambiarla de nombre a TortoiseVars.bat. Dentro de ese fichero, hemos añadido comentarios para que los usuarios vean qué lineas tienen que editar y cambiar de acuerdo a sus configuraciones locales para que funcione. Para no molestar a los usuarios, también hemos añadido el fichero TortoiseVars.bat a la lista de ignorados de su carpeta padre, es decir, hemos cambiado la propiedad de Subversion svn:ignored para incluir ese nombre de fichero. De esta forma no se mostrará como no versionado en cada confirmación Proyectos Referenciados A veces es útil construir una copia de trabajo que está hecho de un número de obtenciones diferentes. Por ejemplo, puede querer que diferentes carpetas vengan de orígenes distintos de un repositorio, o quizás de repositorios diferentes. Si desea que todos los usuarios tengan la misma estructura, puede definir propiedades svn:externals. Digamos que obtiene una copia de trabajo de /project1 en D:\dev\project1. Seleccione la carpeta D:\dev\project1, haga click con el botón derecho y seleccione Menú de Windows- >Propiedades del menú contextual. Aparece el Diálogo Propiedades. Vaya a la carpetilla de Subversion. Allí puede establecer las propiedades. Seleccione la propiedad svn:externals del desplegable y escriba en el cuadro de edición la URL del repositorio con el formato nombre url. Por ejemplo, subversion Ahora pulse Establecer y confirme sus cambios. Si un usuario actualiza su copia de trabajo, obtendrá también el proyecto externo. Si necesita más información sobre cómo TortoiseSVN maneja las Propiedades, lea Sección 5.15, Opciones del Proyecto Obteniendo Una Copia de Trabajo Para tener una copia de trabajo necesita obtener una de un repositorio. Seleccione un directorio en el explorador de Windows donde quiera poner su copia de trabajo. Haga click con el botón derecho para mostrar el menú contextual y seleccione el comando TortoiseSVN- >Obtener..., que mostrará el siguiente cuadro de diálogo: 38

50 Figura 5.5. El diálogo Obtener Si introduce un nombre de carpeta que no aún no exista, se creará un directorio con ese nombre. Importante Sólo puede obtener en un directorio vacío. Si quiere obtener una carpeta de código que importó anteriormente, Subversion le dará un mensaje de error. Deberá obtener en un directorio diferente o borrar antes la carpeta con el árbol de código existente. Le recomendamos que obtenga únicamente la parte trunk del árbol de directorios. Si especifica la ruta padre del árbol de directorios en la URL, al final acabará con un disco duro lleno porque obtendrá una copia del árbol completo del repositorio, incluyendo cada rama y etiqueta de su proyecto! Exportando A veces querrá una copia de trabajo sin ninguno de esos directorios.svn, por ejemplo para crear un fichero.zip comprimido de sus fuentes. En vez de hacer una copia y borrar todos esos directorios.svn manualmente, TortoiseSVN ofrece el comando TortoiseSVN->Exportar...Si ejecuta este comando en su copia de trabajo, se le preguntará por el lugar donde guardar la copia de trabajo limpia sin las carpetas.svn. Además, podrá especificar si desea exportar todos los ficheros, o sólo aquellos que están bajo el control de versiones. Otra forma para hacer una exportación es arrastrar con el botón derecho una carpeta con una copia de trabajo y elegir Menú Contextual->Subversion exportar aquí o Context Menu->Subversion exportar todo aquí 5.4. Enviando sus Cambios al Repositorio Enviar los cambios que ha hecho al repositorio se conoce como confirmar los cambios. Pero antes de confirmar tiene que estar seguro de que su copia de trabajo está actualizada. Puede o bien ejecu- 39

51 tar TortoiseSVN->Actualizar directamente, o bien ejecutar TortoiseSVN->Comprobar Modificaciones primero, para ver qué se ha cambiado localmente o en el servidor. Si su copia de trabajo está actualizada y no hay conflictos, ya está preparado para confirmar sus cambios. Seleccione los ficheros y/o carpetas que desee confirmar y seleccione TortoiseSVN- >Confirmar... Figura 5.6. El diálogo de Confirmación El diálogo de confirmación le mostrará todos los ficheros cambiados, incluso los ficheros añadidos, borrados o no versionados. Si no desea que un fichero cambiado se confirme, símplemente desmarque ese fichero. Si desea incluir un fichero no versionado, márquelo para añadirlo a la confirmación. Confirmar ficheros o carpetas? Cuando confirma ficheros, el diálogo de confirmación sólo le enseña los ficheros que ha seleccionado. Cuando confirma una carpeta el diálogo de confirmación seleccionará los ficheros que han cambiado de forma automática. Si se olvidó un fichero nuevo que haya creado, al confirmar la carpeta lo encontrará. Confirmar una carpeta no significa que todos los ficheros se marquen como cambiados; sólo le hace la vida más fácil ha- 40

52 ciendo más trabajo por usted. Muchos ficheros sin versionar en el diálogo de confirmar Si cree que el diálogo de confirmación de TSVN le muestra demasiados ficheros no versionados (por ejemplo, ficheros generados por el compilador o copias de seguridad hechas por su editor), hay varias formas de manejar esta situación. Puede: añadir el fichero (o una extensión con máscara) a la lista de ficheros a excluir en la página de configuración. Esto afectará a todas las copias de trabajo que tenga. añadir el fichero a la lista de svn:ignore utilizando TortoiseSVN->Añadir a la lista de ignorados. Esto únicamente afectará al directorio en el que establezca la propiedad svn:ignore. Puede cambiar la propiedad svn:ignore de un directorio utilizando el Diálogo de Propiedades SVN. Para más información, lea la Sección 5.11, Ignorando Ficheros y Directorios. Haciendo doble click en cualquier fichero modificado en el diálogo de confirmaciones, se lanzará la herramienta externa de diferenciados para mostrarle sus cambios. Tras pulsar Aceptar aparece un diálogo mostrando el progreso de la confirmación. Figura 5.7. El diálogo Progreso mostrando el progreso de una confirmación El diálogo de progreso utiliza una codificación de colores para resaltar las diferentes acciones de confirmación Azul Confirmando una modificación o un ítem nuevo. Rojo oscuro Confirmando un borrado o un reemplazo. Negro Todos los demás ítems. 41

53 Propiedades Especiales de Carpetas There are several special folder properties which can be used to help give more control over the formatting of commit log messages and the language used by the spellchecker module. Read Sección 5.15, Opciones del Proyecto for further information. Integración con Herramientas de Control de Errores Si ha activado el sistema de control de errores, puede poner una o más Incidencias en el cuatro de texto Bug-ID / Issue-Nr:. Se pueden introducir varias incidencias separándolas por comas. Si desea saber más, vea Sección 5.24, Intregración con Sistemas de Control de Errores / Seguimiento de Incidencias Actualice Su Copia de Trabajo con los Cambios de Otros Figura 5.8. Diálogo de progreso mostrando una actualización terminada Periódicamente, debería asegurarse que los cambios que hacen los demás se incorporen en su copia de trabajo local. El proceso de incorporar los cambios desde el servidor a su copia de trabajo local se conoce como actualización. La actualización puede hacerse en ficheros sueltos, en un conjunto de ficheros, o recursivamente en jerarquías completas de directorios. Para actualizar, seleccione los ficheros y/o directorios que desee, haga click con el botón derecho y seleccione TortoiseSVN- >Actualizar en el menú contextual del explorador. Aparecerá una ventana con el progreso de la actualización según se ejecuta. Los cambios que los demás hayan hecho se combinarán con sus ficheros, guardando cualquier cambio que usted haya hecho en los mismos ficheros. El repositorio no se ve afectado por una actualización. El diálogo de progreso utiliza un código de colores para resaltar diferentes acciones de actualización Azul Nuevo ítem añadido a su copia de trabajo Rojo oscuro Ítem redundante borrado de su copia de trabajo Verde Cambios del repositorio que se han combinado satisfactoriamente con sus cambios locales. 42

54 Rojo brillante Cambios del repositorio combinados con sus cambios locales, pero que han dado lugar a conflictos que debe resolver. Negro Todos los demás ítems. Si obtiene algún conflicto durante una actualización (esto puede suceder si los demás han cambiado las mismas líneas del mismo fichero a la vez que usted y esos cambios no concuerdan), el diálogo muestra esos conflictos en rojo. Puede hacer doble click en esas líneas para iniciar la herramienta de combinación externa para resolver los conflictos. TortoiseSVN también le permite actualizar su copia de trabajo a una revisión específica, no sólo a la más actual. Este comando se llama TortoiseSVN->Actualizar a la revisión... y primero abre un diálogo donde puede introducir la revisión en cuestión. Por ejemplo, digamos que su copia de trabajo está en la revisión 100, pero quiere que su copia de trabajo refleje el estado que tenía en la revisión 50 - entonces símplemente actualice a la revisión 50. En ese diálogo, también puede decidir si desea actualizar sólo la carpeta actual (sin sus subcarpetas) y/o si desea ignorar todos los proyectos externos en la actualización (por ejemplo, los proyectos referenciados utilizando svn:externals). Atención Si actualiza un fichero o una carpeta a una revisión en concreto, no debería cambiar esos ficheros. Obtendrá mensajes out of date (desactualizado) cuando intente confirmarlos! Si desea deshacer los cambios de un fichero y empezar de nuevo desde una revisión anterior, debería utilizar alguno de los siguientes comandos en vez de éste. El comando Menú Contextual->Revertir los cambios de esta revisión del diálogo de registro deshará únicamente los cambios hechos en la revisión seleccionada. Los cambios que se hicieron después se mantendrán. Para revertir múltiples revisiones, debería utilizar el comando del menú TortoiseSVN->Combinar..., donde puede especificar el rango de revisiones que desea deshacer. Actualizar a la revisión puede ser útil a veces para ver cómo estaba su proyecto en un momento anterior en su historia. Pero en general, actualizar ficheros individuales a una revisión anterior no es una buena idea, ya que deja su copia de trabajo en un estado inconsistente. Si el fichero que está actualizando ha cambiado de nombre, incluso puede encontrar que ese fichero ha desaparecido de su copia de trabajo porque en esa revisión no había ningún fichero con ese nombre. Si simplemente desea una copia local de una versión antigua de un fichero, es mejor utilizar para ese fichero el comando Menú Contextual->Grabar la revisión como... desde el diálogo de registro. Múltiples Ficheros/Carpetas Si selecciona múltiples ficheros y carpetas en el explorador y luego selecciona Actualizar, todos esos ficheros/carpetas se actualizan uno a uno. TortoiseSVN se asegura de que todos los ficheros/carpetas del mismo repositorio se actualicen exactamente a la misma revisión! Incluso si entre esas actualizaciones ocurrió alguna confirmación. El Fichero Local Ya Existe A veces cuando intente actualizar, la actualización falla con un mensaje para decir que ya existe un fichero local con el mismo nombre. Esto típicamente ocurre cuando Subversion intenta obtener un fichero recién versionado, y se encuentra un fichero no versionado del mismo nombre en su copia de trabajo. Subversion nunca sobreescribirá un fichero no versionado - puede contener algo en lo que está trabajando, y que casualmente tiene el mismo nombre de fichero que otro desarrollador ha utilizado para su re- 43

55 cién confirmado fichero. Si obtiene este mensaje de error, la solución es simplemente renombrar el fichero local sin versionar. Tras completar la actualización, puede comprobar si el fichero renombrado sigue siendo necesario. Si sigue obteniendo mensajes de error, utilize mejor el comando TortoiseSVN- >Comprobar modificacioness para mostrar todos los ficheros con problemas. De esa forma puede lidiar con ellos de un golpe Resolviendo Conflictos De vez en cuando, obtendrá un conflicto cuando actualiza sus ficheros desde el repositorio. Un conflicto ocurre cuando dos o más desarrolladores han hecho cambios en las mismas líneas de un fichero. Dado que Subversion no sabe nada de su proyecto, delega la resolución de los conflictos en los desarrolladores. Cuando se le informa de un conficto, debería abrir el fichero en cuestión, y buscar líneas que empiecen con el texto <<<<<<<. El área conflictiva se marca así: <<<<<<< nombre-del-fichero sus cambios ======= código combinado del repositorio >>>>>>> revisión Además, para cada fichero en conflicto Subversion deja tres ficheros adicionales en su directorio: nombre-del-fichero.ext.mine Este es su fichero tal y como estaba en su copia de trabajo antes de que actualizara su copia de trabajo - esto es, sin marcadores de conflicto. Este fichero tiene sus últimos cambios en él y nada más. nombre-del-fichero.ext.rrev-antigua Este es el fichero que era la revisión BASE antes de que actualizara su copia de trabajo. Esto es, el fichero que obtuvo antes de empezar a hacer sus últimos cambios. nombre-del-fichero.ext.rrev-nueva Este es el fichero que su cliente de Subversion acaba de recibir desde el servidor del que actualizó su copia de trabajo. Este fichero corresponde a la revisión HEAD del repositorio. Puede o bien lanzar una herramienta externa de combinaciones / editor de conflictos con el menú contextual TortoiseSVN->Editar Conflictos o bien utilizar otro editor manualmente para resolver el conflicto. Debe decidir cómo tiene que quedar el código, hacer los cambios necesarios, y grabar el fichero. Después, ejecute el comando TortoiseSVN->Resolver y confirme sus modificaciones al repositorio. Tome nota de que el comando Resolver realmente no resuelve el conflicto. Simplemente elimina los ficheros filename.ext.mine y filename.ext.r*, dejándole confirmar sus cambios Obteniendo Información del Estado Mientras está trabajando en su copia de trabajo a menudo necesitará saber qué ficheros ha cambiado/añadido/borrado o renombrado, o incluso qué ficheros se han cambiado y confirmado por otros Sobreimpresión de Iconos 44

56 Figura 5.9. Explorer mostrando iconos sobreimpresionados Ahora que ha obtenido una copia de trabajo desde un repositorio de Subversion, puede ver sus ficheros en el explorador de Windows con los iconos cambiados. Ésta es una de las razones por las que TortoiseSVN es tan popular. TortoiseSVN añade lo que se llama un icono sobreimpresionado al icono de cada fichero que se sobrepone al icono original del fichero. Dependiendo del estado en Subversion del fichero, el icono sobreimpresionado es diferente. Una copia de trabajo recién obtenida tiene una marca verde como sobreimpresi no. Esto significa que el estado de Subversion es normal. En cuanto empiece a editar un fichero, el estado cambia a modificado y el icono sobreimpresionado cambia entonces a una marca de exclamación roja. De esta forma puede ver fácilmente qué ficheros se han cambiado desde la última vez que actualizó su copia de trabajo, y que necesitan ser confirmados. Si durante una actualización ocurre un conflicto, el icono cambia a un signo de exclamación amarillo. 45

57 Si ha establecido la propiedad svn:needs-lock en un fichero, Subversion pone a ese fichero como de sólo-lectura hasta que obtenga un bloqueo en dicho fichero. Los ficheros de sólo-lectura tienen esta sobreimprseión para indicarle que debe obtener un bloqueo antes de que pueda editar ese fichero. Si ha obtenido un bloqueo sobre un fichero, y el estado de Subversion es normal, este icono sobreimpresionado le recordará que debería liberar el bloqueo si no lo está utilizando para permitir a los demás que puedan confirmar sus cambios al fichero. Este icono le muestra que algunos ficheros o carpetas dentro de la carpeta actual se han marcado para ser borrados del control de versiones, o bien que falta un fichero bajo control de versiones dentro de una carpeta. El signo más le indica que el fichero o carpeta está programado para ser añadido al control de versiones. Al contrario que TortoiseCVS (la integración shell de CVS) no se muestran iconos sobreimpresionados para los ficheros no versionados. Hacemos ésto porque el número de iconos sobreimpresionados está limitado por el sistema y debe economizarse su utilización. De hecho, puede ser que no se utilicen todos estos iconos en su sistema. Esto se debe a que el número de sobreimpresiones permitidas por Windows está limitado a 15. Windows utiliza 4 de ellas, y las 11 restantes pueden ser utilizados por otras aplicaciones. Si también está utilizando TortoiseCVS, entonces no hay suficientes huecos de sobreimpresión disponibles, por lo que TortoiseSVN intenta ser un Buen Ciudadano (TM) y limita su uso de sobreimpresiones para darles una oportunidad al resto de aplicaciones. Normal, Modificado y En conflicto siempre se cargan y están visibles. Borrado se carga si es posible, pero se cambia por Modificado si no hay suficientes huecos. Sólo-lectura se carga si es posible, pero se cambia por Normal si no hay suficientes huecos. Bloqueado se carga sólo si hay menos de 13 sobreimpresiones ya cargadas. Se cambia por Normal si no hay suficientes huecos. Añadido se carga sólo si hay menos de 14 sobreimpresiones ya cargadas. Se cambia por Modificado si no hay suficientes huecos Columnas de TortoiseSVN en el Explorador Se puede ver la misma información que está disponible en los iconos sobreimpresionados (y mucha más) como columnas adicionales en la Vista Detalles del Explorer. Simplemente haga click con el botón derecho en las cabeceras de una columna y seleccione Más... del menú contextual que aparece. Aparecerá un diálogo donde puede especificar las columnas y su orden, que se mostrarán en la "Vista Detalles". Baje hasta que vea las entradas que empiezan por SVN. Marque aquellas que desee mostrar y cierre el diálogo pulsando Aceptar. Las columnas aparecerán a la derecha de las que ya se mostraban. Puede reorganizarlas utilizando arrastrar y soltar, o cambiarlas de tamaño, para que se ajusten a sus necesidades. 46

58 Sugerencia Si desea que la organización actual se muestre en todas sus copias de trabajo, puede que desee convertirla en su vista por defecto Estado del Repositorio Figura Comprobar Modificaciones A menudo es muy útil saber qué ficheros ha cambiado y también qué ficheros han cambiado y confirmado los demás. Ahí es donde viene bien el comando TortoiseSVN->Comprobar Modificaciones... Este diálogo le muestra todos los ficheros que ha cambiado de alguna forma en su copia de trabajo, y además todos los ficheros no versionados que pueda tener. Si pulsa en el botón Comprobar Repositorio también puede comprobar los cambios en el repositorio. De esa forma puede comprobar antes de hacer una actualización si es posible que haya un conflicto. También puede actualizar los ficheros seleccionados desde el repositorio sin actualizar la carpeta completa. Desde el menú contextual del diálogo puede diferenciar los cambios. TortoiseSVN automáticamente descarga la versión más reciente del repositorio para mostrar las diferencias. También puede revertir cambios en ficheros individuales. Si ha borrado un fichero de forma accidental, se mostrará como Falta y puede utilizar Revertir para recuperarlo. Sugerencia Si quiere una vista llana de su copia de trabajo, por ejemplo mostrando todos los ficheros y carpetas en todos los niveles de su jerarquía de carpetas, entonces el diálogo Comprobar Modificaciones es la forma más sencilla de conseguirlo. Símplemente seleccione la casilla Mostrar archivos no modificados para ver todos los ficheros de su copia de trabajo Viendo Diferencias 47

59 A menudo querrá mirar dentro de sus ficheros, para echar un vistazo a lo que ha cambiado. Puede llevar esto a cabo seleccionando un fichero que haya cambiado, y seleccionando Diferenciar del menú contextual de TortoiseSVN's. Esto inicia el visor externo de diferencias, que comparará el fichero actual con sus contenidos tal y como estaba después de la última actualización o de su obtención. Sugerencia Puede mostrar diferencias incluso cuando no está dentro de una copia de trabajo, o cuando tiene múltiples versiones del fichero alrededor: Seleecione los dos ficheros que desea comparar en el explorador (por ejemplo, utilizando la tecla Ctrl y el ratón) y seleccione Diferenciar del menú contextual de TortoiseSVN. El fichero que haya pulsado en último lugar (el que tiene el foco, es decir, el rectángulo con puntos) será tomado como más nuevo Diálogo de Registro de Revisiones Para cada cambio que haga y confirme, debería proporcionar un mensaje de registro de ese cambio. Así podrá averiguar después qué cambios hizo y por qué, y tendrá un registro detallado para su proceso de desarrollo. El Diálogo de Registro de Revisiones recopila todos esos mensajes de registro y se los enseña. La pantalla se divide en tres paneles. El panel superior le muestra una lista de revisiones donde se confirmaron cambios a los ficheros/ carpetas. Este sumario incluye la fecha y la hora, la persona que confirmó la revisión y el inicio del mensaje de registro. Las líneas azules indican que algo se ha copiado a esta línea de desarrollo (quizás desde una rama). El panel medio le muestra el mensaje de registro completo para la revisión seleccionada. El panel inferior le muestra una lista de todos los ficheros y carpetas que se cambiaron como parte de la revisión seleccionada. Pero hace mucho más que eso - le proporciona comandos del menú contextual que puede utilizar para obtener aún más información de la historia del proyecto Invocando el Diálogo de Registro de Revisiones 48

60 Figura El Diálogo de Registro de Revisiones Hay varios lugares desde los que puede mostrar el diálogo de Registro: Desde el submenú contextual de TortoiseSVN Desde la página de propiedades Desde el diálogo de Progreso después de que termine una actualización. En ese caso el diálogo de Registro sólo le mostrará aquellas revisiones que cambiaron desde su última actualización Obteniendo Información Adicional 49

61 Figura El Panel Superior del Diálogo de Registro de Revisiones con el Menú Contextual El panel superior del diálogo de Registro tiene un menú contextual que le permite Comparar las revisiones seleccionadas con su copia de trabajo. La Herramienta de Diferencias por defecto es TortoiseMerge que se proporciona con TortoiseSVN. Si el diálogo de registro es de una carpeta, esto mostrará una lista de sus ficheros cambiados, y le permitirá revisar los cambios hechos a cada fichero individualmente. Ver los cambios hechos en la revisión seleccionada como un fichero de diff unificado. La operación diff unificada es más rápida que invocar el visor externo de diferencias normal porque TortoiseSVN no tiene que obtener los ficheros completos sino sólo las diferencias. Grabar la revisión seleccionada a un fichero para que pueda tener una versión más antigua de ese fichero. Esta opción sólo está disponible cuando accede al registro de un fichero, y almacena únicamente una versión de ese fichero en concreto. Abrir el navegador de repositorios para examinar la carpeta seleccionada. Esta opción sólo está disponible cuando accede al registro de un directorio. Crear una rama/etiqueta desde una revisión seleccionada. Esto es útil por ejemlpo si se le olvidó crear una etiqueta y ya ha confirmado algunos cambios que no se supone que tengan que ir en esa versión. Actualizar su copia de trabajo a la revisión seleccionada. Útil si quiere hacer que su copia de trabajo refleje un momento en el pasado. Es mejor actualizar un directorio completo en su copia de trabajo, no sólo un fichero, ya que si no su copia de trabajo será inconsistente y no podrá confirmar ningún cambio. Revertir los cambios que se hicieron en la revisión seleccionada. Estos cambios se revierten en su copia de trabajo, por lo que esta operación no afecta al repositorio en absoluto! Tenga en cuenta que esto deshará únicamente los cambios hechos en esa revisión. No reemplaza su copia de trabajo con el fichero entero en la revisión anterior. Es muy útil para deshacer un cambio anterior cuando se han hecho además otros cambios que no tienen que ver. Editar el mensaje de registro o el autor adjunto a una confirmación anterior. Lea Sección 5.8.4, Cambiando el Mensaje de Registro y el Autor para averiguar cómo funciona esto. Buscar en los mensajes de registro el texto que desee. Esto busca en los mensajes de registro que ha introducido, y también en los sumarios de acción creados por Subversion (mostrados en el pa- 50

62 nel inferior). La búsqueda no distingue mayúsculas y minúsculas. Figura Menú Contextual del Panel Superior con 2 Ficheros Seleccionados Si selecciona dos revisiones a la vez (utilizando el modificador habitual Ctrl), el menú contextual cambia y le ofrece menos opciones: Comparar las dos revisiones seleccionadas utilizando una herramienta de diferencias visual. La herramienta de diferencias por defecto es TortoiseMerge, que se proporciona con TortoiseSVN. Si selecciona esta opción para una carpeta, aparecerá otro diálogo mostrándole la lista de ficheros cambiados y podrá compararles de uno en uno. Ver las diferencias entre las dos revisiones seleccionadas como un fichero diff unificado. Esto funciona para ficheros y carpetas. Editar el mensaje de registro o el autor como se describe más arriba. Buscar mensajes de registro como se describe más arriba. Figura El Panel Inferior del Diálogo de Registro con el Menú Contextual El panel inferior del diálogo Registro también tiene un menú contextual que le permite Mostrar las diferencias hechas en la revisión seleccionada sobre el fichero seleccionado. Este menú contextual sólo está disponible para los ficheros que se muestran como Modificados. Abrir el fichero seleccionado, bien con el visor por defecto para ese tipo de fichero, o bien con el 51

63 programa que elija. Revertir los cambios hechos al fichero seleccionado en esa revisión. Ver las propiedades de Subversion del ítem seleccionado. Mostrar el registro de revisiones para ese fichero seleccionado. Grabar la revisión seleccionada a un fichero, para que pueda tener una versión antigua de ese fichero Obteniendo más mensajes de registro El diálogo Registro no siempre le muestra todos los cambios que se hayan hecho alguna vez por unos cuantos motivos: En un repositorio grande, puede haber cientos o incluso miles de cambios y obtenerlos todos puede llevar mucho tiempo. Normalmente estará interesado sólo en los cambios más recientes. Por defecto, el número de mensajes de registro obtenidos se limita a 100, pero puede cambiar este valor en TortoiseSVN->Propiedades (Sección 5.25, Configuración de TortoiseSVN ), Cuando se marca la casilla Parar en copia/renombrado, Mostrar Registro se parará en el punto en el que el fichero o carpeta seleccionado se copió de algún otro lugar en el repositorio. Esto puede ser útil para buscar ramas (o etiquetas) porque se para en la raíz de esa rama, y le da una indicación rápida de los cambios hechos únicamente en esa rama. Esta opción está normalmente sin marcar por defecto, excepto cuando el diálogo Mostrar Registro se invoca desde el diálogo Combinar. Tenga en cuenta que Subversion actualmente implementa el renombrado como un par de copia/ borrado, por lo que renombrar un fichero o carpeta también provocará que el diálogo de registro se pare si se marca esta opción. Si desea ver más mensajes de registro, pulse Siguientes 100 para obtener los siguientes 100 mensajes de registro. Puede repetir ésto tantas veces como sea necesario. Si desea ver todos los mensajes de registro desde la revisión 1, pulse Obtener Todos Cambiando el Mensaje de Registro y el Autor A veces querrá cambiar un mensaje de registro que introdujo en su día, quizás porque hay un error ortográfico en él o porque quiere mejorar el mensaje o cambiarlo por otras razones. O quizás quiera cambiar el autor de una confirmación porque se le olvidó preparar la autentificación, o... Subversion le deja cambiar tanto el mensaje de registro como el autor de las revisiones en cualquier momento. Pero como estos cambios no se pueden deshacer (estos cambios no se versionan), esta característica está deshabilitada por defecto. Para hacer que ésto funcione, debe preparar un gancho pre-revprop-change. Por favor consulte el capítulo sobre Scripts Gancho [ en el Libro de Subversion para tener más detalles sobre cómo hacerlo. Lea Sección 4.3, Scripts Gancho para encontrar más notas sobre cómo implementar ganchos en una máquina Windows. Una vez que haya preparado su servidor con los ganchos necesarios, puede cambiar tanto el autor como el mensaje de registro de cualquier revisión, utilizando el menú contextual del panel superior del diálogo Registro. Aviso Dado que las propiedades de revisión de Subversion no se versionan, al hacer modifi- 52

64 caciones a estas propiedades (por ejemplo, la propiedad del mensaje svn:log) se sobreescribirá el valor anterior de esa propiedad para siempre Filtrando los Mensajes de Registro Si desea restringir los mensajes de registro para mostrar sólo en los que está interesado en vez de tener que navegar en una lista de cientos, puede utilizar los controles de filtro en la parte superior del Diálogo de Registro. Los controles de fecha de inicio y de fin le permite restringir la salida a un rango de fechas conocido. La caja de texto de búsqueda le permite mostrar sólo los mensajes que contengan una frase en particular. Tenga en cuenta que estos filtros actúan sobre los mensajes ya obtenidos. Ellos no controlan la descarga de mensajes desde el repositorio Información Estadística El botón Estadísticas lanza un cuadro de diálogo que muestra algunas informaciones interesantes sobre las revisiones que se muestran en el diálogo Registro. Le muestra cuántos autores han estado trabajando, cuántas confirmaciones han hecho, el progreso por semanas, y mucho más. Ahora puede ver de un vistazo quién ha trabajado duro y quién se ha tocado la barriga ;-) Tenga en cuenta que las estadísticas cubren el mismo período que el diálogo Registro. Si sólo se está mostrando una revisión, las estadísticas no le dirán mucho Viendo Diferencias Uno de los requisitos más comunes en el desarrollo de proyectos es ver qué ha cambiado. Puede querer ver las diferencias entre dos revisiones del mismo fichero, o las diferencias entre dos ficheros separados. TortoiseSVN provee algunas utilidades incorporadas para esto, y también le permite elegir su propio programa de diferencias Diferencias de Ficheros Cambios locales Si desea ver qué cambios ha hecho usted en su copia de trabajo, simplemente utilice el menú contextual del explorador y seleccione TortoiseSVN->Diferenciar. Diferenciar desde una revisión anterior Si desea ver las diferencias entre una revisión en concreto y su copia de trabajo, utilice el diálogo Registro de Revisiones, seleccione la revision de intereés, y luego seleccione Compar con la copia de trabajo desde el menú contextual. Diferenciar entre dos revisiones antiguas Si desea ver las diferencias entre dos revisiones que ya se confirmaron, utilice el diálogo Registro de Revisiones y seleccione las dos revisiones que desea comparar (utilizando el modificador habitual Ctrl). Luego seleccione Comparar revisiones desde el menú contextual. Todos los cambios hechos en una confirmación Si desea ver los cambios hechos a todos los ficheros en una revisión en particular de una vez, puede utilizar la salida diff unificado (formato de parche GNU). Esto le muestra sólo las diferencias con unas pocas líneas de contexto. Es más dificil de leer que una comparación visual de ficheros, pero le mostrará todos los cambios juntos. Desde el diálogo Registro de Revisiones, seleccione la revisión de interes, y luego seleccione Mostrar Diferencias como Diff Unificado desde el menú contextual. Diferencias entre ficheros Si desea ver las diferencias entre dos ficheros diferentes, puede hacerlo directamente en el explorador seleccionando ambos ficheros (utilizando el modificador habitual Ctrl). Luego desde el menú contextual del explorador seleccione TortoiseSVN->Diferenciar. 53

65 Diferencias entre Carpetas Las herramientas proporcionadas con TortoiseSVN no le permiten ver las diferencias entre jerarquías de directorios, Pero si tiene una herramienta externa que soporte esta característica, puede utilizarla. En la siguiente sección le contaremos algunas de las herramientas que hemos utilizado Herramientas Externas de Diferencias/Combinación Si las herramientas que le proporcionamos no son lo que necesita, pruebe alguno de los muchos programas de código abierto o comerciales disponibles. Cada uno tiene sus propios favoritos, y esta lista por supuesto no está completa, pero aquí hay algunas que debería considerar: WinMerge WinMerge [ es un muy buen visor de diferencias y herramienta de combinación de código abierto. Perforce WinDiff Perforce es un RCS comercial, pero puede descargar la herramienta de diferencias/combinaciones gratuitamente. Descarge el instalador completo desde Perforce [ KDiff3 KDiff3 es una herramienta de diferencias gratuita que también maneja directorios. Puede descargarla desde aquí [ ExamDiff ExamDiff Standard es gratuito. Puede manejar ficheros pero no directorios. ExamDiff Pro es shareware y añade un número de ventajas que incluyen diferenciación de directorios y capacidades de edición. En ambos casos, la versión 3.2 y las siguientes pueden manejar también unicode. Puede descargarlas desde PrestoSoft [ Beyond Compare Similar a ExamDiff Pro, esta es una herramienta shareware de diferencias que puede manejar diferenciación de directorios y unicode. Descárgela desde Scooter Software [ Araxis Merge Araxis Merge es una útil herramienta comercial para ver diferencias y combinar tanto ficheros como carpetas. Hace comparaciones a tres bandas en las combinaciones y tiene vínculos de sincronización para utilizar si ha cambiado el orden las funciones. Descárgelo desde Araxis [ SciTE Este editor de texto incluye sintaxis coloreada para ficheros diff unificados, haciéndolos mucho más fáciles de leer. Descárgelo desde Scintilla [ Notepad2 Notepad2 está diseñado como un reemplazo del programa Bloc de Notas estándar de Windows, y se basa en el control de edición de código abierto Scintilla. Además de ser bueno para ver diffs unificados, es mucho mejor que el bloc de notas de Windows para la mayoría de trabajo. Descárgelo gratuitamente aquí [ TkDiff Una herramienta gratuita de diferencias/combinaciones que utiliza TCL/TK. Descárgela aquí [ CVSConflictEditor Esta herramienta de combinación de código abierto tiene fallos, pero tiene potencial. Descárgela aquí [ Lea Sección , Opciones de Programas Externos para más información sobre cómo preparar TortoiseSVN para utilizar estas herramientas. 54

66 5.10. Añadiendo Nuevos Ficheros y Directorios Figura Menú contextual del explorador para ficheros no versionados Si ha creado nuevos ficheros y/o directorios durante su proceso de desarrollo, necesitará añadirlos también al control de código. Seleccione el o los ficheros y/o directorios y utilice TortoiseSVN- >Añadir. Después de que añada los ficheros o directorios al control de código, el fichero aparece con una sobreimpresión de icono añadido que significa que primero debe confirmar su copia de trabajo para que esos ficheros y directorios estén disponibles para otros desarrolladores. Añadir un fichero/directorio no afecta al repositorio! Añadir muchos También puede usar el comando Añadir en carpetas que ya estén versionadas. En ese caso, el diálogo de añadir le mostrará todos los ficheros sin versionar dentro de la carpeta versionada. Esto ayuda si tiene muchos ficheros nuevos y necesita añadirlos todos de golpe. Para añadir ficheros desde fuera de su copia de trabajo puede usar el manejador de arrastrar-y-soltar: 1. seleccione los ficheros que desea añadir 2. arrástrelos con el botón derecho a su nuevo destino dentro de la copia de trabajo 3. suelte el botón derecho del ratón 4. seleccione Menú Contextual->Añadir ficheros a Subversion aquí. En ese momento los ficheros se copiarán a la copia de trabajo y se añadirán al control de versiones Ignorando Ficheros y Directorios 55

67 Figura Menú contextual del explorador para ficheros no versionados En la mayoría de los proyectos tendrá ficheros y carpetas que no deberán estar sujetos al control de versiones. Éstas pueden incluir ficheros creados por el compilador, *.obj, *.lst, quizás incluyan una carpeta de salida donde se almacenan los ejecutables. Cuando confirma los cambios, TSVN le muestra los ficheros no versionados, que rellenan a la lista de ficheros del diálogo de confirmar. Por supuesto que puede desactivarlos para que no se muestren, pero entonces quizás se olvide de añadir un nuevo fichero fuente. La mejor forma de evitar estos problemase s añadir los ficheros derivados a la lista de ignorados del proyecto. De esta forma nunca se mostrarán en el diálogo de confirmar, pero se seguirán señalando los genuinos ficheros de código no versionados. Si hace click con el botón derecho en un único fichero no versionado, y selecciona el comando TortoiseSVN->Ignorar del menú contextual, aparecerá un submenú que le permitirá seleccionar sólo ese fichero, o todos los ficheros con la misma extensión. Si selecciona múltiples ficheros, no hay submenú y sólo puede añadir esos ficheros o carpetas específicos. Si desea eliminar uno o más ítems de la lista de ignorados, haga click con el botón derecho en dichos ítems y seleccione TortoiseSVN->Eliminar de la Lista de Ignorados También puede acceder a la propiedad svn:ignore de la carpeta directamente. Para más información, lea la Sección 5.15, Opciones del Proyecto. La Lista Global de Ignorados Otra forma de ignorar ficheros es añadirlos a la lista global de ignorados. La mayor diferencia aquí es que la lista global de ignorados es una propiedad del cliente. Se aplica a todos los proyectos de Subversion, pero sólo en el PC cliente. En general es mejor utilizar la propiedad svn:ignore donde sea posible, porque puede aplicarse a áreas del proyecto específicas, y funciona para todos los que obtengan el proyecto. Para más información, lea la Sección 5.25, Configuración de TortoiseSVN Borrando, Renombrando y Moviendo Al contrario que CVS, Subversion le permite renombrar y mover ficheros y carpetas. Por tanto hay entradas de menú para borrar y renombrar en el submenú TortoiseSVN. 56

68 Figura Menú contextual del explorador para ficheros versionados Si borra un fichero/directorio utilizando TSVN, el fichero se elimina de su copia de trabajo y se marca para ser borrado. La carpeta padre del fichero muestra un icono sobreimpresionado "borrado". Siempre puede recuperar de nuevo el fichero borrado, si llama a TortoiseSVN->revertir en la carpeta padre. Si desea mover ficheros dentro de una copia de trabajo, utilice el manejador arrastrar-y-soltar de nuevo: 1. seleccione los ficheros o directorios que desea mover 2. arrástrelos con el botón derecho a su nuevo destino dentro de la copia de trabajo 3. suelte el botón derecho del ratón 4. en el menú contextual seleccione Menú Contextual->Mover ficheros en Subversion aquí Si se borra un fichero utilizando el explorador, pero no se borra del control de versiones (es decir, si borra un fichero como siempre), el diálogo de confirmar muestra estos ficheros y le permite eliminarlos del control de versiones también antes de la confirmación. Así que no es realmente importante si se le olvida borrar el fichero con TortoiseSVN, como se supone que debería hacer. Confirmar la carpeta padre 57

69 Dado que las operaciones mover y renombrar se realizan como un borrado seguido de una adición, debe confirmar la carpeta padre de los ficheros movidos/renombrados. Sólo de esa forma se enseñará la parte de borrado de la operación mover/renombrar. Si no confirma la parte de borrado de la operación mover/renombrar, se quedará allí en el repositorio y una actualización de sus compañeros de trabajo no borrará el fichero antiguo. Recuperando un fichero o una carpeta borrados Si ha borrado un fichero o una carpeta y ya ha confirmado esa operación de borrado en el repositorio, entonces un comando TortoiseSVN->Revertir normal no los podrá recuperar. Pero el fichero o la carpeta borrados no están perdidos para siempre. Si sabe la revisión en la que se borraron el fichero o la carpeta (si no lo sabe, utilice el diálogo de registro para averiguarlo), abra el navegador de repositorios y cambie a esa revisión. Luego seleccione el fichero o la carpeta que ha borrado, haga click con el botón derecho y seleccione Menú Contextual->Copiar a..., y como destino de esa operación de copia seleccione la ruta de su copia de trabajo Deshacer Cambios Si desea deshacer todos los cambios que ha hecho en un fichero desde la última actualización, necesita seleccionar el fichero, hacer click con el botón derecho para sacar el menú contextual, y luego seleccionar el comando TortoiseSVN->Revertir Aparecerá un diálogo que le muestra los ficheros que ha cambiado y que puede revertir. Seleccione los que desee revertir y pulse Aceptar. 58

70 Figura Diálogo de revertir Deshaciendo Cambios que han sido Confirmados Revertir sólo deshará sus cambios locales. No deshace ningún cambio que ya hayan sido confirmados. Si desea deshacer todos los cambios que se confirmaron en una revisión en particular, lea Sección 5.8, Diálogo de Registro de Revisiones para obtener más información Limpieza Si un comando de subversion no puede completarse de forma correcta, quizás por problemas en el servidor, su copia de trabajo puede quedarse en un estado inconsistente. En ese caso deberá utilizar TortoiseSVN->Limpieza en la carpeta. Es una buena idea hacerlo en la rama superior de la copia de trabajo. La limpieza tiene otro efecto secundario muy útil. Si ha cambiado la fecha de un fichero pero no su contenido, Subversion no puede determinar si el fichero ha cambiado realmente excepto haciendo una comparación byte-a-byte con la copia prístina. Si tiene muchos ficheros en este estado, comprobar su estado en Subversion será muy lento, lo que hará que muchos diálogos ralenticen su respuesta. Ejecutando una Limpieza en su copia de trabajo reparará esas fechas rotas y restaurará las comprobaciones de estado a la máxima velocidad. 59

71 Utilizar Fechas de Confirmación Algunas versiones anteriores de Subversion estaban afectadas con un error que causaba errores en la fecha cuando obtenía con la opción Utilizar fechas de confirmación activada. Utilice el comando Limpieza para acelerar esas copias de trabajo Opciones del Proyecto 60

72 Figura Página de propiedades de Subversion A veces desea obtener información más detallada sobre un fichero o directorio que los iconos sobreimpresionados. Puede obtener toda la información que Subversion proporciona en el diálogo de propiedades del explorador. Tan sólo seleccione el fichero o directorio y seleccione Menú de Windows->Propiedades en el menú contextual (atención: ésta es la entrada del menú normal de propiedades que el explorador proporciona, no 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. En la página de Subversion puede ver toda la información relevante sobre el fichero o directorio seleccionado. Además puede leer y establecer las propiedades de Subversion. 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 Sección 5.2.4, Proyectos Referenciados. Para más información sobre las propiedades en Subversion vea el Manual de Subversion [ Para establecer una propiedad, seleccione el nombre de la propiedad en cuestión del desplegable, y luego escriba un valor en el campo siguiente. Las propiedades que toman múltiples valores, como una lista de ignorados, pueden introducirse en múltiples líneas. Pulse en Establecer para añadir esa propiedad a la lista. Si desea aplicar una propiedad a muchos ítems a la vez, seleccione los ficheros/carpetas en el explorador, y luego seleccione Menú de Windows->propiedades 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, para que aparezca en el área de edición. Luego proceda como si fuera una propiedad nueva. Si desea eliminar una propiedad existente, primero seleccione dicha propiedad de la lista de propiedades existentes, para que aparezca en el área de edición. Luego pulse en Eliminar. 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 an- 61

73 cho 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. 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 deben 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. Puede encontrar los valores para su idioma en esta página: MSDN: Language Identifiers [ Si la propiedad no se establece, el valor por defecto es true. Algunas propiedades tsvn: necesitan un valor true/false (verdad/mentira). TSVN también entiende yes (sí) como un sinónimo de true y no como un sinónimo de false. Establecer las propiedades tsvn: en carpetas Estas propiedades tsvn: 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 hacia las profundidades 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 tsvn: sólo puede utilizar la casilla Recursivo para establecer la propiedad en todas las subcarpetas de la jerarquía, sin establecera en todos los ficheros. 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. 62

74 Establecer propiedades automáticamente Puede configurar Subversion para que establezca propiedades automáticamente en ficheros y carpetas cuando se añaden al repositorio. Para más información, lea Sección 5.25, Configuración de TortoiseSVN. TortoiseSVN puede integrarse con algunas herramientas de control de errores. Esto utiliza propiedades, que comienzan con bugtraq:. Para más información, lea Sección 5.24, Intregración con Sistemas de Control de Errores / Seguimiento de Incidencias Haciendo Ramas / Etiquetas Una de las características de los sistemas de control de versiones es la posibilidad de aislar cambios en una línea separada de desarrollo. Esto se conoce como una rama. Las ramas se utilizan a menudo para probar nuevas características sin molestar la línea principal del desarrollo con errores de compilación y errores. Tan pronto como la nueva característica es lo suficiente estable, la rama de desarrollo se combina de nuevo en la rama principal (trunk, troncal). Otra característica de los sistemas de control de versiones es la posibilidad de marcar revisiones particulares (por ejemplo, una versión lanzada a producción), para que pueda en cualquier momento recrear un cierto entorno o compilación. Este proceso se conoce como etiquetar. Subversion no tiene comandos especiales para hacer ramas o etiquetas, pero en cambio utiliza lo que se denomina copias baratas. Las copias baratas son similares a los vínculos duros de Unix, que significa que en vez de hacer una copia completa en el repositorio, se crea un vínculo interno, apuntando a una revisión y árbol específicos. Como resultado, las ramas y las etiquetas son muy rápidas de crear, y casi no conllevan espacio extra en el repositorio Crando una Rama o Etiqueta Si ha importado su proyecto con la estructura de directorios recomendados, crear una rama o una etiqueta es muy simple: 63

75 Figura El Diálogo Rama/Etiqueta Seleccione la carpeta en su copia de trabajo de la que desea hacer una rama o una etiqueta, y luego seleccione el comando TortoiseSVN->Rama/Etiqueta... La URL de destino por defecto para la nueva rama será la URL de origen en la que se basa su copia de trabajo. Necesitará editar esa URL con la nueva ruta para su rama/etiqueta. Así que en vez de querrá ahora usar algo como Si no puede recordar la convención de nombres que usó la última vez, pulse el botón a la derecha para abrir el navegador de repositorios, para que pueda ver la estructura actual del repositorio. Ahora debe elegir el origen de la copia. Aquí tiene tres opciones: 64

76 revisión HEAD en el repositorio La nueva rama se copia directamente en el repositorio desde la revisión HEAD. No se necesita transferir datos desde su copia de trabajo, y la rama se crea muy rápidamente. revisión específica en el repositorio La nueva rama se copia directamente en el repositorio, pero puede elegir una versión anterior. Esto es útil si se olvidó de crear una etiqueta cuando lanzó una versión de su proyecto la semana pasada. Si no puede acordarse del número de revisión, pulse el botón a la derecha para mostrar el registro de revisiones, y seleccione el número de revisión desde allí. De nuevo no se transfiere datos desde su copia de trabajo, y la rama se crea muy rápidamente. Copia de trabajo La nueva rama es una copia idéntica de su copia de trabajo local. Si ha cambiado algunos ficheros a una revisión anterior en su copia de trabajo, o si ha hecho cambios locales, esto es exactamente lo que irá a la copia. Naturalmente, esta clase de etiquetado complejo conlleva transferir datos desde su copia de trabajo al repositorio si no existe ya allí. Pulse Aceptar para confirmar la nueva copia al repositorio. No se olvide de proporcionar un mensaje de registro. Tenga en cuenta que la copia se crea dentro del repositorio. Tenga en cuetna que crear una Etiqueta o una Rama no afecta a su copia de trabajo. Incluso si copia su copia de trabajo, estos cambios se confirmarán en la rama nueva, no en el tronco, así que su copia de trabajo todavía se marcará como modificada Obtener o Cambiar......esa (realmente no) es la cuestión. Mientras que obtener obtiene todo de la rama elegida a su directorio de trabajo, TortoiseSVN->Cambiar... sólo transfiere los datos cambiados a su copia de trabajo. Bueno para la carga de la red, bueno para su paciencia. :-) Para poder trabajar con su copia recientemente generada tiene varias formas de manejarlo. Puede: TortoiseSVN->Obtener para obtener una copia nueva en una carpeta vacía. Puede obtener la copia de trabajo en cualquier parte de su disco duro, y puede crear tantas copias de trabajo de su repositorio como desee. Cambiar su copia de trabajo actual a la copia recién creada en el repositorio. De nuevo seleccione la carpeta superior de su proyecto y utilice TortoiseSVN->Cambiar... del menú contextual. En el siguiente diálogo, introduzca la URL de la rama que acaba de crear. Deje la opción Revisión HEAD activada y pulse Aceptar. Su copia de trabajo se cambia a la nueva rama/etiqueta. Cambiar trabaja igual que Actualizar, en el sentido de que nunca pierde sus cambios locales. Cualquier cambio que haya hecho a su copia de trabajo que todavía no se hayan confirmado se combinarán cuando haga el Cambio. Si no desea que esto ocurra, entonces debe o bien confirmar los cambios antes de cambiar, o revertir su copia de trabajo a una revisión ya-confirmada (típicamente HEAD). 65

77 Figura El Diálogo Cambiar Aunque Subversion por sí mismo no hace ninguna distinción entre etiquetas y ramas, la forma en la que normalmente se usan difiere un poco. Las etiquetas se usan típicamente para crear una copia estática de un proyecto en una etapa concreta. Como tales normalmente no se utilizan para el desarrollo - eso es para lo que se utilizan las ramas, y por esa razón recomendamos la estructura del repositorio /trunk /branches /tags en primer lugar. Trabajando en una revisión etiquetada no es una buena idea, pero dado que sus ficheros locales no están protegidos, no hay nada que le impida hacer esto por error. Sin embargo, si intenta confirmar a una ruta en el repositorio que contenga /tags/ (en inglés), TortoiseSVN le avisará. Puede ser que necesite hacer más cambios a una versión que ya había etiquetado. La forma correcta de manejar esta situación es crear primero una nueva rama desde la etiqueta. Haga sus cambios en esta rama, y luego cree una nueva etiqueta para esta rama, por ejemplo Version_ Si modifica una copia de trabajo creada desde una rama y confirma, entonces los cambios irán a la nueva rama y no en el tronco. Sólo se guardan las modificaciones. El resto continúa siendo una copia barata Combinando Mientras que las ramas se utilizan para mantener líneas de desarrollo separadas, en alguna etapa tendrá que combinar los cambios hechos en una rama de vuelta en el tronco, o viceversa. Es importante entender cómo funcionan las ramas y la mezcla en Subversion antes de empezar a utilizarlos, porque puede convertirse en algo bastante complejo. Le recomendamos encarecidamente que lea el capítulo Branching and Merging [ en el Libro de Subversion [ que le proporciona una descripción completa, y muchos ejemplos de cómo se utiliza. Un punto importante a recordar es que Combinar está muy relacionado con Diferenciar. El proceso de combinación trabaja generando una lista de diferencias entre dos puntos del repositorio, y aplicando esas diferencias a su copia de trabajo. Por ejemplo, si desea combinar los cambios hechos en la revisión N, entonces tendrá que comparar la revisión N con la revisión (N-1). Los novatos a menudo preguntan Por qué tengo que restar 1 a la revisión de inicio. Recuerde el proceso de Diferen- 66

78 ciación que hay por debajo y se hará más claro. Para hacerlo más sencillo, cuando utilice Mostrar Registro para seleccionar un rango de revisiones a combinar, TortoiseSVN hará el ajuste automáticamente por usted. En general es una buena idea realizar combinaciones en una copia de trabajo sin modificar. Si ha hecho otros cambios en su copia de trabajo, confírmelos primero. Si la combinación no funciona como espera, puede querer revertir los cambios, y el comando Revertir descartará todos los cambios, incluidos cualquiera que haya hecho antes de la combinación. Hay dos casos de uso comunes para combinar que se manejan de formas ligeramente diferentes, como se describen a continuación Combinando un Rango de Revisiones Este método cubre el caso en el que ha hecho una o más revisiones a una rama (o al tronco) y desea portar estos cambios a una rama diferente. Figura El Diálogo Combinar Para combinar revisiones necesita ir a una copia de trabajo de la rama en la que desee recibir los cambios, a menudo el tronco. Seleccione TortoiseSVN->Combinar... desde el menú contextual. 1. En el campo Desde: introduzca la URL completa de la carpeta de la rama o la etiqueta que contiene los cambios que desea portar a su copia de trabajo. También puede pulsar... para navegar el repositorio y encontrar la rama deseada. Si ha combinado desde esta rama antes, entonces utilice la lista desplegable que le muestra una historia de las URLs utilizadas anterior- 67

79 mente. 2. Dado que está portando un rango de revisiones desde la misma rama en su copia de trabajo, asegúrese de que la casilla Usar URL "Desde" está marcada. 3. En el campo Desde la Revisión introduzca el número de revisión inicial. Esta es la revisión anterior a los cambios que desea combinar. Recuerde que Subversion creará un fichero de diferencias para realizar la combinación, por lo que el punto de inicio debe estar justo antes del primer cambio en el que está interesado. Por ejemplo, sus mensajes de registro pueden ser parecidos a estos: Rev Comentarios 39. Trabajando en MiRama 38. Trabajando en trunk 37. Trabajando en MiRama 36. Crear rama MiRama 35. Trabajando en trunk 34. Trabajando entrunk... Si ahora desea combinar todos los cambios de MiRama en el tronco, deberá elegir 36 como valor de Desde la Revisión, no 37 como podría pensar. Si selecciona la revisión 37 como punto de inicio, entonces el motor de diferencias compara el punto final con la revisión 37, y se perderá los cambios que hizo en la propia revisión 37. Si esto suena complicado, no se preocupe, hay una forma más fácil en TortoiseSVN... La manera más fácil de seleccionar el rango de revisiones que necesita es pulsar en Mostrar Registro, dado que esto mostrará los cambios recientes con sus comentarios de registro. Si desea combinar los cambios de una única revisión, seleccione esa revisión. Si desea combinar los cambios de varias revisiones, entonces seleccione ese rango (utilizando el modificador habitual Mayúsculast). Pulse Aceptar y los dos números de revisión Desde la Revisión y Hasta la Revisión se rellenarán por usted en el diálogo Combinar. Si ya ha combinado algunos cambios desde esta rama, esperemos que haya apuntado la última revisión combinada en el mensaje de registro cuando confirmó ese cambio. En ese caso, puede utilizar Mostrar Registro en la Copia de Trabajo para buscar ese mensaje de registro. Utilize el punto final de la última combinación como punto de inicio de esta combinación. Por ejemlpo, si la última vez combinó las revisiones de la 37 a la 39, entonces el punto de inicio de esta combinación sería la revisión Si no ha utilizado Mostrar Registro para seleccionar el rango de revisiones, necesitará establecer el campo Hasta la Revisión manualmente. Introduzca el número de la última revisión del rango que desea combinar. A menudo ésta será la revisión HEAD, aunque no necesita serlo - puede querer combinar únicamente una única revisión. Si hay otras personas que puedan estar confirmando cambios, entonces tenga cuidado al utilizar la revisión HEAD. Puede que no se refiera a la revisión que usted cree si alguien más ha hecho una confirmación después de su última actualización. 5. Pulse Aceptar para completar la combinación. La combinación ya está completa. Es una buena idea observar la combinación y ver si está como se esperaba. Las combinaciones son usualmente bastante complicadas. A menudo aparecen conflictos si la rama se ha desviado mucho del tronco. Cuando haya comprobado los cambios y vaya a confirmar esta revisión, su mensaje de registro debería incluir siempre los números de revisión que han sido portados en la combinación. Si desea aplicar otra combinación más tarde, necesitará saber lo que ya ha combinado, porque no querrá portar un cambio más de una vez. Desafortunadamente, Subversion no almacena la información de combinaciones. Para más información sobre esto, consulte Tracking Merges Manually [ en el Libro de Subversion [ 68

80 El manejo de las ramas es importante. Si desea mantener esta rama actualizada respecto al tronco, debería asegurarse de combinar a menudo para que la rama y el tronco no se alejen mucho. Por supuesto, sigue debiendo evitar combinaciones repetidas de cambios, como se explicó anteriormente. Importante Subversion no puede combinar un fichero con una carpeta, y viceversa - sólo carpetas con carpetas y ficheros con ficheros. Si pulsa en un fichero y abre el diálogo de combinar, entonces deberá darle una ruta a un fichero en ese diálogo. Si selecciona una carpeta y saca el diálogo, debe especificar una URL de una carpeta para la combinación Combinando Dos Árboles Diferentes Este método cubre el caso cuando ha realizado una rama de funcionalidad como se discute en el libro de Subversion. Todos los cambios del tronco han sido portados a la rama de la funcionalidad, semana a semana, y ahora que la funcionalidad está completa desea combinarla de nuevo en el tronco. Dado que ha mantenido la rama de la funcionalidad sincronizada con el tronco, las últimas versiones de la rama y del tronco serán absolutamente iguales excepto por sus cambios en la rama. En este caso especial, combinaría comparando la rama con el tronco. Para combinar la rama de la característica en el tronco necesita ir a una copia de trabajo del tronco. Seleccione TortoiseSVN->Combinar.. desde el menú contextual. 1. En el campo Desde: introduzca la URL completa de la carpeta del tronco (trunk). Esto puede sonar erróneo, pero recuerde que el tronco es el punto de inicio al que desea añadir los cambios de la rama. También puede pulsar... para navegar el repositorio. 2. Dado que está comparando dos árboles diferentes, asegúrese de que la casilla Usar la URL "Desde:" no está marcada. 3. En el campo Hasta: introduzca la URL completa de la carpeta con la rama de la característica. 4. En los dos campos Desde la Revisión y Hasta la Revisión, introduzca el último número de revisión en el que se sincronizaron los dos árboles. Si está seguro de que nadie más está haciendo confirmaciones puede utilizar HEAD en ambos casos. Si hay alguna posibilidad de que alguien haya hecho una confirmación desde esa sincronización, utilice el número de revisión específico para evitar perder cambios más recientes. También puede utilizar Mostrar Registro para seleccionar la revisión. Tenga en cuenta que en este caso no está seleccionando un rango de revisiones, por lo que la revisión que seleccione es la que aparecerá realmente en el campo Revisión. 5. Pulse Aceptar para completar la combinación. En este caso no necesitará la rama de la característica de nuevo porque la característica ya está combinada en el tronco. La rama de la característica es redundante y puede ser borrada del repositorio si se necesita Previsualizando Resultados de Combinación Si no está seguro sobre la operación de combinación, puede querer previsualizar qué ocurrirá antes de que le permita hacer cambios en su copia de trabajo. Hay dos botones adicionales para ayudarle. Diff Unificado crea el fichero de diferencias (recuerde que la combinación se basa en la diferenciación) y le muestra qué lineas se cambiarán en los ficheros de su copia de trabajo. Este fichero de diferencias unificado (fichero de parche) no siempre es fácil de leer fuera de contexto, pero para cambios a pequeña escala a menudo es útil. Simular realiza la operación de combinación, pero no modifica la copia de trabajo en absoluto. Le 69

81 muestra una lista de ficheros que se combinarán con una combinación real, y especifica esas áreas donde ocurrirán conflictos Bloqueando Subversion generalmente trabaja mejor sin bloqueos, utilizando los métodos Copiar-Modificar-Combinar que se describieron anteriormente en el Sección 2.2.3, La Solución Copiar-Modificar-Combinar. Sin embargo, hay algunas pocas situaciones en las que puede querer implementar alguna forma de política de bloqueo. Está utilizando ficheros incombinables, por ejemplo, ficheros de imagen. Si dos personas cambian el mismo fichero, la combinación no es posible, así que alguno de ellos perderá sus cambios. Su compañía ha utilizado en el pasado un SCV bloqueante, y la dirección ha decidido que bloquear es lo mejor. Primero necesita asegurarse de que su servidor de Subversion está actualizo al menos a la versión 1.2. Las versiones anteriores no tienen ningún soporte de bloqueos. Si está usando el acceso file:///, sólo necesita actualizar sus clientes, por supuesto Cómo Trabaja el Bloqueo en Subversion Por defecto, nada se bloquea y todo el mundo que tiene acceso de confirmación puede confirmar cambios a cualquier fichero en cualquier momento. Los demás actualizarán sus copias de trabajo periódicamente y los cambios en el repositorio se combinarán con los cambios locales. Si Obtiene un Bloqueo en un fichero, entonces sólo usted puede confirmar ese fichero. Las confirmaciones de los demás se bloquearán hasta que quite el bloqueo. Un fichero bloqueado no puede ser modificado de ninguna forma en el repositorio, por lo que no puede ser siquiera borrado o renombrado, excepto por el dueño del bloqueo. Sin embargo, los demás usuarios no necesariamente saben que usted ha obtenido un bloqueo. A menos que ellos comprueben el estado de bloqueo regularmente, la primera vez que sabrán sobre él es cuando sus confirmaciones fallen, lo que muchas veces no es muy útil. Para hacer más fácil el manejo de bloqueos, hay una nueva propiedad de Subversion svn:needs-lock. Cuando se establece esta propiedad (a cualquier valor) en un fichero, siempre que el fichero se obtiene o actualiza, la copia local se deja como sólo-lectura a menos que la copia de trabajo tenga un bloqueo para ese fichero. Esto actúa como una advertencia de que no debería modificar el fichero a menos que obtenga un bloqueo. Los ficheros que están versionados y marcados como sólo-lectura se marcan con un icono de sobreimpresión especial en TortoiseSVN para indicar que necesita obtener un bloqueo antes de editar. Los bloqueos se graban con el lugar de la copia local y también con el propietario. Si tiene varias copias de trabajo (en casa, en el trabajo) entonces sólo puede obtener un bloqueo en una de esas copias de trabajo. Si uno de sus compañeros de trabajo obtiene un bloqueo y luego se va de vacaciones sin quitarlo, qué hace? Subversion proporciona un método para forcar bloqueos. Quitar un bloqueo que tiene otra persona se define como Romper el bloqueo, y obtener forzosamente un bloqueo que tiene otro se define como Robar el bloqueo. Naturlamente estas no son cosas que hacer a la ligera si desea continuar siendo amigo de sus compañeros de trabajo. Los bloqueos se guardan en el repositorio, y se crea un token de bloqueo en su copia local de trabajo. Si hay una discrepancia, por ejemplo si alguien ha roto el bloqueo, el token local se convierte en inválido. El repositorio siempre es la referencia definitiva Obteniendo un Bloqueo Seleccione el fichero o ficheros en su copia de trabajo para los que desee obtener un bloqueo, y seleccione el comando TortoiseSVN->Obtener Bloqueo... 70

82 Figura El Diálogo Bloquear Aparece un diálogo, que le permite introducir un comentario, para que los demás vean por qué ha bloqueado el fichero. El comentario es opcional, y de momento sólo se utiliza con repositorios basados en Svnserve. Si (y sólo si) necesita robar el bloqueo de alguien, marque la casilla Robar bloqueo, y luego pulse Aceptar Quitando un Bloqueo Para asegurarse de que no se olvida de quitar un bloqueo que no necesita más, los ficheros bloqueados se muestran en el diálogo de confirmar y se seleccionan por defecto. Si continúa con la confirmación, los bloqueos que tenga sobre los ficheros seleccionados se quitan, incluso si los ficheros no se han modificado. Si no desea quitar el bloqueo en algunos ficheros, puede desmarcarlos (si no están modificados). Si desea mantener los bloqueos en un fichero que ha modificado, tiene que habilitar la casilla Mantener bloqueos antes de confirmar sus cambios. Para quitar un bloqueo manualmente, seleccione el fichero o ficheros de su copia de trabajo para los que desee quitar el bloqueo, y luego seleccione el comando TortoiseSVN->Quitar Bloqueo. No hay nada más que introducir por lo que TortoiseSVN contactará con el repositorio y quita los bloqueos. 71

83 Comprobando el Estado de los Bloqueos Figura El Diálogo Comprobar Modificaciones Para ver qué bloqueos tiene usted y los de los demás, puede utilizar el comando TortoiseSVN- >Comprobar Modificaciones... Los tokens de bloqueos que se tienen localmente se muestran inmediatamente. Para comprobar los bloqueos que tienen los demás (y para ver si alguno de sus bloqueos se han roto o han sido robados) necesita pulsar Comprobar Repositorio. Desde el menú contextual aquí, también puede obtener y quitar bloqueos, además de romper y robar bloqueos que tienen otros. Evite Romper y Robar Bloqueos Si ha roto o robado el bloqueo de otro sin decírselo, puede causar una pérdida potencial de trabajo. Si está trabajando con tipos de ficheros incombinables y roba el bloqueo de otro, una vez que usted quite el bloqueo ellos son libres de confirmar sus cambios y sobreescribir los suyos. Subversion no pierde datos, pero ha perdido la protección para trabajo en equipo que el bloqueo le proporcionaba Haciendo Ficheros No-Bloqueados como Sólo-Lectura Como se menciona arriba, la manera más efectiva de utilizar los bloqueos es establecer la propiedad svn:needs-lock en los ficheros. Consulte Sección 5.15, Opciones del Proyecto para obtener instrucciones sobre cómo establecer propiedades. Los ficheros con esta propiedad establecida siempre se obtendrá y actualizará con la marca de sólo-lectura a menos que su copia de trabajo tenga un bloqueo. Como recordatorio, TortoiseSVN utiliza un icono de sobreimpresión especial para indicarlo. Si opera una política donde todos los ficheros han de ser bloqueados, puede que encuentre más fácil utilizar la característica de Subversion auto-props para establecer la propiedad automáticamente cada vez que añada nuevos ficheros. Para más información, lea Sección 5.25, Configuración de TortoiseSVN. 72

84 Los Scripts Ganchos de Bloqueo Cuando crea un nuevo respositorio con Subversion 1.2 o superior, se crean cuatro plantillas en el directorio hooks del repositorio. Éstos se llaman antes y después de obtener un bloqueo, y antes y después de quitar un bloqueo. Es una buena idea instalar un script gancho post-lock y post-unlock en el servidor que envíe un indicando el fichero que se ha bloqueado. Poniendo este script en su sitio, todos sus usuarios serán informados si alguien bloquea/quita el bloqueo de un fichero. Puede encontrar un script gancho de ejemplo hooks/post-lock.tmpl en su carpeta del repositorio. También puede utilizar ganchos para no permitir romper o robar bloqueos, o quizás para limitarlo a un administrador designado para ello. O quizás desea enviar un al propietario cuando uno de sus bloqueos se haya roto o robado. Para más información, lea la Sección 4.3, Scripts Gancho Creando y Aplicando Parches En proyectos de código abierto (como éste), todos tienen acceso de lectura al repositorio, y cualquiera puede hacer una contribución al proyecto. Así que cómo se controlan esas contribuciones? Si cualquiera pudiera confirmar cambios, el proyecto estaría permanentemente inestable y probablemente roto de forma permanente. En esta situación, el cambio se maneja mediante un fichero de parche enviado al equipo de desarrollo, que tienen acceso de escritura. Ellos pueden revisar el parche antes, y luego o bien confirmarlo en el repositorio o devolvérselo al autor. Los ficheros de parche son símplemente ficheros de diff unificados que muestran las diferencias entre su copia de trabajo y la revisión base Creando un Fichero Parche Primero necesita hacer y probar sus cambios. Luego en vez de utilizar el comando TortoiseSVN- >Confirmar... sobre la carpeta padre, seleccione TortoiseSVN->Crear Parche... Esto producirá un único fichero que contiene un sumario de todos los cambios que ha realizado desde la última actualización desde el repositorio. Si crea un fichero de parche, hace algunos cambios más y crea de nuevo otro fichero de parche, el segundo fichero de parche incluye ambos conjuntos de cambios. Simplemente grabe el fichero utilizando un nombre de fichero de su elección. Los ficheros de parche pueden tener la extensión que desee, pero por convención se suele utilizar las extensiones.patch o.diff extension. Ya está preparado para enviar su fichero de parches Aplicando un Fichero Parche Los ficheros de parches se aplican en su copia de trabajo. Esto debe hacerse desde el mismo nivel de carpetas que se utilizó para crear el parche. Si no está seguro de cuál es, mire la primera línea del fichero de parche. Por ejemplo, si el primer fichero en el que se trabajó era doc/source/english/chapter1.xml y la primera línea en el fichero de parche es Index: english/chapter1.xml entonces necesita aplicar el parche en la carpeta english. Sin embargo, suponiendo que esté en la copia de trabajo correcta, si ha seleccionado un nivel de carpeta erróneo, TSVN se dará cuenta y le sugerirá el nivel correcto. Para aplicar un fichero de parche en su copia de trabajo, necesita al menos acceso de lectura al repositorio. La razón para esto es que el programa de combinación debe referenciar los cambios sobre la revisión contra la que se hicieron por el desarrollador remoto. Desde el menú contextual de esa carpeta, pulse en TortoiseSVN->Aplicar Parche... Esto mostrará un diálogo de abrir fichero que le permitirá seleccionar el fichero de parche a aplicar. Por defecto sólo aparecen los ficheros.patch o.diff, pero puede elegir "Todos los ficheros". Alternativamente, si el fichero de parche tiene una extensión.patch o.diff, puede hacer click con el botón derecho en él directamente y seleccioanr TortoiseSVN->Aplicar Parche... En este caso se le preguntará la ruta de la copia de trabajo. 73

85 Estos dos métodos le ofrecen formas diferentes de hacer lo mismo. Con el primer método selecciona la copia de trabajo y busca el fichero de parche. Con el segundo selecciona el fichero de parche y busca la copia de trabajo. Una vez que haya seleccionado el fichero de parche y la ruta de la copia de trabajo, se ejecuta TortoiseMerge para combinar los cambios del fichero de parche contra su copia de trabajo. Una pequeña ventana le muestra los ficheros que han sido cambiados. Haga doble click por turnos en cada uno de ellos, compruebe los cambios y grabe los ficheros combinados. El parche del desarrollador remoto ya ha sido aplicado a su copia de trabajo, por lo que necesita confirmar para que todos los demás accedan a los cambios desde el repositorio Quién Cambió Qué Línea? Figura El Diálogo Anotar / Autoría A veces necesita saber no sólo qué lineas han cambiado, sino también exactamente quién cambió líneas específicas en un fichero. Entonces es cuando el comando TortoiseSVN->Autoría..., a veces conocido como comando de anotar tiene su utilidad. Este comando muestra, por cada línea en un fichero, su autor y la revisión en la que se cambió la línea. Si no está interesado en cambios de revisiones anteriores puede establecer la revisión desde la cual debe empezar la autoría. Ponga este valor a 1 si desea ver la autoría de cada revisión. Por defecto, el fichero de autoría se ve utilizando TortoiseBlame, que remarca las diferentes revisiones para hacerlas más fáciles de leer. Si desea imprimir o editar el fichero de autoría, seleccione Utilizar visor de texto para ver autorías Una vez que pulse Aceptar, TortoiseSVN empieza a recoger la información para crear el fichero de autoría. Tenga ésto en cuenta: esto puede llevar varios minutos para completarse, dependiendo en cuánto haya cambiado el fichero y por supuesto de su conexión de red con el repositorio. Una vez que el proceso de autoría ha terminado, el resultado se escribe en un fichero temporal y puede ver los resultados. 74

86 Figura TortoiseBlame TortoiseBlame, que se incluye con TortoiseSVN, hace más fáciles de leer los ficheros de autoría. Cuando pasa el ratón por encima de una línea en la columna de información de autoría, todas las líneas con la misma revisión se señalan con un fondo más oscuro. Las líneas de otras revisiones que fueron cambiadas por el mismo autor se señalan con un fondo claro. Los colores pueden no funcionar de forma muy eficiente si su pantalla está en el modo de 256 colores. Si hace click en una línea, todas las líneas con la misma revisión se señalan, y las líneas de otras revisiones del mismo autor se señalan en un color más claro. Este señalado se mantiene, permitiéndole mover el ratón sin perder los señalados. Pulse en esa revisión de nuevo para desactivar el señalado. Los comentarios de la revisión se muestran en una caja de ayuda cuando mueve el cursor encima de la columna de información de autoría El Navegador de Repositorios A veces necesitará trabajar directamente en el repositorio, sin tener una copia de trabajo. Esa es la razón por la que existe el Navegador de Repositorios. El Navegador de Repositorios es para el repositorio lo que los iconos sobreimpresionados son para su copia de trabajo. 75

87 Figura El Navegador de Repositorios Con el Navegador de Repositorios puede ejecutar comandos como copiar, mover, renombrar... directamente en el repositorio. En la parte superior de la Ventana del Navegador de Repositorios puede introducir la URL del repositorio y la revisión a la que desea navegar. Navegar a una versión más antigua es útil si por ejemplo desea recuperar un fichero borrado anteriormente. Use el comando Menú Contextual->Copiar a... para hacerlo e introduzca la ruta completa de la copia de trabajo donde desea recuperar su fichero borrado Gráficos de Revisión 76

88 Figura Un Gráfico de Revisiones A veces necesita saber desde qué revisión del tronco se tomaron las ramas y las etiquetas, y la forma ideal de ver este tipo de información es en un gráfico o una estructura de árbol. Ahí es cuando necesita utilizar TortoiseSVN->Gráfico de Revisiones... Este comando analiza la historia de las revisiones e intenta crear un árbol mostrando los puntos en los que se tomaron las copias, y cuando se borraron las ramas/etiquetas. Tenga ésto en cuenta: obte- 77

89 ner todos los datos necesarios para crear el árbol de revisiones puede llevar varios minutos, dependiendo de cuánto haya cambiado el proyecto y por supuesto de su conexión de red al repositorio. El gráfico de revisiones muestra varios tipos de nodos: Fichero/carpeta añadida Los ítems que se han añadido, o se crearon copiándolos de otros ficheros/carpetas se muestran utilizando un rectángulo redondeado. Fichero/carpeta eliminada Los ítems borrados, por ejemplo una rama que no se necesita más, se muestran utilizando un octágono (rectángulo con las esquinas cortadas). Fichero/carpeta normal Todos los demás ítems se muestran utilizando un rectángulo normal. Tenga en cuenta que el gráfico sólo muestra los puntos en los que se añadieron o borraron los ítems. Mostrar cada revisión de un proyecto generaría un gráfico enorme e imposible para los casos no triviales. Por este motivo, las estructuras de proyectos sencillas que no tienen operaciones añadir o borrar producen un gráfico de revisiones vacío. La fecha de la revisión, el autor y los comentarios se muestran en una caja de ayuda cuando se mueve el ratón encima de una caja de revisión. Si selecciona dos revisiones, puede utilizar el menú contextual para mostrar las diferencias entre esas revisiones. Puede elegir mostrar las diferencias en los puntos de creación de las ramas, pero normalmente querrá mostrar las diferencias en los puntos finales de las ramas, esto es, en la revisión HEAD. Puede ver las diferencias como un fichero de Diff Unificado, que le muestra todas las diferencias en un fichero único con contexto mínimo. Si opta por Menú Contextual->Comparar Revisiones se le presentará una lista de ficheros cambiados. Haga doble click en un nombre de fichero para obtener ambas revisiones y compararlas utilizando una herramienta de diferencias visual. Atención Dado que Subversion no puede proporcionar toda la información necesaria, se necesita una cierta cantidad de interpretación, que a veces puede dar resultados estraños. En cualquier caso, la salida para el tronco generalmente da resultados útiles Relocalizando una copia de trabajo Figura El Diálogo Relocalizar 78

90 Si su repositorio ha cambiado por algún motivo de lugar (IP/URL); o quizás está estancado y no puede confirmar y no quiere obtener de nuevo su copia de trabajo de la nueva localización y mover todos sus datos cambiados a la copia de trabajo nueva: el comando TortoiseSVN->Relocalizar es lo que está buscando. Básicamente hace muy poco: escanea todos los ficheros "entries" en las carpetas.svn y cambia la URL de las entradas al nuevo valor. Aviso No utilice el comando Relocalizar para cambiar su copia de trabajo a una rama diferente! Si lo hace, entonces puede obtener muchos mensajes de error inexplicables cuando actualice, confirme,... El comando relocalizar únicamente debe ser utilizado si la URL del servidor ha cambiado! Intregración con Sistemas de Control de Errores / Seguimiento de Incidencias Es muy común en el Desarrollo de Software que los cambios se refieran a un ID de error o incidencia específico. A los usuarios de los sistemas de control de errores (seguimiento de incidencias) les gustaría asociar los cambios que hacen en Subversion con un ID específico en su programa de seguimiento de incidencias. La mayoría de programas de seguimiento de incidencias proporcionan un script gancho pre-commit que parsea el mensaje de log para encontrar el ID del error con el que se asocia la confirmación. Esto es de alguna forma propenso a errores, porque se basa en el que usuario escriba el mensaje de registro de forma correcta para que el script gancho pre-commit pueda parsearlo correctamente. TortoiseSVN puede ayudar al usuario de dos formas: 1. Cuando el usuario introduce un mensaje de registro, puede añadirse una línea bien definida incluyendo el número de incidencia asociada a la confirmación. Esto reduce el riesgo de que el usuario introduzca el número de incidencia que las herramientas de control de errores no puedan parsear correctamente. O TortoiseSVN puede remarcar la parte del mensaje de registro introducido que el programa de seguimiento de incidencias reconoce. De esta forma el usuario sabrá que el mensaje de registro introducido puede parsearse correctamente. 2. Cuando el usuario navega por los mensajes de registro, TortoiseSVN crea un enlace desde cada ID de error en el mensaje de registro, que lanza el navegador con la incidencia mencionada. Puede integrar una Herramienta de Control de Errores de su elección con TortoiseSVN. Para hacerlo, necesita definir algunas propiedades, que empiezan por bugtraq:. Deben establecerse en Carpetas: (Sección 5.15, Opciones del Proyecto ) Hay dos formas de integrar TortoiseSVN con programas de seguimiento de incidencias. Una se basa en cadenas simples, y la otra se basa en expresiones regulares. Las propiedades que se utilizan en ambos casos son: bugtraq:url Establezca esta propiedad a la URL de su herramienta de control de errores. Debe ser una URI codificada de forma correcta y debe contener %BUGID%. %BUGID% se reemplazará por el Número de incidencia que haya introducido. Esto permite que TortoiseSVN muestre un vínculo en el diálogo de registro, para que cuando esté mirando un registro de revisión pueda ir directamente a su herramienta de control de errores. No necesita proporcionar esta propiedad, pero entonces TortoiseSVN sólo mostrará el número de incidencia y no el vínculo a ella. Por ejemplo, el proyecto TortoiseSVN utiliza 79

91 bugtraq:warnifnoissue Establezca esta propiedad a true si desea que TortoiseSVN le avise cuando deje en blanco el campo de texto del número de incidencia. Los valores válidos son true/false. Si no se define, se supone false. En la aproximación simple, TortoiseSVN muestra al usuario un campo separado donde se puede introducir un ID de error. Luego se añade (al final o al inicio) una línea separada al mensaje de registro que el usuario ha introducido. bugtraq:message Esta propiedad activa el Sistema de Control de Errores. Si se establece esta propiedad, TortoiseSVN le preguntará por el número de incidencia cuando confirme sus cambios. Se utiliza para añadir una línea al final del mensaje de registro. Debe contener %BUGID%, que se reemplaza por el número de la incidencia al confirmar. Esto asegura que su registro de confirmación contiene una referencia al número de incidencia que siempre está en un formato consistente y que puede ser parseado por su herramienta de Control de Errores para asociar el número de incidencia con una confirmación particular. Por ejemplo, el proyecto TortoiseSVN utiliza Issue : %BUGID%, pero ésto depende de su herramienta. bugtraq:append Esta propiedad define si el ID del error se añade (true) al final del mensaje de registro o se inserta (false) al inicio del mensaje de registro. Los valores válidos son true/false. Si no se define, se asume true, para que los proyectos ya existentes no se rompan. bugtraq:label Éste es el texto que se muestra por TortoiseSVN en el diálogo de confirmar para etiquetar el cuadro de texto en el que introduce el número de incidencia. Si no se establece, aparecerá Bug- ID / Issue-Nr:. Tenga en cuenta, sin embargo, que la ventana no se cambiará de tamaño para acomodar esta etiqueta, por lo que debería mantener el tamaño de la etiqueta en menos de caracteres. bugtraq:number Si se establece a true sólo se permitirán números en el campo de número de incidencia. La coma es una excepción, para que pueda introducir varios números separados por comas. Los valores válidos son true/false. Si no se define, se asumirá true. En la aproximación con expresiones regulares, TortoiseSVN no muestra un campo de entrada separado sino que marca la parte del mensaje de registro que el usuario ha introducido que se reconocerá por el programa de seguimiento de incidencias. Esto se hace mientras el usuario escribe el mensaje de registro. Esto también significa que el ID de error puede ponerse en cualquier parte dentro de un mensaje de registro! Sugerencia Incluso si no tiene un programa de seguimiento de incidencias con un gancho precommit parseando sus mensajes de log, puede seguir utilizando ésto para convertir las incidencias mencionadas en su mensajes de registro en vínculos! bugtraq:logregex Esta propiedad contiene una o dos expresiones regulares, separadas por un salto de línea. Si sólo se especifica una expresión, entonces los IDs de los errores deben agruparse en grupos en la cadena de la expresión regular. Por ejemplo, [Ii]ncidencia(?:s)? #?(\d+) Si se especifican dos expresiones, la primera expresión se utiliza para encontrar una cadena que relaciona el ID del error pero que puede contener más que el ID del error (por ejemplo, "Incidencia #123" o "resuelve la incidencia 123"). La segunda expresión se utiliza entonces para extraer el ID del error real de la cadena extraída con la primera expresión. Por ejemplo: 80

92 Si desea encontrar todos los patrones "incidencia #XXX" e "incidencia #890, #789" dentro de un mensaje de registro, podría utilizar las siguientes cadenas de expresiones regulares: [Ii]ncidencia #?(\d+)(,??#'(\d+))+ y la segunda expresión como (\d+) Si no está familiarizado con las expresiones regulares, visite la documentación y el tutorial online en Algunas propiedades tsvn: necesitan un valor true/false (verdad/mentira). TSVN también entiende yes (sí) como un sinónimo de true y no como un sinónimo de false. Establezca las Propiedades en Carpetas Estas propiedades 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 hacia las profundidades 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 tsvn: sólo puede utilizar la casilla Recursivo para establecer la propiedad en todas las subcarpetas de la jerarquía, sin establecera en todos los ficheros. La integración del seguimiento de incidencias no se restringe a TortoiseSVN; puede utilizarse con cualquier cliente de Subversion. Para más información, lea toda la Especificación de Integración con los Seguimientos de Incidencias [ Configuración de TortoiseSVN Para averiguar para qué sirven cada una de las diferentes opciones, deje el puntero del ratón un segundo sobre el cuadro de texto/casilla... y aparecerá un útil mensaje de ayuda Configuración General 81

93 Figura El Diálogo de Opciones, Página General Este diálogo le permite especificar su idioma preferido, y las configuraciones específicas de Subversion. Idioma Selecciona el idioma del interfaz de usuario. Qué otra cosa esperabas? Comprobar automáticamente si hay nuevas versiones todas las semanas Si se marca, TortoiseSVN contactará con su sitio de descargas una vez a la semana para ver si hay disponible una nueva versión del programa. Excluir/Ignorar patrón: Los patrones de exclusión se utilizan para evitar que aparezcan ficheros no versionados por ejemplo en el diálogo de confirmación. Los ficheros que concuerden con los patrones también se ignoran en la importación. Excluya ficheros o directorios escribiendo sus nombres o extensiones. Los patrones se separan por espacios, por ejemplo, bin obj *.bak *.~?? *.jar *.[Tt]mp. Las dos primeras entradas se refieren a directorios, las otras cuatro a ficheros. Tenga en cuenta que los patrones de exclusión que especifique aquí también afectarán a otros clientes de Subversion que se ejecuten en su PC, incluyendo el cliente de línea de comandos. Atención Si utiliza el fichero de configuración de Subversion para establecer un patrón global-ignores, prevalecerá sobre las preferencias que haga aquí. El fichero de configuración de Subversion se accede utilizando Editar como se describe a continuación. Este patrón de exclusión afectará a todos sus proyectos. No se versiona, por lo que no afectará a 82

94 otros usuarios. En el lado opuesto, puede utilizar también la propiedad versionada svn:ignore para excluir ficheros o directorios del control de versiones. Para más información, lea la Sección 5.11, Ignorando Ficheros y Directorios. Establecer las fechas de los ficheros a la "hora de la última confirmación" Esta opción le indica a TortoiseSVN que establezca las fechas de los ficheros al momento de la última confirmación cuando se hace una obtención o una actualización. Si no, TortoiseSVN utiliza la fecha actual. Si está desarrollando software generalmente es mejor que utilice la fecha actual porque los sistemas de compilación generalmente se fija en las fechas de los ficheros para determinar qué ficheros necesitan compilarse. Si utiliza "hora de la última confirmación" y revierte a una revisión anterior del fichero, su proyecto puede que no se compile como lo espera. Editar el fichero de configuración de Subversion directamente. Algunas opciones no pueden ser modificadas directamente por TortoiseSVN, y en cambio necesitan establecerse aquí. Para más información sobre el fichero config de Subversion, vea el Manual de Subversion [ La sección sobre Automatic Property Setting [ es especialmente interesante, y eso es lo que se configura aquí. Limpiar la Caché de Autentificación Cuando se autentifica con un servidor de subversion, se queda una copia de su usuario y contraseña en la caché local para que no tenga que seguir introduciéndolos. Para limpiar todo lo que contiene esa caché, utilice este botón Configuración del Aspecto visual Figura El Diálogo Opciones, Página de Aspecto Visual Esta página le permite especificar qué entradas del menú contextual de TortoiseSVN se mostrarán el el menú contextual principal, y cuales aparecerán en el submenú TortoiseSVN. Por defecto, la mayoría de los ítems están marcados y aparecen en el submenú. 83

95 Si tiene un número muy elevado de ficheros en sus carpetas de copias de trabajo, puede pasar mucho tiempo desde que hace click con el botón derecho en una carpeta hasta que aparece el menú contextual. Esto ocurre porque Subversion obtiene el estado de todos los ficheros cuando se le pide el estado de una carpeta. Para evitar este retraso puede seleccionar la casilla No obtener el estado para el menú contextual. Sin embargo, deberá tener en cuenta que el menú contextual de las carpetas no siempre será correcto, y que puede incluir ítems que no deberían estar allí realmente. Por ejemplo, verá TortoiseSVN->Mostrar Registro para una carpeta Añadida, lo que no funcionará porque la carpeta aún no está en el repositorio Configuración de la Sobreimpresión de Iconos Figura El Diálogo Opciones, Página de Aspecto Visual Esta página le permite elegir los ítems para los que TortoiseSVN mostrará iconos sobreimpresionados. Las unidades de red pueden ser muy lentas, por lo que por defecto los iconos no se muestran en las copias de trabajo creadas en unidades de red. Puede incluso deshabilitar todos los iconos sobreimpresionados, pero cuál es la gracia? Por defecto, los iconos sobreimpresionados aparecerán tanto en todos los diálogos abrir/guardar como en el Explorador de Windows. Si desea que aparezcan únicamente en el Explorador de Windows, marque Mostrar sobreimpresiones sólo en el Explorador box. Excluir Rutas se usa para decirle a TortoiseSVN en qué rutas no debe mostrar iconos sobreimpresionados ni columnas de estado. Esto es útil si tiene algunas copias de trabajo muy grandes que contienen únicamente librerías que no cambian en absoluto y por tanto no necesitan las sobreimpresiones. Por ejemplo: f:\desarrollo\svn\subversion desabilitará las sobreimpresiones sólo en esa ruta concreta. Todavía podrá ver las sobreimpresiones en todos los ficheros y carpetas dentro de esa carpeta. f:\desarrollo\svn\subversion* deshabilitará las sobreimpresiones en todos los ficheros y carpetas cuya ruta empiece por f:\desarrollo\svn\subversion. Esto significa que no verá sobreimpresiones para ningún fichero y carpetas debajo de esa ruta. 84

96 Lo mismo se aplica a Incluir Rutas. Excepto que para esas rutas las sobreimpresiones se muestran siempre, incluso si están deshabilitadas para ese tipo de unidad en concreto Selección del Conjunto de Iconos Figura El Diálogo Opciones, Página de Conjunto de Iconos También puede cambiar el conjunto de iconos de sobreimpresión al que más le guste. Tenga en cuenta que si cambia el conjunto de sobreimpresiones, puede tener que reiniciar su ordenador para que estos cambios surtan efecto Diálogo de Configuración de TortoiseSVN 85

97 Figura El Diálogo Opciones, Página de Diálogos Este diálogo le permite configurar a su gusto algunos de los diálogos de TortoiseSVN. Número por defecto de mensajes de registro Limita el número de mensajes de registro que TortoiseSVN obtiene la primera vez que seleccione TortoiseSVN->Mostrar Registro Útil para conexiones lentas a servidores. Siempre puede utilizar Obtener Todos u Siguientes 100 para obtener más mensajes. Fuente para los mensajes de registro Selecciona la fuente y el tamaño de la letra que se utiliza para mostrar el propio mensaje de registro en el panel del medio del diálogo Registro de Revisiones, y cuando se componen los mensajes de registro en el diálogo Confirmar. Formato abreviado de fecha/hora en los mensajes de registro Si los mensajes estándar largos toman mucho espacio en la pantalla utilice la forma corta. Utilizar las APIs antiguas para obtener los mensajes de registro Desde la versión 1.2, los servidores de Subversion admiten obtener un número concreto de mensajes de registro, en vez de obtener los mensajes de registro de un rango de revisiones. Con la nueva API, si pide 100 mensajes, tendrá 100 mensajes. Con la antigua API, si pide 100 mensajes obtenrá los mensajes de las últimas 100 revisiones del repositorio. Si su fichero no cambia a menudo, vería pocos mensajes. Sin embargo, si pregunta a un servidor pre-1.2 utilizando la nueva API, devolverá todos los mensajes de registro, que luego el cliente tendrá que filtrar. Esto puede acabar en tiempos de respuesta muy lentos. Si tiene que trabajar con un servidor antiguo, debería marcar esta casilla para evitar la ralentización. La mejor opción, por supuesto, es actualizar el servidor. Diálogo de Progreso TortoiseSVN puede cerrar automáticamente todos los diálogos de progreso cuando la acción se termina sin error. Esta configuración le permite seleccionar las condiciones para el cierre de diálogos. La configuración por defecto (recomendada) es Cerrar manualmente que le permite 86

98 revisar todos los mensajes y comprobar qué ha pasado. Sin embargo, puede decidir que desea ignorar algunos tipos de mensajes y hacer que el cuadro de diálogo se cierre automáticamente si no hay cambios críticos. Auto-cerrar si no hay combinaciones, añadidos o borrados significa que el diálogo de progreso se cerrará si ha habido actualizaciones simples, pero si algún cambio del repositorio se ha combinado con los suyos, o si se añadió o borró algún fichero, el diálogo seguirá abierto. Auto-cerrar si no hay conflictos relaja el criterio y cerrará el diálogo incluso si ha habido combinaciones, adiciones o borrados. Sin embargo, si hay algún conflicto o error, el diálogo continuará abierto. Auto-cerrar si no hay errores siempre cierra el diálogo, incluso si hay conflictos. La única condición que deja el diálogo abierto es una condición de error, que ocurre cuando Subversion no puede terminar una tarea. Por ejemplo, una actualización falla si el servidor es inaccesible, o una confirmación falla cuando la copia de trabajo no está actualizada. Utilizar autocompletar en rutas de ficheros y palabras clave El diálogo confirmar incluye una ayuda para parsear la lista de nombres de ficheros que se van a confirmar. Cuando teclee las primeras 3 letras de un ítem en la lista, aparecerá la caja de autocompletar, y puede pulsar Enter para completar el nombre del fichero. Seleccione la caja para habilitar esta opción Opciones de Red Figura El Diálogo Opciones, Página de Red Aquí puede configurar su servidor proxy, si necesita uno para atravesar el cortafuegos de su compañía. También puede especificar qué programa debe utilizar TortoiseSVN para establecer una conexión segura a un repositorio svn+ssh. Le recomendamos que utilice TortoisePlink.exe. Ésta es una versión del popular programa Plink, y se incluye con TortoiseSVN. 87

99 Opciones de Programas Externos Figura El Diálogo Opciones, Página de Visor de Diferencias Aquí puede definir sus propios programas de diferencias/combinación que debe utilizar TortoiseSVN. La configuración básica es utilizar el TortoiseMerge integrado que se instala con TortoiseSVN Visor de Diferencias Se puede utilizar un programa externo de fierencias para comparar diferentes revisiones de ficheros. El programa externo necesitará obtener los nombres de los ficheros de la línea de comando, junto con otras opciones de la línea de comandos. TortoiseSVN usa sustitución de parámetros con prefijo %. Cuando se encuentra uno de estos se sustituirá por el valor apropiado. El orden de los parámetros dependerá del programa de Diferencias que utilice. %base El fichero original sin sus cambios %bname La ventana de título para el fichero base %mine Su propio fichero, con sus cambios %yname El título de la ventana para su fichero Los títulos de las ventanas no son nombres de ficheros puros. TortoiseSVN lo trata como un nombre para mostrar y crea los nombres según eso. Por ejemplo, si está haciendo diferencias entre un fichero en la revisión 123 y un fichero en su copia de trabajo, los nombres pueden ser nombrede-fichero : revision 123 y nombre-de-fichero : copia de trabajo 88

100 Por ejemplo, con ExamDiff Pro: C:\Ruta-A\ExamDiff.exe %base %mine o con KDiff3: C:\Ruta-A\kdiff3.exe %base %mine --L1 %bname --L2 %yname Si utiliza la propiedad svn:keywords para expandir palabras clave, y en particular la revision de un fichero, entonces puede haber una diferencia entre ficheros que es únicamente a causa del valor actual de esta palabra clave. TSVN puede ocultar esta diferencia artificial parseando los ficheros buscando palabras clave antes de hacer la operación de diferenciación. Sin embargo, esto puede tomar bastante tiempo, sobre todo con ficheros largos, por lo que este comportamiento es opcional. Si se selecciona Convertir archivos cuando se diferencia contra BASE entonces TSVN preprocesará los ficheros Herramienta de Combinación Un programa de combinación externo que se utiliza para resolver ficheros en conflicto. La sustitución de parámetros se utiliza de la misma forma que el Programa de Diferencias. %base el fichero original sin ningún cambio, ni suyo ni de otros %bname La ventana de título para el fichero base %mine su propio fichero, con sus cambios %yname El título de la ventana para su fichero %theirs el fichero tal cual estaba en el repositorio %tname El título de la ventana del fichero en el repositorio %merged el fichero en conflicto, el resultado de la operación de combinación %mname El título de la ventana para el fichero combinado Por ejemplo, con Perforce WinMerge: C:\Ruta-A\P4WinMrg.exe %base %theirs %mine %merged o con KDiff3: C:\Ruta-A\kdiff3.exe %base %mine %theirs -o %merged Visor para Ficheros de Diff Unificados Un programa visor para ficheros de diff unificados (ficheros de parche). Si no tiene ninguno la opción predeterminada es utilizar el Bloc de Notas. No se necesitan parámetros. 89

101 El programa Bloc de Notas original de Windows no se comporta bien con los ficheros que no tienen terminaciones de líneas CR-LF estándar. Dado que la mayoría de ficheros diff unificados tienen terminaciones de líneas LF puras, no se ven bien en el Bloc de Notas. Sin embargo, puede descargar un reemplazo del Bloc de Notas Notepad2 [ que no sólo enseña las terminaciones de líneas correctamente, sino que también añade código de colores a las líneas añadidas y eliminadas. Figura El Diálogo Opciones, Pestaña Diferencias/Combinación Avanzadas En las opciones avanzadas, puede definir un programa de diferencias y combinación diferente por cada extensión de fichero. Por ejemplo, podría asociar Photoshop como el Programa de Diferencias para ficheros.jpg :-) Sonidos de TortoiseSVN TortoiseSVN tiene tres sonidos personalizados que se instalan por defecto. Error Información Atención Puede seleccionar sonidos diferentes (o quitarlos completamente) utilizando el Panel de Control de Windows, no el diálogo de opciones de TortoiseSVN Último Paso 90

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

Tutorial: Primeros Pasos con Subversion

Tutorial: Primeros Pasos con Subversion Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través

Más detalles

TortoiseSVN. Un cliente de Subversion para Windows Version 1.4.1. Stefan Küng Lübbe Onken Simon Large

TortoiseSVN. Un cliente de Subversion para Windows Version 1.4.1. Stefan Küng Lübbe Onken Simon Large TortoiseSVN Un cliente de Subversion para Windows Version 1.4.1 Stefan Küng Lübbe Onken Simon Large TortoiseSVN: Un cliente de Subversion para Windows: Version 1.4.1 por Stefan Küng, Lübbe Onken, y Simon

Más detalles

Correo Electrónico: Webmail: Horde 3.1.1

Correo Electrónico: Webmail: Horde 3.1.1 CONTENIDOS: PAGINA Qué es Webmail?. 2 Acceder a Webmail. 2 Instilación del Certificado UCO. 4 Instilación Certificado I.explorer. 4 Instilación Certificado Firefox. 7 Opciones Webmail. 8 Opciones Información

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

Escritorio remoto y VPN. Cómo conectarse desde Windows 7 Escritorio remoto y VPN. Cómo conectarse desde Windows 7 Hay ocasiones en las que es necesario conectarnos a un equipo informático situado a mucha distancia de donde nos encontramos para realizar sobre

Más detalles

Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario

Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario Apéndice 5 Manual de usuario de ColeXión ColeXión 1.0 Manual de usuario Índice 1. Qué es ColeXión?... 2 2. Requerimientos del sistema... 3 3. Instalación de ColeXión... 3 4. Creación de un nuevo esquema...

Más detalles

Cómo usar Subversion. con Windows XP/2000/2003.

Cómo usar Subversion. con Windows XP/2000/2003. con Windows XP/2000/2003. Creado por: Fecha de creación: Domingo, 04 de Septiembre de 2005 Revisión: 1 Última modificación: Sábado, 10 de Septiembre de 2005 Índice Cómo usar Subversion... 1 Índice... 2

Más detalles

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución

Más detalles

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta Configuración de una red con Windows Aunque existen múltiples sistemas operativos, el más utilizado en todo el mundo sigue siendo Windows de Microsoft. Por este motivo, vamos a aprender los pasos para

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

RELACIÓN DE PRÁCTICAS DEL TEMA 2

RELACIÓN DE PRÁCTICAS DEL TEMA 2 RELACIÓN DE PRÁCTICAS DEL TEMA 2 PRÁCTICA S.O. (I): Crear un fichero con Wordpad con tus datos personales y guardarlo en c:/temp Crear una carpeta con tu nombre en c:/temp (ej. C:/temp/pepita) Copiar el

Más detalles

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets

Más detalles

Notas para la instalación de un lector de tarjetas inteligentes.

Notas para la instalación de un lector de tarjetas inteligentes. Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación

Más detalles

Tareas básicas en OneNote 2010 Corresponde a: Microsoft Office OneNote 2010

Tareas básicas en OneNote 2010 Corresponde a: Microsoft Office OneNote 2010 areas básicas en OneNote 2010 - OneNote - Office.com http://office.microsoft.com/es-ar/onenote-help/tareas-basicas-en-onenote... 1 de 3 23/04/2012 10:40 p.m. Soporte / OneNote / Ayuda y procedimientos

Más detalles

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE) 1. Introducción. TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE) El Explorador es una herramienta indispensable en un Sistema Operativo ya que con ella se puede organizar y controlar los contenidos (archivos

Más detalles

Fundamentos CAPÍTULO 1. Contenido

Fundamentos CAPÍTULO 1. Contenido CAPÍTULO 1 Fundamentos En este capítulo encontrará instrucciones rápidas y sencillas que le permitirán poner manos a la obra de inmediato. Aprenderá también a utilizar la ayuda en pantalla, que le será

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

Unidad Didáctica 12. La publicación

Unidad Didáctica 12. La publicación Unidad Didáctica 12 La publicación Contenido 1. Desarrollar y explotar 2. Definición del Sitio 3. Alojar nuestra primera página Web 4. Configurar la conexión FTP U.D. 12 La publicación 1. Desarrollar y

Más detalles

TortoiseSVN Un cliente de Subversion para Windows Versión 1.6.1 Stefan Küng Lübbe Onken Simon Large

TortoiseSVN Un cliente de Subversion para Windows Versión 1.6.1 Stefan Küng Lübbe Onken Simon Large TortoiseSVN Un cliente de Subversion para Windows Versión 1.6.1 Stefan Küng Lübbe Onken Simon Large TortoiseSVN: Un cliente de Subversion para Windows: Versión 1.6.1 por Stefan Küng, Lübbe Onken, y Simon

Más detalles

Guía Rápida de Inicio

Guía Rápida de Inicio Guía Rápida de Inicio 1. Acerca de esta Guía Esta guía le ayudará a instalar y dar los primeros pasos con BitDefender Security for SharePoint. Para disponer de instrucciones detalladas, por favor, diríjase

Más detalles

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10 CONCEPTOS BASICOS Febrero 2003 Página - 1/10 EL ESCRITORIO DE WINDOWS Se conoce como escritorio la zona habitual de trabajo con windows, cuando iniciamos windows entramos directamente dentro del escritorio,

Más detalles

Creación y administración de grupos de dominio

Creación y administración de grupos de dominio Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia

Más detalles

PRACTICA 9 SERVIDOR WEB APACHE SERVIDOR WEB APACHE. JEAN CARLOS FAMILIA Página 1

PRACTICA 9 SERVIDOR WEB APACHE SERVIDOR WEB APACHE. JEAN CARLOS FAMILIA Página 1 SERVIDOR WEB APACHE JEAN CARLOS FAMILIA Página 1 El servidor HTTP Apache es un servidor web HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que

Más detalles

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)

Más detalles

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de:

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de: Gemelo Backup Online DESKTOP Manual DISCO VIRTUAL Es un Disco que se encuentra en su PC junto a las unidades de discos locales. La información aquí existente es la misma que usted ha respaldado con su

Más detalles

CUALQUIERA, NO ES NECESARIO DISPONER DE ADSL

CUALQUIERA, NO ES NECESARIO DISPONER DE ADSL INDICE 1. Qué tipo de conexión a internet necesito?...1 2. Qué sistema operativo tengo que tener?...1 3. Y qué navegador?...1 4. Necesito alguna impresora específica para el visado?...1 5. Qué más tengo

Más detalles

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,

Más detalles

MANUAL COPIAS DE SEGURIDAD

MANUAL COPIAS DE SEGURIDAD MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta

Más detalles

Control de versiones con Subversion

Control de versiones con Subversion Control de versiones con Subversion Conceptos fundamentales Concepto de control de versiones. Introducción a Subversion Qué es Subversion? Sistema de control de versiones. Sistema centralizado para compartir

Más detalles

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007 MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007 Servicio de Informática y Comunicaciones Para poder diseñar un formulario y que éste nos envíe los resultados a nuestro correo electrónico, necesitamos

Más detalles

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS 1. Introducción Los ambientes de aprendizaje acompañados de trabajos colaborativos como estrategia se revierten en actividades de diferente índole (análisis de videos,

Más detalles

DESCARGA DE CARPETAS DE MENSAJES DE CORREO DESDE EL WEBMAIL A PC S LOCALES

DESCARGA DE CARPETAS DE MENSAJES DE CORREO DESDE EL WEBMAIL A PC S LOCALES DESCARGA DE CARPETAS DE MENSAJES DE CORREO DESDE EL WEBMAIL A PC S LOCALES 1.- Introducción El objetivo de este documento es la descripción de los pasos a seguir para descargar a nuestros PCs los mensajes

Más detalles

Toda base de datos relacional se basa en dos objetos

Toda base de datos relacional se basa en dos objetos 1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.

Más detalles

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación Vicerrectorado de Tecnologías de la Información y la Comunicación Conexión mediante Escritorio Remoto de Windows Última Actualización 16 de septiembre de 2013 Histórico de cambios Fecha Descripción Autor

Más detalles

DOCENTES FORMADORES UGEL 03 PRIMARIA

DOCENTES FORMADORES UGEL 03 PRIMARIA DOCENTES FORMADORES UGEL 03 PRIMARIA 1. Recursos y Aplicaciones del Servidor La página de inicio del servidor (http://escuela) contiene los enlaces a las aplicaciones instaladas en el servidor, un enlace

Más detalles

Guía de instalación de la carpeta Datos de IslaWin

Guía de instalación de la carpeta Datos de IslaWin Guía de instalación de la carpeta Datos de IslaWin Para IslaWin Gestión CS, Classic o Pyme a partir de la revisión 7.00 (Revisión: 10/11/2011) Contenido Introducción... 3 Acerca de este documento... 3

Más detalles

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP Características del Explorador de Windows El Explorador de Windows es una de las aplicaciones más importantes con las que cuenta Windows. Es una herramienta indispensable

Más detalles

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS Organizar la información: El explorador de Windows... 1 Introducción... 1 Explorador de Windows... 2 Ejercicio práctico del explorador de Windows... 5

Más detalles

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez Instituto Tecnológico de Las América Materia Sistemas operativos III Temas Servidor Web Apache Facilitador José Doñe Sustentante Robín Bienvenido Disla Ramirez Matricula 2011-2505 Grupo 1 Servidor Web

Más detalles

Archivo de correo con Microsoft Outlook contra Exchange Server

Archivo de correo con Microsoft Outlook contra Exchange Server Archivo de correo con Microsoft Outlook contra Exchange Server Resumen Con este proceso de archivado, lo que pretendemos es guardar nuestro correo en un archivo de datos, para así poder realizar una copia

Más detalles

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

CIF-KM. GUÍA DE LOS PRIMEROS PASOS CIF-KM. GUÍA DE LOS PRIMEROS PASOS Secciones 1. CONCEPTOS PREVIOS. 2. INSTALAR CIF-KM. 2.1 Descargar e instalar CIF-KM. 2.2 Configuración de CIF-KM. 2.3 Acceso externo al servidor de CIF-KM. 3. PRIMERA

Más detalles

SVN MANUAL DE FORMACIÓN. Proyecto MigraFLOSS CENATIC Telefónica Soluciones. Universidad Rey Juan Carlos Universidad de León

SVN MANUAL DE FORMACIÓN. Proyecto MigraFLOSS CENATIC Telefónica Soluciones. Universidad Rey Juan Carlos Universidad de León MANUAL DE FORMACIÓN GUÍA FÁCIL DE TORTOISESVN REFERENCIA LIBRE CONS TORTOISESVN VERSIÓN 0.1287 SVN 0.1287 MIÉRCOLES, 18 DE NOVIEMBRE DE 2009 AUTOR: ALBERTO BARRIONUEVO (CONSULTORIA@OPENTIA.ES) Documento

Más detalles

10. El entorno de publicación web (Publiweb)

10. El entorno de publicación web (Publiweb) 10. El entorno de publicación web (Publiweb) 10.1. Introducción El entorno de publicación Web es una herramienta que permite la gestión de nuestras páginas Web de una forma visual. Algunos ejemplos de

Más detalles

MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn

MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn Tegucigalpa M. D. C., Junio de 2009 Que es un CMS Un sistema de administración de contenido (CMS por sus siglas en ingles) es un programa para organizar

Más detalles

Instalación y configuración de Windows SharePoint Services (WSS) 2003

Instalación y configuración de Windows SharePoint Services (WSS) 2003 Instalación y configuración de Windows SharePoint Services (WSS) 2003 Autor : Gustavo Velez Para : www.gavd.net/servers Fecha : 15-01-2005 Versión : 1.0.1 Prerrequisitos para la instalación: Windows 2003

Más detalles

Activación de un Escritorio Remoto

Activación de un Escritorio Remoto Activación de un Escritorio Remoto La activación de un Escritorio Remoto se realiza en dos fases, en la primera se habilita a un Usuario de un ordenador para que pueda admitir una conexión remota, la segunda

Más detalles

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este Manual para usuarios USO DE ONEDRIVE Universidad Central del Este Contenido 1. QUÉ ES Y PARA QUÉ SIRVE OFFICE 365?... 3 1.1 CÓMO ENTRAR A LA PLATAFORMA DE OFFICE 365 DE LA UCE?... 3 ONEDRIVE... 5 2. QUÉ

Más detalles

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE ÍNDICE ACCESO A LA APLICACIÓN... 2 1.- HOMOLOGACIÓN DE CURSOS... 4 1.1.- INICIAR EXPEDIENTE... 4 1.2.- CONSULTA DE EXPEDIENTES... 13 1.3.- RENUNCIA A LA HOMOLOGACIÓN... 16 2.- MECÁNICA DE CURSOS... 19

Más detalles

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. 1 Direcciones o Ubicaciones, Carpetas y Archivos Botones de navegación. El botón Atrás permite volver a carpetas que hemos examinado anteriormente. El botón Arriba

Más detalles

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. 1 de 18 Inicio Qué es un foro En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. En el campus virtual, el foro es una herramienta

Más detalles

Instrucciones de instalación de TrueCode

Instrucciones de instalación de TrueCode Gracias por su compra y las instrucciones que le guiara a través del proceso de instalación y puesta en marcha de su nuevo software. Se recomienda la lectura y las discusiones de los usuarios por favor

Más detalles

1.- MENU DE CONTROL O MENU VENTANA: permite cerrar la ventana cambiarla de tamaño y pasar a otra ventana

1.- MENU DE CONTROL O MENU VENTANA: permite cerrar la ventana cambiarla de tamaño y pasar a otra ventana EXCEL PRÓLOGO Microsoft Excel es una hoja de cálculo de gran capacidad y fácil uso. Excel no solo es una hoja de calculo, sino también tiene capacidad para diseñar bases de datos (listas) de forma totalmente

Más detalles

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema Sistema de Gestión Portuaria Uso General del Sistema Uso General del Sistema Página 1 de 21 Contenido Contenido... 2 1.Ingreso al Sistema... 3 2.Uso del Menú... 6 3.Visualizar Novedades del Sistema...

Más detalles

CONFIGURACION AVANZADA DE MOZILLA THUNDERBIRD

CONFIGURACION AVANZADA DE MOZILLA THUNDERBIRD CONFIGURACION AVANZADA DE MOZILLA THUNDERBIRD Carpetas sin Conexión... 2 Gestión de mensajes enviados... 3 Gestión de mensajes eliminados... 6 Firma Digital... 8 Envío de mensajes firmados digitalmente...

Más detalles

6.1. Conoce la papelera

6.1. Conoce la papelera Unidad 6. La papelera de Reciclaje 6.1. Conoce la papelera La papelera no es más que un espacio en el disco duro reservado para almacenar la información que eliminamos, evitando que esta información aparezca,

Más detalles

2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su organización.

2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su organización. Como acceder a nuestra cuenta de OneDrive Business: 1. Inicie sesión en Office 365 (https://portal.office.com). 2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su

Más detalles

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición. Microsoft Word Microsoft Word es actualmente (2009) el procesador de textos líder en el mundo gracias a sus 500 millones de usuarios y sus 25 años de edad. Pero hoy en día, otras soluciones basadas en

Más detalles

INSTALACIÓN DE LOS MÓDULOS DEL ERP AbanQ

INSTALACIÓN DE LOS MÓDULOS DEL ERP AbanQ INSTALACIÓN DE LOS MÓDULOS DEL ERP AbanQ Índice de contenido Instalación de los módulos del ERP AbanQ:...2 Requisitos para la instalación...2 Instalación de los módulos...2 1 Instalación de los módulos

Más detalles

Una plantilla es un documento de Word 2003 con la característica de que el tipo de documento es plantilla de documento (.dot).

Una plantilla es un documento de Word 2003 con la característica de que el tipo de documento es plantilla de documento (.dot). Unidad 3. Plantillas Objetivos de la unidad: Una plantilla es un documento prediseñado que usted puede usar para crear nuevos documentos con el mismo formato. A través de una plantilla, el aspecto de un

Más detalles

Redes de área local: Aplicaciones y servicios WINDOWS

Redes de área local: Aplicaciones y servicios WINDOWS Redes de área local: Aplicaciones y servicios WINDOWS 4. Servidor DNS 1 Índice Definición de Servidor DNS... 3 Instalación del Servidor DNS... 5 Configuración del Servidor DNS... 8 2 Definición de Servidor

Más detalles

Para ver información sobre su computadora tales como el hardware y el software que está instalación necesario para acceder a la Ventana del sistema.

Para ver información sobre su computadora tales como el hardware y el software que está instalación necesario para acceder a la Ventana del sistema. Informáticas I 1.6 El Sistema Actualmente es más probable que trabajan con el sistema operativo es Windows 7 y por lo tanto, vamos a pasar nuestro tiempo se centró en Windows 7. Cuando se trabaja con Windows,

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

Guía de Instalación para clientes de WebAdmin

Guía de Instalación para clientes de WebAdmin Panda Managed Office Protection Guía de Instalación para clientes de WebAdmin Tabla de contenidos 1. Introducción... 4 2. Instalación de Panda Managed Office Protection a partir de una instalación de Panda

Más detalles

Configurar protección infantil en Windows XP

Configurar protección infantil en Windows XP Configurar protección infantil en Windows XP Web de la asociación española de pediatría En la web de la asociación española de pediatría podemos encontrar un link al site que han montado junto a Microsoft

Más detalles

Uso básico desde la propia página del sitio

Uso básico desde la propia página del sitio Para acceder al entorno de Office 365, escriba la dirección http://correo.ulpgc.es. Antes de introducir el nombre de usuario, marcamos la opción de "Mantener la sesión iniciada" e iniciamos sesión introduciendo

Más detalles

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora Plataforma e-ducativa Aragonesa Manual de Administración Bitácora ÍNDICE Acceso a la administración de la Bitácora...3 Interfaz Gráfica...3 Publicaciones...4 Cómo Agregar una Publicación...4 Cómo Modificar

Más detalles

PLANTILLAS DE DOCUMENTOS EN WORD 2007

PLANTILLAS DE DOCUMENTOS EN WORD 2007 1 PLANTILLAS DE DOCUMENTOS EN WORD 2007 Introducción Una plantilla es un modelo o patrón para crear nuevos documentos. En una plantilla se guarda internamente el formato utilizado, es decir, el estilo

Más detalles

1/ XAMPP: más fácil imposible. Vamos directamente a la página de descarga de Apache Friends para Windows

1/ XAMPP: más fácil imposible. Vamos directamente a la página de descarga de Apache Friends para Windows Moodle en XAMPP Presentación Xampp Moodle 1.9 Moodle 2.0 Moodle exprés Xampp Lite 1/ XAMPP: más fácil imposible 1.1/ Obtención de XAMPP Vamos directamente a la página de descarga de Apache Friends para

Más detalles

TELEPROCESOS Y SISTEMAS DISTRIBUIDOS

TELEPROCESOS Y SISTEMAS DISTRIBUIDOS TELEPROCESOS Y SISTEMAS DISTRIBUIDOS Semana 11 Integrantes: Cantera Salazar, Julissa A. Yalico Tello, Diana Accho Flores, Wilber En una red Trabajo en Grupo se puede compartir, o hacer disponibles a través

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server 5.0 es un servidor web, que incluye los servicios de HTTP, HTTPS, FTP, SMTP (correo saliente) y NNTP (grupos de noticias). Además es capaz de ejecutar

Más detalles

CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6

CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6 CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6 Carpetas sin conexión Gestión de mensajes enviados Gestión de mensajes eliminados Firma digital Envío de mensajes firmados digitalmente Recepción de mensajes

Más detalles

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes. Tutorial DC++ Para compartir, lo mejor es usar el DC++, que es un programa de intercambio P2P (como el emule) pero optimizado para usarlo en redes locales. Usarlo es muy sencillo y configurarlo también,

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

Control de Versiones con Subversion y TortoiseSVN

Control de Versiones con Subversion y TortoiseSVN Control de Versiones con Subversion y TortoiseSVN Juan Luis Serradilla (juanlu@um.es) Sección de Metodología, Normalización y Calidad del Software ATICA Universidad de Murcia Qué es el control de versiones?

Más detalles

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian Guía de Instalación Página 1 Índice ESCUDO MOVISTAR.... 3 1. INSTALACIÓN DEL SERVICIO ESCUDO MOVISTAR... 3 1.1. VERSIONES SOPORTADAS... 3

Más detalles

Guía rápida para crear cursos en Aulas virtuales

Guía rápida para crear cursos en Aulas virtuales Guía rápida para crear cursos en Aulas virtuales Esta página es una guía de consulta rápida para crear cursos en línea con Moodle. Perfila las principales funciones disponibles así como algunas de las

Más detalles

ALGUNAS AYUDAS PARA EL ACCESO AL AULA DIGITAL Contenido

ALGUNAS AYUDAS PARA EL ACCESO AL AULA DIGITAL Contenido ALGUNAS AYUDAS PARA EL ACCESO AL AULA DIGITAL Contenido Tabla de contenido 1 INFORMACIÓN PERSONAL... 2 1.1 Cómo ingresar al Aula Digital?... 2 1.2 Qué hacer si olvida su contraseña?... 2 1.3 Qué veo cuando

Más detalles

Selección de los puntos de montaje

Selección de los puntos de montaje PARTICIONES PARA LINUX Selección de los puntos de montaje Tanto para aquellos que vayan a instalar ahora, como para quienes quieran cambiar el tamaño de una partición o formatear este apunte (resumen de

Más detalles

Software Criptográfico FNMT-RCM

Software Criptográfico FNMT-RCM Software Criptográfico FNMT-RCM ÍNDICE 1. DESCARGA E INSTALACIÓN DEL SOFTWARE 2. EXPORTACIÓN DE CERTIFICADOS EN MICROSOFT INTERNET EXPLORER 3. IMPORTACIÓN DEL CERTIFICADO A LA TARJETA CRIPTOGRÁFICA -2-

Más detalles

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES 1. ÍNDICE MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES 1. INTRODUCCIÓN...4 2 INSTALACIÓN DE LA APLICACIÓN...4 3 PANTALLA DE ACCESO...5 4 SELECCIÓN DE CLÍNICA...6 5 PANTALLA PRINCIPAL...7 6.

Más detalles

NORMA 34.14(SEPA) 05/11/2013

NORMA 34.14(SEPA) 05/11/2013 NORMA 34.14(SEPA) 05/11/2013 1. Descripción La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que se efectúe el pago de transferencias a los beneficiarios

Más detalles

Sitios remotos. Configurar un Sitio Remoto

Sitios remotos. Configurar un Sitio Remoto Sitios remotos Definir un sitio remoto significa establecer una configuración de modo que Dreamweaver sea capaz de comunicarse directamente con un servidor en Internet (por eso se llama remoto) y así poder

Más detalles

30 de Mayo de 2008. www.sigrid.es

30 de Mayo de 2008. www.sigrid.es Guia de Instalación del servidor SgdWMS 30 de Mayo de 2008 www.sigrid.es 2 Índice 1.- INTRODUCCIÓN... 3 2.- INSTALACIÓN DE INTERNET INFORMATION SERVER (IIS)... 3 3.- INSTALACIÓN DEL SERVIDOR SGDWMS EN

Más detalles

Guía de administración de Huddle Versión 2.3

Guía de administración de Huddle Versión 2.3 Guía de administración de Huddle Versión 2.3 Contenido: Explicando las Licencias de Administrador de Huddle 3 Administradores de Espacio de trabajo: Pestaña de propiedades 4 Propiedades de Espacio de trabajo

Más detalles

La tortuga y los documentos: Tortoise + Subversion

La tortuga y los documentos: Tortoise + Subversion La tortuga y los documentos: Tortoise + Subversion Un sistema de control de versiones Pablo Mellado Rafael Morales Instituto de Astrofísica de Andalucía. CSIC Seminarios IAA. Jueves 21 Junio 2007 Índice

Más detalles

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico

Más detalles

Uso de Visual C++ Pre-Practica No. 3

Uso de Visual C++ Pre-Practica No. 3 Pre-Practica No. 3 Uso de Visual C++ Microsoft Visual C++ 2010 es una versión de Visual Studio específica para el lenguaje de programación C++. Es un entorno de desarrollo muy completo y profesional. Por

Más detalles

WINDOWS 98/Me EL EXPLORADOR DE WINDOWS IV

WINDOWS 98/Me EL EXPLORADOR DE WINDOWS IV 10 EL EXPLORADOR DE WINDOWS IV Operaciones con discos Desde el Explorador, también puede ejecutar diversas operaciones sobre discos completos. Aunque, desde aquí, es posible formatear discos duros, lo

Más detalles

APLICATECA. Guía para la contratación y gestión de Respaldo Cloud

APLICATECA. Guía para la contratación y gestión de Respaldo Cloud APLICATECA Guía para la contratación y gestión de Respaldo Cloud INDICE 1 QUÉ ES RESPALDO CLOUD?... 1 1.1 PARA QUÉ SIRVE?... 1 1.2 CARACTERÍSTICAS DE RESPALDO CLOUD... 1 2 CONTRATACIÓN DE RESPALDO CLOUD...

Más detalles

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS 1) EL PEQUEÑO EDITOR El Bloc de notas de Windows XP es un básico editor de texto con el que podemos escribir anotaciones, de hasta 1024 caracteres por línea y

Más detalles

WINDOWS. Iniciando Windows. El mouse

WINDOWS. Iniciando Windows. El mouse Windows es un sistema operativo, cuyo nombre lo debe al principal elemento de trabajo, la ventana - en inglés window -. Este tiene características como: Multitarea: durante una sesión de trabajo, es posible

Más detalles

1. Configuración del entorno de usuario

1. Configuración del entorno de usuario Tabla de Contenidos 1. Configuración del entorno de usuario 1.1. Temas 1.2. Apariencia 1.3. Configuración del menú Inicio 2. Configuración de los equipos portátiles en red 2.1. Realizar copia de seguridad

Más detalles

Operación Microsoft Access 97

Operación Microsoft Access 97 Trabajar con Controles Características de los controles Un control es un objeto gráfico, como por ejemplo un cuadro de texto, un botón de comando o un rectángulo que se coloca en un formulario o informe

Más detalles

Oficina Online. Manual del administrador

Oficina Online. Manual del administrador Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal

Más detalles

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir? Google Docs 1 Itinerario 1.1 Qué vamos a hacer? En este tutorial aprendemos a manejar la herramienta Google Docs, de esta forma nos introduciremos en el llamado cloud computing, que podemos traducir como,

Más detalles

ÍNDICE INDICE. MANUAL WinPoET. Manual de formularios en Manual WinPoET

ÍNDICE INDICE. MANUAL WinPoET. Manual de formularios en Manual WinPoET ÍNDICE INDICE MANUAL WinPoET Índice 1. Introducción 3 2. Windows 2000, 98 y ME - Instalación y configuración del WinPoET 3 3. Windows XP Configuración de la conexión 8 4. Windows XP - Comprobación de la

Más detalles