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

TortoiseSVN 1.5.6 Es

  • Upload
    cerveth

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

  • TortoiseSVNUn cliente de Subversion para Windows

    Versin 1.5.6

    Stefan KngLbbe OnkenSimon Large

  • TortoiseSVN: Un cliente de Subversion para Windows:Versin 1.5.6por Stefan Kng, Lbbe Onken, y Simon LargeTraduccin: Fernando P. Najera Cano ([email protected])publicado 2008/12/01 22:49:20 (r14739)

  • iii

    Tabla de contenidosPrefacio .......................................................................................................................... xi

    1. Audiencia ............................................................................................................ xi2. Gua de Lectura ................................................................................................... xi3. TortoiseSVN es gratis! ........................................................................................ xii4. Comunidad ......................................................................................................... xii5. Reconocimientos ................................................................................................. xii6. Terminologa usada en este documento .................................................................... xii

    1. Introduccin ................................................................................................................. 11.1. Qu es TortoiseSVN? ......................................................................................... 11.2. Historia de TortoiseSVN ...................................................................................... 11.3. Caractersticas de TortoiseSVN ............................................................................. 11.4. Instalando TortoiseSVN ....................................................................................... 3

    1.4.1. Requerimientos del sistema ........................................................................ 31.4.2. Instalacin ............................................................................................... 31.4.3. Packs de idiomas ...................................................................................... 31.4.4. Corrector ortogrfico ................................................................................. 3

    2. Conceptos bsicos ......................................................................................................... 52.1. El repositorio ..................................................................................................... 52.2. Modelos de versionado ........................................................................................ 5

    2.2.1. El problema de compartir ficheros ............................................................... 62.2.2. La solucin bloquear-modificar-desbloquear .................................................. 62.2.3. La solucin copiar-modificar-fusionar .......................................................... 72.2.4. Qu hace Subversion? .............................................................................. 9

    2.3. Subversion en accin ......................................................................................... 102.3.1. Copias de trabajo .................................................................................... 102.3.2. URLs de repositorio ................................................................................ 122.3.3. Revisiones ............................................................................................. 122.3.4. Cmo se unen las copias de trabajo al repositorio ......................................... 14

    2.4. Sumario ........................................................................................................... 153. Preparando un servidor ................................................................................................. 16

    3.1. Servidor basado en Apache ................................................................................. 163.1.1. Introduccin ........................................................................................... 163.1.2. Instalando Apache .................................................................................. 163.1.3. Instalando Subversion .............................................................................. 173.1.4. Configuracin ........................................................................................ 183.1.5. Mltiples repositorios .............................................................................. 203.1.6. Autorizacin basada en rutas ..................................................................... 203.1.7. Autentificacin con un dominio de Windows ............................................... 213.1.8. Mltiples orgenes de autentificacin .......................................................... 233.1.9. Asegurando el servidor con SSL ................................................................ 233.1.10. Utilizando certificados de cliente con hosts SSL virtuales .............................. 25

    3.2. Servidor Basado en Svnserve .............................................................................. 263.2.1. Introduccin ........................................................................................... 263.2.2. Instalando svnserve ................................................................................. 263.2.3. Ejecutando svnserve ................................................................................ 273.2.4. Autentificacin bsica con svnserve ........................................................... 293.2.5. Mejor seguridad con SASL ....................................................................... 303.2.6. Autentificacin con svn+ssh ..................................................................... 313.2.7. Autorizacin basada en rutas con svnserve .................................................. 31

    4. El repositorio .............................................................................................................. 334.1. Creacin de repositorios ..................................................................................... 33

    4.1.1. Creando un repositorio con el cliente de lnea de comandos ............................ 334.1.2. Creando el repositorio con TortoiseSVN ..................................................... 334.1.3. Acceso local al repositorio ....................................................................... 344.1.4. Accediendo a un repositorio en una unidad de red ......................................... 34

  • TortoiseSVN

    iv

    4.1.5. Organizacin del repositorio ..................................................................... 354.2. Copia de seguridad del Repositorio ...................................................................... 364.3. Scripts gancho .................................................................................................. 374.4. Enlaces de obtener ............................................................................................ 37

    5. Gua de uso diario ....................................................................................................... 395.1. Empezando ...................................................................................................... 39

    5.1.1. Iconos sobreimpresionados ....................................................................... 395.1.2. Mens contextuales ................................................................................. 395.1.3. Arrastrar y soltar .................................................................................... 415.1.4. Atajos comunes ...................................................................................... 425.1.5. Autentificacin ....................................................................................... 425.1.6. Maximizando ventanas ............................................................................ 43

    5.2. Importando datos en un repositorio ....................................................................... 435.2.1. Importar ................................................................................................ 435.2.2. Importar en el sitio ................................................................................. 455.2.3. Ficheros especiales .................................................................................. 455.2.4. Proyectos referenciados ............................................................................ 45

    5.3. Obteniendo una copia de trabajo .......................................................................... 475.3.1. Profundidad de obtencin ......................................................................... 48

    5.4. Confirmando sus cambios en el repositorio ............................................................ 505.4.1. El dilogo de Confirmacin ...................................................................... 505.4.2. Listas de cambios ................................................................................... 525.4.3. Excluyendo tems de la lista de confirmacin ............................................... 525.4.4. Mensajes de registro de confirmacin ......................................................... 525.4.5. Progreso de confirmacin ......................................................................... 54

    5.5. Actualice su copia de trabajo con los cambios de otros ............................................. 555.6. Resolviendo conflictos ....................................................................................... 575.7. Obteniendo informacin del estado ....................................................................... 57

    5.7.1. Iconos sobreimpresionados ....................................................................... 585.7.2. Columnas de TortoiseSVN en el Explorador de Windows ............................... 595.7.3. Estado local y remoto .............................................................................. 595.7.4. Viendo diferencias .................................................................................. 61

    5.8. Listas de cambios .............................................................................................. 625.9. Dilogo de Registro de revisiones ........................................................................ 64

    5.9.1. Invocando el dilogo de Registro de revisiones ............................................. 655.9.2. Acciones del registro de revisiones ............................................................ 655.9.3. Obteniendo informacin adicional .............................................................. 665.9.4. Obteniendo ms mensajes de registro ......................................................... 695.9.5. Caractersticas de registro de fusin ........................................................... 695.9.6. Cambiando el mensaje de registro y el autor ................................................ 705.9.7. Filtrando los mensajes de registro .............................................................. 715.9.8. Informacin estadstica ............................................................................ 715.9.9. Modo sin conexin ................................................................................. 735.9.10. Refrescando la vista .............................................................................. 74

    5.10. Viendo diferencias ........................................................................................... 745.10.1. Diferencias de ficheros ........................................................................... 745.10.2. Opciones de fn de lnea y espacios en blanco ............................................ 755.10.3. Comparando carpetas ............................................................................. 765.10.4. Diferenciando imgenes utilizando TortoiseIDiff ......................................... 775.10.5. Herramientas externas de diferencias/fusin ............................................... 78

    5.11. Aadiendo nuevos ficheros y directorios .............................................................. 785.12. Copiando/Moviendo/Renombrando ficheros y carpetas ........................................... 795.13. Ignorando ficheros y directorios ......................................................................... 80

    5.13.1. Concordancia de patrones en las listas de ignorados ..................................... 825.14. Eliminando, moviendo y renombrando ................................................................ 82

    5.14.1. Eliminando ficheros y carpetas ................................................................ 835.14.2. Moviendo ficheros y carpetas .................................................................. 845.14.3. Cambiando las maysculas/minsculas en un nombre de fichero ..................... 85

  • TortoiseSVN

    v

    5.14.4. Lidiando con conflictos en las maysculas/minsculas de un nombre defichero ........................................................................................................... 855.14.5. Reparando renombrados de ficheros ......................................................... 855.14.6. Eliminando ficheros no versionados .......................................................... 86

    5.15. Deshacer cambios ............................................................................................ 865.16. Limpieza ........................................................................................................ 875.17. Configuracin del proyecto ............................................................................... 87

    5.17.1. Propiedades de Subversion ...................................................................... 885.17.2. Propiedades de projecto TortoiseSVN ....................................................... 92

    5.18. Haciendo ramas / etiquetas ................................................................................ 945.18.1. Crando una rama o etiqueta .................................................................... 945.18.2. Obtener o cambiar... .............................................................................. 96

    5.19. Fusionando ..................................................................................................... 975.19.1. Fusionando un rango de revisiones ........................................................... 985.19.2. Reintegrando una rama. ........................................................................ 1005.19.3. Fusionando dos rboles diferentes ........................................................... 1005.19.4. Opciones de fusin .............................................................................. 1015.19.5. Revisando los resultados de la fusin ...................................................... 1025.19.6. Registro de fusin ............................................................................... 1035.19.7. Manejando conflictos durante la fusin .................................................... 1035.19.8. Fusionar una rama completada ............................................................... 104

    5.20. Bloqueando ................................................................................................... 1055.20.1. Cmo trabaja el bloqueo en Subversion ................................................... 1055.20.2. Obteniendo un bloqueo ......................................................................... 1055.20.3. Quitando un Bloqueo ........................................................................... 1065.20.4. Comprobando el estado de los bloqueos ................................................... 1075.20.5. Haciendo ficheros no-bloqueados como slo-lectura ................................... 1075.20.6. Los scripts ganchos de bloqueo .............................................................. 108

    5.21. Creando y aplicando parches ............................................................................ 1085.21.1. Creando un fichero parche .................................................................... 1085.21.2. Aplicando un fichero parche .................................................................. 109

    5.22. Quin cambi qu lnea? ............................................................................... 1095.22.1. Autora de ficheros .............................................................................. 1105.22.2. Autora de las diferencias ...................................................................... 112

    5.23. El navegador de repositorios ............................................................................ 1125.24. Grficos de revisin ....................................................................................... 115

    5.24.1. Nodos del grfico de revisin ................................................................ 1165.24.2. Cambiando la vista .............................................................................. 1165.24.3. Usando el grfico ................................................................................ 1175.24.4. Refrescando la vista ............................................................................. 117

    5.25. Exportando una copia de trabajo de Subversion ................................................... 1185.25.1. Eliminando una copia de trabajo del control de versiones ............................ 119

    5.26. Relocalizando una copia de trabajo ................................................................... 1195.27. Integracin con sistemas de control de errores / seguimiento de incidencias ............... 120

    5.27.1. Aadiendo nmeros de incidencia en los mensajes de registro ...................... 1205.27.2. Obteniendo informacin desde el gestor de incidencias ............................... 123

    5.28. Integracin con visores de repositorios basados en web ......................................... 1245.29. Configuracin de TortoiseSVN ......................................................................... 124

    5.29.1. Configuracin general .......................................................................... 1255.29.2. Configuracin de los iconos sobreimpresionados ....................................... 1325.29.3. Configuracin de red ............................................................................ 1355.29.4. Configuracin de programas externos ...................................................... 1365.29.5. Datos de configuracin almacenados ....................................................... 1405.29.6. Cach de registro ................................................................................ 1415.29.7. Scripts gancho del lado del cliente .......................................................... 1435.29.8. Configuracin de TortoiseBlame ............................................................ 1475.29.9. Configuraciones del registro .................................................................. 1475.29.10. Carpetas de trabajo de Subversion ......................................................... 148

  • TortoiseSVN

    vi

    5.30. ltimo paso .................................................................................................. 1486. El programa SubWCRev ............................................................................................. 150

    6.1. La lnea de comandos de SubWCRev .................................................................. 1506.2. Sustitucin de palabras clave ............................................................................. 1516.3. Ejemplo de palabras clave ................................................................................. 1516.4. interfaz COM ................................................................................................. 152

    A. Preguntas ms frecuentes (FAQ) .................................................................................. 155B. Cmo...? ................................................................................................................. 156

    B.1. Mover/copiar muchos ficheros de golpe .............................................................. 156B.2. Obligar a los usuarios a introducir un mensaje de registro ....................................... 156

    B.2.1. Script gancho en el servidor ................................................................... 156B.2.2. Propiedades del proyecto ....................................................................... 156

    B.3. Actualizar los ficheros seleccionados desde el repositorio ....................................... 156B.4. Deshacer revisiones en el repositorio .................................................................. 157

    B.4.1. Utilice el dilogo Registro de revisiones ................................................... 157B.4.2. Utilice el dilogo Fusionar ..................................................................... 157B.4.3. Utilice svndumpfilter ..................................................................... 158

    B.5. Comparar dos revisiones de un fichero ................................................................ 158B.6. Incluir un sub-proyecto comn .......................................................................... 158

    B.6.1. Utilice svn:externals .............................................................................. 158B.6.2. Utilice una copia de trabajo anidada ......................................................... 159B.6.3. Utilice una ruta relativa ......................................................................... 159

    B.7. Crear un acceso directo a un repositorio .............................................................. 159B.8. Ignorar ficheros que ya estn versionados ............................................................ 160B.9. Desversionar una copia de trabajo ...................................................................... 160B.10. Eliminar una copia de trabajo .......................................................................... 160

    C. Trucos tiles para los administradores ........................................................................... 161C.1. Instalar TortoiseSVN utilizando polticas de grupo ................................................ 161C.2. Redirigir la comprobacin de actualizacin .......................................................... 161C.3. Estableciendo la variable de entorno SVN_ASP_DOT_NET_HACK ........................... 162C.4. Deshabilitar entradas del men contextual ........................................................... 162

    D. Automatizando TortoiseSVN ....................................................................................... 164D.1. Comandos de TortoiseSVN ............................................................................... 164D.2. Comandos de TortoiseIDiff ............................................................................... 167

    E. Referencia cruzada del interface de lnea de comandos ..................................................... 169E.1. Convenciones y reglas bsicas ........................................................................... 169E.2. Comandos de TortoiseSVN ............................................................................... 169

    E.2.1. Obtener ............................................................................................... 169E.2.2. Actualizar ............................................................................................ 169E.2.3. Actualizar a la revisin .......................................................................... 170E.2.4. Confirmar ............................................................................................ 170E.2.5. Diff .................................................................................................... 170E.2.6. Mostrar registro .................................................................................... 171E.2.7. Comprobar modificaciones ..................................................................... 171E.2.8. Grfico de revisin ............................................................................... 171E.2.9. Navegador de repositorios ...................................................................... 171E.2.10. Editar conflictos .................................................................................. 172E.2.11. Resuelto ............................................................................................ 172E.2.12. Renombrar ......................................................................................... 172E.2.13. Eliminar ............................................................................................ 172E.2.14. Revertir ............................................................................................. 172E.2.15. Limpieza ........................................................................................... 172E.2.16. Obtener bloqueo ................................................................................. 172E.2.17. Quitar bloqueo .................................................................................... 172E.2.18. Ramas / Etiqueta ................................................................................. 173E.2.19. Cambiar ............................................................................................ 173E.2.20. Fusionar ............................................................................................ 173E.2.21. Exportar ............................................................................................ 173

  • TortoiseSVN

    vii

    E.2.22. Relocalizar ......................................................................................... 173E.2.23. Crear repositorio aqu .......................................................................... 174E.2.24. Aadir ............................................................................................... 174E.2.25. Importar ............................................................................................ 174E.2.26. Autora .............................................................................................. 174E.2.27. Aadir a la lista de ignorados ................................................................ 174E.2.28. Crear parche ....................................................................................... 174E.2.29. Aplicar parche .................................................................................... 174

    F. Detalles de implementacion ......................................................................................... 175F.1. Iconos sobreimpresionados ................................................................................ 175

    G. Asegurando Svnserve utilizando SSH ........................................................................... 177G.1. Preparando un servidor Linux ........................................................................... 177G.2. Preparando un servidor Windows ....................................................................... 177G.3. Herramientas de cliente SSH para utilizar con TortoiseSVN .................................... 178G.4. Creando certificados OpenSSH .......................................................................... 178

    G.4.1. Crear claves utilizando ssh-keygen .......................................................... 178G.4.2. Crear claves utilizando PuTTYgen ........................................................... 178

    G.5. Comprobacin utilizando PuTTY ....................................................................... 178G.6. Comprobando SSH con TortoiseSVN ................................................................. 179G.7. Variantes de configuracin SSH ........................................................................ 180

    Glosario ....................................................................................................................... 182ndice .......................................................................................................................... 186

  • viii

    Lista de figuras2.1. Un sistema tpico cliente/servidor .................................................................................. 52.2. El problema a evitar .................................................................................................... 62.3. La solucin bloquear-modificar-desbloquear .................................................................... 72.4. La solucin copiar-modificar-fusionar ............................................................................. 82.5. ...Copiar-modificar-fusionar continuado ........................................................................... 92.6. El sistema de ficheros del repositorio ............................................................................ 112.7. El repositorio ........................................................................................................... 134.1. El men de TortoiseSVN para carpetas no versionadas ..................................................... 335.1. Explorador mostrando iconos sobreimpresionados ........................................................... 395.2. Men contextual para un directorio bajo el control de versiones ......................................... 405.3. Men archivo del explorador para un acceso directo en una carpeta versionada ...................... 415.4. Men de arrastre con el botn derecho para un directorio bajo el control de versiones ............. 425.5. Dilogo de autentificacin .......................................................................................... 435.6. El dilogo Importar ................................................................................................... 445.7. El dilogo Obtener .................................................................................................... 485.8. El dilogo de Confirmacin ........................................................................................ 505.9. El corrector ortogrfico del dilogo de Confirmacin ....................................................... 535.10. El dilogo Progreso mostrando el progreso de una confirmacin ....................................... 545.11. Dilogo de progreso mostrando una actualizacin terminada ............................................ 555.12. Explorador mostrando iconos sobreimpresionados ......................................................... 585.13. Comprobar modificaciones ........................................................................................ 605.14. Dilogo de confirmacin con listas de cambios ............................................................. 635.15. El dilogo de Registro de revisiones ........................................................................... 655.16. El panel superior del dilogo de Registro de revisiones con el men contextual .................... 665.17. Men contextual del panel superior para 2 revisiones seleccionadas ................................... 675.18. El panel inferior del dilogo de Registro con el men contextual ...................................... 685.19. El dilogo de registro mostrando revisiones con registro de fusin .................................... 705.20. Histograma de confirmaciones por autor ...................................................................... 725.21. Grfico de tarta de confirmaciones por autor ................................................................ 725.22. Grfico de confirmaciones por fecha ........................................................................... 735.23. El dilogo Comparar Revisiones ................................................................................ 765.24. El visor de diferencias de imgenes ............................................................................ 775.25. Men contextual del explorador para ficheros no versionados .......................................... 795.26. Men de arrastre con el botn derecho para un directorio bajo el control de versiones ............ 805.27. Men contextual del explorador para ficheros no versionados .......................................... 815.28. Men contextual del explorador para ficheros versionados ............................................... 835.29. Dilogo de Revertir ................................................................................................. 865.30. Pgina de propiedades del Explorador, pestaa Subversion .............................................. 885.31. Pgina de propiedades de Subversion .......................................................................... 895.32. Aadiendo propiedades ............................................................................................. 905.33. El dilogo Rama/Etiqueta .......................................................................................... 955.34. El dilogo Cambiar .................................................................................................. 975.35. El asistente de fusionado - Seleccionar el rango de revisiones .......................................... 995.36. El asistente de fusin - Fusionar reintegracin ............................................................. 1005.37. El asistente de fusin - Fusin de rboles ................................................................... 1015.38. El dilogo Informacin de conflicto de fusin ............................................................. 1045.39. El dilogo Fusionar reintegracin .............................................................................. 1045.40. El dilogo Bloquear ............................................................................................... 1065.41. El dilogo Comprobar modificaciones ....................................................................... 1075.42. El dilogo Crear parche .......................................................................................... 1085.43. El dilogo Anotar / Autora ..................................................................................... 1105.44. TortoiseBlame ....................................................................................................... 1115.45. El navegador de repositorios .................................................................................... 1135.46. Un grfico de revisiones ......................................................................................... 1155.47. El dilogo Exportar-desde-URL ................................................................................ 118

  • TortoiseSVN

    ix

    5.48. El dilogo Relocalizar ............................................................................................ 1195.49. Dilogo de ejemplo de la interaccin con el gestor de incidencias .................................... 1235.50. El dilogo de Configuracin, pgina General .............................................................. 1255.51. El dilogo Configuracin, pgina de Men contextual ................................................... 1275.52. El dilogo Configuracin, pgina de Dilogos 1 .......................................................... 1285.53. El dilogo Configuracin, pgina de Dilogos 2 .......................................................... 1295.54. El dilogo Configuracin, pgina de Colores ............................................................... 1315.55. El dilogo Configuracin, pgina de Sobreimpresin de iconos ....................................... 1325.56. El dilogo Configuracin, pgina de Conjunto de iconos ............................................... 1355.57. El dilogo Configuracin, pgina de Red ................................................................... 1355.58. El dilogo Configuracin, pgina de Visor de diferencias .............................................. 1365.59. El dilogo Configuracin, dilogo de Diferencias/Fusin avanzadas ................................. 1395.60. El dilogo Configuracin, pgina de Datos almacenados ............................................... 1405.61. El dilogo Configuracin, pgina Cach de registro ...................................................... 1415.62. El dilogo Configuracin, pgina Estadsticas de la cach de registro ............................... 1425.63. El dilogo Configuracin, pgina de scripts gancho ...................................................... 1445.64. El dilogo Configuracin, configurar scripts gancho ..................................................... 1445.65. El dilogo de Configuracin, pgina Integracin con control de incidencias ....................... 1465.66. El dilogo Configuracin, pgina TortoiseBlame ......................................................... 147C.1. El dilogo de Actualizacin ...................................................................................... 161

  • xLista de tablas2.1. URLs de acceso al repositorio ..................................................................................... 123.1. Configuracin de httpd.conf de Apache ................................................................... 196.1. Lista de opciones de lnea de comandos disponible ........................................................ 1506.2. Lista de opciones de lnea de comandos disponible ........................................................ 1516.3. mtodos de automatizacin/COM soportados ................................................................ 152C.1. Entradas de men y sus valores ................................................................................. 162D.1. Lista de comandos y opciones disponibles ................................................................... 165D.2. Lista de las opciones disponibles ............................................................................... 167

  • xi

    Prefacio

    Trabaja en equipo? Alguna vez le ha ocurrido que estaba trabajando en un fichero, y alguien ms tambin 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 haba hecho? Alguna

    vez ha querido ver cmo estaba un fichero hace tiempo?

    Alguna vez ha encontrado un error en su proyecto y ha querido saber cundo se introdujo ese erroren sus ficheros?

    Si ha respondido s a alguna de las preguntas anteriores, entonces TortoiseSVN est hecho para usted!Siga leyendo para saber cmo puede TortoiseSVN ayudarle en su trabajo. No es tan dificil.

    1. AudienciaEste libro est escrito para usuarios informticos que quieren usar Subversion para manejar sus datos,pero no estn cmodos usando el cliente de lnea de comandos para hacerlo. Dado que TortoiseSVN esuna extensin del shell de Windows, se asume que el usuario est familiarizado con el Explorador dewindows y sabe cmo usarlo.

    2. Gua de LecturaEste Prefacio le ofrece una breve explicacin sobre el proyecto TortoiseSVN, la comunidad de gente quetrabaja en l, y las condiciones de licencia para utilizarlo y distribuirlo.La Captulo 1, Introduccin expone qu es TortoiseSVN, lo que hace, de dnde viene y las bases parainstalarlo en su PC.

    En los Captulo 2, Conceptos bsicos le ofrecemos una breve introduccin al sistema de control derevisiones Subversion que es la base de TortoiseSVN. Est prestado de la documentacin del proyectoSubversion y explica las diferentes formas de control de versiones y cmo funciona Subversion.

    Incluso muchos de los usuarios de Subversion nunca tendrn que preparar un servidor por ellos mismos.El siguiente captulo trata sobre cmo preparar dicho servidor, y es til para los administradores.

    El captulo sobre el Captulo 4, El repositorio ilustra cmo se prepara un repositorio local, lo que es tilpara probar Subversion y TortoiseSVN utilizando un nico PC. Tambin le informa sobre las bases dela administracin de repositorios, algo que tambin es relevante para los repositorios que se encuentranen un servidor.

    La Captulo 5, Gua de uso diario es la seccin ms importante, ya que le explica todas las caractersticasprincipales de TortoiseSVN y cmo utilizarlas. Tiene la forma de un tutorial, empezando con obteneruna copia de trabajo, modificarla, confirmar los cambios, etc. Luego avanza a temas ms avanzados.Captulo 6, El programa SubWCRev es un programa adicional que se incluye con TortoiseSVN, y quepuede extraer informacin de su copia de trabajo y escribirla en un fichero. Esto es til para incluirinformacin de compilacin en sus proyectos.

    La seccin Apndice B, Cmo...? responde algunas preguntas frecuentes sobre la realizacin de tareasque no estn cubiertas explcitamente en ninguna otra parte.

  • Prefacio

    xii

    La seccin Apndice D, Automatizando TortoiseSVN le muestra cmo puede invocar los dilogos GUIde TortoiseSVN desde la lnea de comandos. Esto es til para scripts donde se necesite la interaccindel usuario.

    La Apndice E, Referencia cruzada del interface de lnea de comandos le muestra una correlacin entrelos comandos de TortoiseSVN y sus equivalentes en el cliente de lnea de comandos de Subversionsvn.exe.

    3. TortoiseSVN es gratis!TortoiseSVN es gratis. No tiene que pagar por l, y puede usarlo para lo que quiera. Est desarrolladobajo la Licencia Pblica General GNU (GPL).

    TortoiseSVN es un proyecto de Cdigo Abierto. Eso significa que tiene acceso completo al cdigo fuentede este programa. Puede verlo en este enlace http://tortoisesvn.tigris.org/svn/tortoisesvn/. (Usuario:guest,deje en blanco la contrasea). La versin ms reciente (donde estamos trabajando) se encuentra bajo /trunk/, las versiones oficiales estn bajo /tags/.

    4. ComunidadTanto TortoiseSVN como Subversion estn siendo desarrollados por una comunidad de gente que trabajaen estos proyectos. Provienen de diferentes pases por todo el mundo y se juntan para crear programasestupendos.

    5. ReconocimientosTim Kemp

    por fundar el proyecto TortoiseSVN

    Stefan Kngpor el duro trabajo de llevar a TortoiseSVN a lo que es hoy

    Lbbe Onkenpor los bonitos iconos, el logo, la caza de errores, por traducir y administrar traducciones

    Simon Largepor ayudar con la documentacin y en la caza de bugs

    El libro de Subversionpor la gran introduccin a Subversion y su captulo 2 que hemos copiado aqu

    El proyecto Tigris Stylepor algunos de los estilos que estn siendo reutilizados en esta documentacin

    Nuestros colaboradorespor los parches, informes de errores y nuevas ideas, y por ayudar a otros respondiendo preguntasde nuestra lista de correo.

    Nuestros donantespor la cantidad de horas de entretenimiento con la msica que nos enviaron

    6. Terminologa usada en este documentoPara hacer ms facil la lectura de la documentacin, los nombres de todas las pantallas y mens deTortoiseSVN estn remarcados en un tipo de letra diferente. Por ejemplo, el Dilogo de Registro.

    Las opciones de men se indican con una flecha. TortoiseSVN Mostrar Registro significa:seleccione Mostrar Registro desde el men contextual TortoiseSVN.

  • Prefacio

    xiii

    Donde aparezca un men contextual local dentro de uno de los dilogos de TortoiseSVN, se mostraras: Men Contextual Grabar como ...

    Los botones del interfaz de usuario se indican como este: Pulse OK para continuar.

    Las acciones del usuario se indican en negrita. Alt+A: pulse la tecla Alt en su teclado, y mientras lamantiene pulsada, pulse tambin la tecla A. Arrastre-con-botn-derecho: pulse el botn derecho del ratn,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 tambin diferente.

    Importante

    Las notas importantes estn marcadas con un icono.

    Sugerencia

    Trucos que le facilitan la vida.

    Atencin

    Lugares donde debe tener cuidado con lo que hace.

    Aviso

    Donde hay que tener un cuidado extremo, porque puede ocurrir corrupcin de datos u otrascosas horribles si se ignoran estas advertencias.

  • 1Captulo 1. IntroduccinEl control de versiones es el arte de manejar cambios en la informacin. Ha sido desde siempre unaherramienta crtica para los programadores, quienes tpicamente emplean su tiempo haciendo pequeoscambios al software y luego deshaciendo o comprobando esos cambios al da siguiente. Imagine unequipo de estos programadores trabajando concurrentemente - y quizs tambin simultneamente en losmismos ficheros! - y podr ver por qu se necesita un buen sistema para manejar el caos potencial.

    1.1. Qu es TortoiseSVN?TortoiseSVN es un cliente gratuito de cdigo 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 enun repositorio central. El repositorio es prcticamente 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 quepueda recuperar versiones antiguas de sus ficheros y examinar la historia de cundo y cmo cambiaronsus datos, y quin hizo el cambio. Esta es la razn por la que mucha gente piensa que Subversion, y lossistemas de control de versiones en general, son una especie de mquinas del tiempo.

    Algunos sistemas de control de versiones tambin son sistemas de manejo de configuracin delsoftware (SCM). Estos sistemas estn diseados especficamente para manejar rboles de cdigo fuente,y tienen muchas caractersticas que son especficas para el desarrollo de software - tales como elentendimiento nativo de los lenguajes de programacin, o proporcionan herramientas para compilarsoftware. Subversion, sin embargo, no es uno de estos sistemas; es un sistema general que puede serutilizado para manejar cualquier coleccin de ficheros, incluyendo cdigo fuente.

    1.2. Historia de TortoiseSVNEn 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 deWindows se inspir por el cliente similar que ya exista para CVS llamado TortoiseCVS.

    Tim estudi el cdigo fuente de TortoiseCVS y lo utiliz como base de TortoiseSVN. Entonces inici elproyecto, registr el dominio tortoisesvn.org y puso el cdigo fuente en lnea. Durante ese tiempo,Stefan Kng estaba buscando un sistema de control de versiones bueno y gratuito, y encontr Subversiony el cdigo fuente de TortoiseSVN. Como TortoiseSVN todava no estaba listo para usarse, se uni alproyecto y empez a programar. Pronto reescribi la mayor parte del cdigo existente y empez a aadircomandos y caractersticas, hasta el punto de que no qued nada del cdigo original.

    Segn se fue estabilizando Subversion, atrajo ms y ms usuarios que tambin empezaron a utilizarTortoiseSVN como su cliente de Subversion. Los usuarios de TortoiseSVN se incrementaron rpidamente(y an crecen da a da). Entonces Lbbe Onken se ofreci a ayudar con algunos iconos ms vistosos yun logo para TortoiseSVN. Y tambin se encarga de la pgina web y de administrar las traducciones.

    1.3. Caractersticas de TortoiseSVNQu hace de TortoiseSVN tan buen cliente de Subversion? Aqu hay una pequea lista de suscaractersticas.

    Integracin con el shell de Windows

    TortoiseSVN se integra perfectamente en el shell de Windows (por ejemplo, el explorador). Estosignifica que puede seguir trabajando con las herramientas que ya conoce. Y que no tiene quecambiar a una aplicacin diferente cada vez que necesite las funciones del control de versiones!

    Y ni siquiera est obligado a usar el Explorador de Windows. Los mens contextuales deTortoiseSVN tambin funcionan en otros administradores de archivos, y en el dilogo Fichero/Abrir

  • Introduccin

    2

    que es comn a la mayora de aplicaciones estndar de Windows. Sin embargo, debe tener en cuentaque TortoiseSVN est desarrollado con la mirada puesta en hacerle extensin del Explorador deWindows. Por este motivo, puede que en otras aplicaciones la integracin no sea tan completa y que,por ejemplo, los iconos sobreimpresionados en las carpetas no se muestren.

    Iconos sobreimpresionadosEl estado de cada carpeta y fichero versionado se indica por pequeos iconos sobreimpresionados.De esta forma, puede ver fcilmente el estado en el que se encuentra su copia de trabajo.

    Fcil acceso a los comandos de SubversionTodos los comandos de Subversion estn disponibles desde el men contextual del explorador.TortoiseSVN aade su propio submen all.

    Dado que TortoiseSVN es un cliente de Subversion, tambin queremos ensearle algunas de lascaractersticas del propio Subversion:

    Versionado de carpetasCVS slo controla la historia de ficheros individuales, pero Subversion implementa un sistemavirtual de ficheros versionados que sigue la pista de los cambios en todos los rboles de directoriosen el tiempo. Los ficheros y los directorios estn versionados. Como resultado, hay comandos realesen el lado del cliente como mover y copiar que operan en ficheros y directorios.

    Confirmaciones atmicasUna confirmacin o bien entra en el repositorio completamente, o no entra en absoluto. Esto permitea los desarrolladores construir y confirmar cambios como unidades lgicas.

    Metadatos versionadosCada fichero y directorio tiene un conjunto invisible de propiedades adjuntos. PUede inventarse yalmacenar cualquier par de clave/valor que desee. Las propiedades se versionan en el tiempo, igualque el contenido de los ficheros.

    Eleccin de capas de redSubversion tiene una nocin abstracta del acceso al repositorio, hacindo que la gente puedaimplementar nuevos mecanismos de red fcilmente. El avanzado servidor de red de Subversion esun mdulo para el servidor web Apache, que habla una variante de HTTP llamada WebDAV/DeltaV.Esto dota a Subversion una gran ventaja en estabilidad e interoperatividad, y proporciona variascaractersticas importantes gratis: autentificacin, autorizacin, compresin de la transmisin ynavegacin del repositorio, por ejemplo. Tambin est disponible un proceso servidor de Subversionindependiente. Este servidor habla un protocolo propio que puede encapsularse fcilmente sobre ssh.

    Manejo de datos consistenteSubversion expresa las diferencias entre ficheros usando un algoritmo de diferenciacin binario, quefunciona exactamente igual tanto en ficheros de texto (legibles por los humanos) como en ficherosbinarios (que no son legibles por nosotros). Ambos tipos de ficheros se almacenan igualmentecomprimidos en el repositorio, y las diferencias se transmiten en ambas direcciones por la red.

    Etiquetado y creacin de ramas eficienteEl coste de crear una rama o una etiqueta no necesita ser proporcional al tamao del proyecto.Subversion crea ramas y etiquetas smplemente copiando el proyecto, utilizando un mecanismosimilar a los vnculos duros. Por tanto estas operaciones llevan un tiempo pequeo y constante, ymuy poco espacio en el repositorio.

    ExtensibilidadSubversion no tiene lastre histrico; est implementado como una coleccin de libreras Ccompartidas con APIS bien definidas. Esto hace que Subversion sea extremadamente mantenible yse pueda utilizar por otras aplicaciones y lenguajes.

  • Introduccin

    3

    1.4. Instalando TortoiseSVN1.4.1. Requerimientos del sistema

    TortoiseSVN se ejecuta en Windows 2000 SP2, Windows XP o superiores. Windows 98, Windows MEy Windows NT4 ya no se soportan desde TortoiseSVN 1.2.0, pero an puede descargar las versiones msantiguas si realmente las necesita.

    Si encuentra algn problema durante o despus de la instalacin de TortoiseSVN, por favor visite primeroApndice A, Preguntas ms frecuentes (FAQ).

    1.4.2. Instalacin

    TortoiseSVN viene con un instalador fcil de utilizar. Haga doble click en el fichero de instalacin y sigalas instrucciones. El instalador se encargar del resto.

    Importante

    Necesita privilegios de Administrador para instalar TortoiseSVN.

    1.4.3. Packs de idiomas

    El interfaz de usuario de TortoiseSVN se ha traducido a muchos idiomas distintos, por lo que es posibleque pueda descargar un pack de idioma que se ajuste a sus necesidades. Puede encontrar los packs deidioma en nuestra pgina de estado de las traducciones [http://tortoisesvn.net/translation_status]. Y sian no hay un pack de idioma disponible, por qu no unirse al equipo y enviar su propia traduccin ;-)

    Cada pack de idioma est empaquetado como un instalador .exe. Slo tiene que ejecutar el programade instalacin y seguir las instrucciones. La siguiente vez que reinicie, tendr disponible la traduccin.

    1.4.4. Corrector ortogrfico

    TortoiseSVN incluye un corrector ortogrfico que le permite comprobar sus mensajes de registro enlas confirmaciones. Esto es especialmente til si el idioma del proyecto no es su lengua materna. Elcorrector ortogrfico utiliza los mismos diccionarios que OpenOffice [http://openoffice.org] y Mozilla[http://mozilla.org].

    El instalador automticamente aade los diccionarios de ingls de EE.UU. y de Reino Unido. Si deseatenerlos en otros idiomas, la opcin ms sencilla es smplemente instalar uno de los packs de idiomasde TortoiseSVN. Eso instalar los ficheros de diccionario adecuados junto con el interface de usuario deTortoiseSVN en ese idioma. La siguiente vez que reinicie, el diccionario tambin estar disponible.

    O puede instalar los diccionarios usted mismo. Si tiene OpenOffice o Mozilla instalados, puedecopiar esos diccionarios, que se encuentran en las carpetas de instalacin de esas aplicaciones. Si no,deber descargar los ficheros de diccionario necesarios desde http://wiki.services.openoffice.org/wiki/Dictionaries

    Una vez que tenga los ficheros de diccionario, seguramente deber cambiarlos de nombre para que losnombres de los ficheros slo contengan los caracteres del idioma. Por ejemplo: es_ES.aff

    es_ES.dic

    Luego slo tiene que copiarlos en la subcarpeta bin de la carpeta de instalacin de TortoiseSVN.Normalmente sta ser C:\Archivos de programa\TortoiseSVN\bin. Si no desea jugar con

  • Introduccin

    4

    la subcarpeta bin, tambin puede poner los ficheros del corrector ortogrfico en C:\Archivos deprograma\TortoiseSVN\Languages. Si esa carpeta no est ah, tendr que crearla primero. Lasiguiente vez que inicie TortoiseSVN, podr utilizar el corrector ortogrfico.

    Si instala mltiples diccionarios, TortoiseSVN utilizar estas reglas para seleccionar cul utilizar.

    1. Compruebe la configuracin tsvn:projectlanguage. Lea Seccin 5.17, Configuracin delproyecto para encontrar informacin sobre cmo se establecen propiedades de proyecto.

    2. Si no se ha establecido un idioma del proyecto, o ese idioma no est instalado, intntelo con el idiomaque corresponde al de Windows.

    3. Si no funciona el idioma exacto de Windows, pruebe el idioma Base, por ejemplo, es_MX (Espaol-Mxico) se transformara en es_ES (Espaol).

    4. Si nada de lo anterior funciona, entonces el idioma por defecto es el Ingls, que se incluye con lainstalacin estndar.

  • 5Captulo 2. Conceptos bsicosEste captulo es una versin ligeramente modificada del mismo captulo en el libro de Subversion. Unaversin en lnea del libreo de Subversion est disponible aqu: http://svnbook.red-bean.com/.

    Este captulo es una introduccin corta e informal a Subversion. Si el control de versiones es nuevopara usted, este captulo es definitivamente para usted. Empezamos con una discusin de los conceptosgenerales de control de versiones, nos hacemos camino dentro de las ideas especficas que hay trasSubversion, y mostramos algunos ejemplos sencillos de Subversion en accin.

    Incluso aunque los ejemplos en este captulo muestran a gente compartiendo colecciones de cdigo fuentede programas, tenga en cuenta que Subversion puede manejar cualquier colleccin de ficheros - no estlimitado a ayudar a los programadores de ordenadores.

    2.1. El repositorio

    Subversion es un sistema centralizado para compartir informacin. En su ncleo est un repositorio, quees un almacn central de datos. El respositorio almacena informacin en forma de un rbol de ficheros- una jerarqua tpica de ficheros y directorios. Cualquier nmero de clientes se conectan al repositorio,y luego leen o esriben esos ficheros. Al escribir datos, el cliente hace que la informacin est disponiblepara los otros; al leer los datos, el cliente recibe la informacin de los dems.

    Figura 2.1. Un sistema tpico cliente/servidor

    Y sto por qu es interesante? Por ahora, eso suena a la definicin tpica de un servidor de ficherostpico. Y de hecho, el repositorio es una clase de servidores de ficheros, pero no el habitual. Lo que hace alrepositorio de Subversion especial es que recuerda todos los cambios que alguna vez se hayan escrito enl: cada cambio en cada fichero, e incluso los cambios en el propio rbol de directorios, como el aadir,borrar o reorganizar ficheros y directorios.

    Cuando un cliente lee datos de un repositorio, normalmente ve nicamente la ltima versin del rbolde ficheros. Pero el cliente tambin tiene la capacidad de ver estados previos del sistema de ficheros.Por ejemplo, un cliente puede hacer preguntas histricas, como qu contena este directorio el ltimomircoles?, o quin fue la ltima persona que cambi este fichero, y qu cambios hizo? Esta es laclase de preguntas que forman el corazn de cualquier sistema de control de versiones: son sistemas queestn diseados para guardar y registrar los cambios a los datos a lo largo del tiempo.

    2.2. Modelos de versionadoTodos los sistemas de control de versiones tienen que resolver los mismos problemas fundamentales:cmo permitir el sistema compartir informacin entre usuarios, pero evitando que ellos accidentalmentese pisen unos a otros? Es demasiado sencillo que los usuarios accidentalmente sobreescriban los cambiosdel otro en el repositorio.

  • Conceptos bsicos

    6

    2.2.1. El problema de compartir ficheros

    Considere este escenario: suponga que tiene dos compaeros de trabajo, Harry y Sally. Cada uno decideeditar el mismo fichero del repositorio a la vez. Si Harry graba sus cambios en el repositorio primero, elposible que (unos momentos despus) Sally pueda accidentalmente sobreescribirlos con su propia versinnueva del fichero. Mientras que la versin del fichero de Harry no se ha perdido para siempre (porqueel sistema recuerda cada cambio), cualquier cambio que Harry hizo no estar en la versin nueva delfichero de Sally, porque para empezar ella nunca vi los cambios de Harry. El trabajo de Harry est anefectivamente perdido - o al menos falta en la ltima versin del fichero - y probablemente por accidente.Esta es una situacin que definitivamente tenemos que evitar!

    Figura 2.2. El problema a evitar

    2.2.2. La solucin bloquear-modificar-desbloquear

    Muchos sistemas de control de versiones utilizan un modelo bloquear-modificar-desbloquear paraenfrentarse a este problema, que es una solucin muy simple. En estos sistemas, el repositorio slo permiteque una persona cambie un fichero al mismo tiempo. Harry primero debe bloquear el fichero antes deque pueda empezar a hacer cambios en l. Bloquear un fichero se parece mucho a tomar prestado un librode la biblioteca; si Harry ha bloqueado un fichero, entonces Sally no puede hacer ningn cambio en l.Si ella intenta bloquear el fichero, el repositorio le denegar la peticin. Todo lo que ella puede haceres leer el fichero, y esperar a que Harry termine sus cambios y libere su bloqueo. Despus de que Harrydesbloquee el fichero, se acab su turno, y ahora Sally puede bloquear y editar.

  • Conceptos bsicos

    7

    Figura 2.3. La solucin bloquear-modificar-desbloquear

    El problema con el modelo bloquear-modificar-desbloquear es que es un poco restrictivo, y a menudo seconvierte en una calle cortada para los usuarios:

    El bloqueo causa muchos problemas administrativos. A veces Harry bloquear un fichero y luego seolvidar de ello. Mientras tanto, dado que Sally est an esperando para editar el fichero, sus manosestn atadas. Y Harry se va de vacacioens. Ahora Sally tiene que buscar a un administrador para quelibere el bloqueo de Harry. La situacin acaba causando un montn de retraso y prdida de tiempoinnecesarios.

    El bloqueo puede causar procesos en serie innecesarios. Qu ocurre si Harry est editando el iniciode un fichero de texto, y Sally simplemente quiere cambiar la parte final del mismo fichero? Esoscambios no se superponen en absoluto. Ellos podran fcilmente editar el fichero de forma simultnea,y no habra ningn dao, asumiendo que los cambios se fusionaran correctamente. No hay necesidadde que se turnen en esta situacin.

    El bloqueo puede causar una falsa sensacin de seguridad. Imagine que Harry bloquea y edita elfichero A, mientras Sally simultneamente bloquea y edita el fichero B. Pero suponga que A y Bdependen uno del otro, y que los cambios hechos a cada uno son semnticamente incompatibles. Derepente 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 sensacin de falsa seguridad. Es fcil para Harry y Sally imaginarque al bloquear los ficheros, cada uno est empezando una tarea segura y aislada, y por tanto les inhibede discutir sus cambios incompatibles en un momento temprano.

    2.2.3. La solucin copiar-modificar-fusionar

    Subversion, CVS y otros sistemas de control de versiones utilizan un modelo copiar-modificar-fusionarcomo alternativa al bloqueo. En este modelo, el cliente de cada usuario lee el repositorio y crea una copiade trabajo personal del fichero o del proyecto. Luego, los usuarios trabajan en paralelo, modificando suscopias privadas. Finalmente, las copias privadas se fusionan juntas en una nueva versin final. El sistemade control de versiones a menudo ofrece ayuda en la fusin, pero al final la persona es la responsablede hacer que ocurra correctamente.

  • Conceptos bsicos

    8

    Aqu hay un ejemplo. Digamos que tanto Harry como Sally crean copias de trabajo del mismo proyecto,copiado del repositorio. Ellos trabajan concurrentemente, y hacen los cambios al mismo fichero A dentrode sus copias. Sally es la primera en grabar sus cambios en el repositorio. Cuando Harry intenta grabarsus cambios ms 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 loque Harry le pide a su cliente que fusione cualquier nuevo cambio del repositorio dentro de su copia detrabajo del fichero A. Lo ms seguro es que los cambios de Sally no se superpongan a los suyos; por loque una vez que ambos conjuntos de cambios se han integrado, l graba su copia de trabajo de nuevoen el repositorio.

    Figura 2.4. La solucin copiar-modificar-fusionar

  • Conceptos bsicos

    9

    Figura 2.5. ...Copiar-modificar-fusionar continuado

    Pero qu ocurre si los cambios de Sally s se superponen a los cambios de Harry? Qu hacemosentonces? La situacin se denomina un conflicto, y normalmente no es mucho problema. Cuando Harryle pide a su cliente que fusione los ltimos cambios del repositorio en su copia de trabajo, su copiadel fichero A se marca de alguna forma como que est en un estado de conflicto: l ser capaz de verambos conjuntos de cambios conflictivos, y manualmente podr elegir entre ellos. Tenga en cuenta queel software no puede resolver conflictos automticamente; slo los humanos son capaces de entender yhacer las elecciones necesarias de forma inteligente. Una vez que Harry haya resuelto manualmente loscambios que se superponan (quizs discutiendo el conflicto con Sally!), puede volcar de forma segurael fichero fusionado al repositorio.

    El modelo copiar-modificar-fusionar puede sonar un poco catico, pero en la prctica, funcionaextremadamente bien. Los usuarios pueden trabajar en paralelo, sin que tengan que esperar nunca unopor otro. Cuando trabajan en los mismos ficheros, resulta que la mayora de los cambios concurrentes nose superponen en absoluto; los conflictos no son frecuentes. Y el tiempo que lleva resolver conflictos esmucho menor que el tiempo perdido por un sistema bloqueante.

    Al final, todo se reduce a un factor crtico: la comunicacin entre usuarios. Cuando los usuarios secomunican de forma pobre, aumentan los conflictos sintcticos y semnticos. No hay sistema capazde forzar a los usuarios a comunicarse perfectamente, y no hay sistema que pueda detectar conflictossemnticos. Por lo que no hay motivo para que se le prometa falsamente que un sistema con bloqueosprevendr de alguna forma los conflictos; en la prctica, el bloqueo parece inhibir la productividad msque otra cosa.

    Hay una situacin comn donde el modelo bloquear-modificar-desbloquear resulta mejor, y es cuandotiene ficheros no-fusionables. Por ejemplo si su repositorio contiene algunas imgenes grficas, y dospersonas cambian la imagen a la vez, no hay forma de fusionar esos cambios. O Harry o Sally perdernsus cambios.

    2.2.4. Qu hace Subversion?Subversion utiliza la solucin copiar-modificar-mezclar por defecto, y en muchos casos esto es todo loque necesitar. Sin embargo, desde la Versin 1.2, Subversion tambin admite bloqueo de ficheros, por

  • Conceptos bsicos

    10

    lo que si tiene ficheros no-fusionables, o si simplemente est forzado a una poltica de bloqueo por ladireccin, Subversion seguir teniendo las caractersticas que necesita.

    2.3. Subversion en accin2.3.1. Copias de trabajo

    Ya ha odo hablar sobre las copias de trabajo; ahora le demostraremos cmo las crea y las utiliza el clientede Subversion.

    Una copia de trabajo de Subversion es un rbol de directorios ordinario en su sistema local, conteniendouna coleccin de ficheros. Puede editar estos ficheros como desee, y si son ficheros de cdigo 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 estn disponibles paralos dems, a menos que se lo pida explcitamente.

    Despus de que haya hecho algunos cambios en los ficheros dentro de su copia de trabajo y hayaverificado que funcionan correctamente, Subversion le provee de comandos para publicar sus cambiospara los dems que trabajan con usted en su proyecto (escribiendo en el repositorio). Si los dems publicansus propios cambios, Subversion le provee de comandos para fusionar esos cambios dentro de su copiade trabajo (leyendo desde el repositorio).

    Una copia de trabajo tambin 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 trabajocontiene un subdirectorio llamado .svn, tambin conocido como el directorio administrativo de la copiade trabajo. Los ficheros dentro de los directorios administrativos ayudan a Subversion a reconocer quficheros contienen cambios no publicados, y qu ficheros estn desactualizados respecto al trabajo delos dems.

    Un repositorio tpico de Subversion a menudo contiene los ficheros (o el cdigo fuente) de variosproyectos; usualmente, cada proyecto es un subdirectorio en el rbol de ficheros del repositorio. Con estadisposicin, una copia de trabajo de un usuario normalmente correspondern a un subrbol particulardel repositorio.

    Por ejemplo, suponga que tiene un repositorio que contiene dos proyectos de software.

  • Conceptos bsicos

    11

    Figura 2.6. El sistema de ficheros del repositorio

    En otras palabras, el directorio raz del repositorio tiene dos subdirectorios, paint y calc.

    Para obtener una copia de trabajo, primero debe obtener algn subrbol del repositorio. (El trminoobtener puede sonar como que tenga algo que ver con el bloqueo o la reserva de recursos, pero no escierto; simplemente crea una copia privada del proyecto para usted).Suponga que ha hecho cambios a button.c. Dado que el directorio .svn recuerda la fecha demodificacin y los contenidos originales del fichero, Subversion puede decirle que ha cambiado elfichero. Sin embargo, Subversion no hace pblicos sus cambios hasta que explcitamente se lo pida.El acto de publicar sus cambios se conoce ms comnmente como confirmar (o enviar) los cambios alrepositorio.

    Para publicar sus cambios para los dems, puede utilizar el comando de Subversion commit.

    Ahora que sus cambios a button.c se han confirmado en el respositorio, si cualquier otro usuarioobtiene una copia de trabajo de /calc, vern sus cambios en la ltima versin del fichero.Suponga que tiene un colaborador, Sally, que obtuvo una copia de trabajo de /calc al mismo tiempoque usted. Cuando ha confirmado sus cambios en button.c, la copia de trabajo de Sally se queda sincambios; Subversion slo modifica las copias de trabajo cuando lo pide el usuario.Para poner al da su proyecto, Sally puede pedirle a Subversion actualizar su copia de trabajo, utilizandoel comando de Subversion actualizar. Esto incorporar sus cambios en la copia de trabajo de Sally, juntocon cualquier otro que se haya confirmado desde que ella lo obtuvo.

    Tenga en cuenta que Sally no necesita especificar qu ficheros actualizar; Subversion utiliza lainformacin en el directorio .svn, y ms informacin desde el repositorio, para decidir qu ficherosdeben ponerse al da.

  • Conceptos bsicos

    12

    2.3.2. URLs de repositorioLos repositorios de Subversion pueden ser accedidos por muchos mtodos diversos - en discos locales,o a travs de varios protocolos de red. La ruta de un repositorio es siempre, sin embargo, una URL. Elesquema URL indica el mtodo de acceso:

    Esquema Mtodo de accesofile:// Acceso directo al repositorio en el disco local o de red.http:// Acceso utilizando el protocolo WebDAV a un servidor Apache

    configurado para Subversion.https:// Lo mismo que http://, pero con encriptacin SSL.svn:// Acceso TCP/IP sin autentificacin utilizando un protocolo personalizado

    a un servidor svnserve.svn+ssh:// Acceso TCP/IP autentificado y encriptado utilizando un protocolo propio

    a un servidor svnserve.

    Tabla 2.1. URLs de acceso al repositorio

    En su mayora, las URLs de Subversion utilizan la sintaxis estndar, permitiendo que se especifiquennombres de servidor y nmeros de puertos como parte de la URL. El mtodo de acceso file:// seutiliza normalmente para el acceso local, aunque puede utilizarse con rutas UNC a equipos en red. LaURL por lo tanto toma la forma file://nombredeequipo/ruta/al/repositorio. Para lamquina local, la parte nombredeequipo de la URL debe estar o ausente o ser localhost. Por estarazn, las rutas locales normalmente aparecen con tres barras, file:///ruta/al/repositorio.

    Adems, los usuarios del esquema file:// en las plataformas Windows necesitarn utilizar unasintaxis estndar no oficial para acceder a los repositorios que estn en la misma mquina, pero en unaletra de unidad diferente de la unidad actual del cliente. Cualquiera de las siguientes sintaxis de URLfuncionarn, 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 formanativa (no-URL) de una ruta en Windows utiliza las barras contrarias.

    Puede acceder con seguridad a un repositorio FSFS utilizando una carpeta compartida de red, pero nopuede acceder a un repositorio BDB de esta forma.

    Aviso

    No cree o acceda a un repositorio Berkeley DB en una unidad de red compartida. No puedeexistir en un sistema de archivos remoto. Ni siquiera si tiene la unidad de red mapeadaa una letra de unidad. Si intenta usar Berkeley DB en una unidad de red compartida, losresultados son imprevisibles - puede ver desde el principio errores misteriosos, o puedenpasar meses antes de que descubra que su base de datos del repositorio est corrupta de unaforma inimaginable.

    2.3.3. Revisiones

    Una operacin svn commit puede publicar los cambios de cualquier nmero de ficheros y carpetas comouna nica transaccin atmica. En su copia de trabajo, puede cambiar el contenido de los ficheros, crear,

  • Conceptos bsicos

    13

    borrar, renombrar y copiar ficheros y directorios, y luego confirmar el conjunto completo de cambioscomo una unidad.

    En el repositorio, cada confirmacin se trata como una transaccin atmica: o bien todos los cambios dela confirmacin se llevan a cabo, o bien ninguno de ellos se realiza. Subversion aplica esta atomicidaden caso de errores en el programa, errores del sistema, problemas de red, y otras acciones del usuario.

    Cada vez que el repositorio acepta una confirmacin, crea un nuevo estado del rbol de ficheros, llamadorevisin. A cada revisin se le asigna un nmero natural nico, un nmero mayor que la revisin anterior.La revisin inicial de un repositorio recin creado se numera como cero, y consiste nicamente en undirectorio raz vaco.

    Una buena forma de visualizar el repositorio es como una serie de rboles. Imagine una fila de nmerosde revisiones, empezando en 0, de izquierda a derecha. Cada nmero de revisin tiene un rbol colgandodebajo, y cada rbol es una foto de cmo estaba el repositorio tras cada confirmacin.

    Figura 2.7. El repositorio

    Nmeros globales de revisin

    Al contrario que la mayora del resto de sistemas de control de versiones, los nmeros de revisin deSubversion se aplican a rboles completos, no a los ficheros individuales. Cada nmero de revisinselecciona un rbol entero, un estado particular del repositorio tras algn cambio confirmado. Otraforma de verlo es pensar que la revisin N representa el estado del repositorio tras la confirmacinN-sima. Cuando un usuario de Subversion habla de la "revision 5 de foo.c", realmente quierendecir "foo.c tal y como estaba en la revisin 5". Tenga en cuenta que, en general, las revisionesN 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 nicarevisin en el repositorio; pueden contener ficheros de varias revisiones.Por ejemplo, suonga que obtieneuna copia de trabajo de un repositorio cuya revisin ms reciente es la 4:

    calc/Makefile:4

  • Conceptos bsicos

    14

    integer.c:4 button.c:4

    En este momento, esta copia de trabajo corresopnde exactamente a la revisin 4 en el respositorio. Sinembargo, suponga que ha hecho cambios al fichero button.c, y confirme ese cambio. Asumiendoque no se haya llevado a cambio ninguna otra confirmacin, su confirmacin crear la revisin 5 en elrepositorio, 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 revisin 6. Si utiliza svnupdate para actualizar su copia de trabajo, obtendr sto:

    calc/Makefile:6 integer.c:6 button.c:6

    Los cambios de Sally a integer.c aparecern en su copia de trabajo, y su cambio estar an presenteen button.c. En este ejemplo, el texto de Makefile es idntico en las revisiones 4, 5, y 6, peroSubversion marcar su copia de trabajo de Makefile con la revisin 6 para indicar que an estactualizado. Por lo que, despus de que haga una actualizacin limpia en la parte superior de su copia detrabajo, generalmente obtendr exactamente una revisin del repositorio.

    2.3.4. Cmo se unen las copias de trabajo al repositorioPor cada fichero en un directorio de trabajo, Subversion grabar dos piezas esenciales de informacinen el rea administrativa .svn/:

    en qu revisin se basa su fichero de trabajo (lo que se denomina la revisin de trabajo), y una fecha que indica cundo se actualiz por ltima vez la copia local por el repositorio.

    Con esta informacin, hablando con el repositorio, Subversion puede decirle en cul de los siguientescuatro 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 ficheroen el repositorio desde su revisin de trabajo. Una confirmacin de ese fichero no har nada, y unaactualizacin de ese fichero no har nada.

    Cambiado localmente, y actualizadoEl fichero ha sido cambiado en el directorio de trabajo, y no se ha confirmado ningn cambio a esefichero en el repositorio desde su revisin base. Hay cambios locales que no se han confirmado en elrepositorio, por lo que al confirmar el fichero se conseguir publicar sus cambios, y al actualizarel fichero no se realizar nada.

    Sin cambios, y desactualizadoEl fichero no ha sido cambiado en el directorio de trabajo, pero ha sido cambiado en el repositorio.El fichero deber ser actualizado en algn momento, para actualizarlo con la revisin pblica. Uncomando confirmar sobre el fichero no har nada, y al actualizar el fichero se traern los ltimoscambios a su copia de trabajo.

    Cambiado localmente, y desactualizadoEl fichero se ha cambiado tanto en el directorio de trabajo como en el repositorio. Un comandoconfirmar sobre el fichero fallar con un error desactualizado. El fichero debera actualizarseprimero; al actualizar se intentar fusionar los cambios pblicos con los cambios locales. Si

  • Conceptos bsicos

    15

    Subversion no puede completar la fusin de una forma plausible automticamente, le dejar alusuario la tarea de resolver el conflicto.

    2.4. SumarioHemos cubierto un nmero de conceptos fundamentales de Subversion en este captulo:

    Hemos introducido las nociones de un repositorio central, la copia de trabajo del cliente, y la lista derboles de revisiones del repositorio.

    Hemos visto algunos ejemplos simples sobre cmo dos colaboradores pueden utilizar Subversion parapublicar y recibir los cambios de uno a otro, utilizando el modelo 'copiar-modificar-fusionar'.

    Hemos hablado un poco sobre la forma en la que Subversion controla y maneja la informacin en unacopia de trabajo.

  • 16

    Captulo 3. Preparando un servidorPara utilizar TortoiseSVN (o cualquier otro cliente de Subversion), necesita un lugar donde establecersus repositorios. Puede o bien almacenar sus repositorios de forma local y acceder a ellos utilizando elprotocolo file://, o puede ponerlos en un servidor y acceder a ellos con los protocolos http:// osvn://. Los dos protocolos de servidor tambin pueden estar encriptados. Utilice https:// o svn+ssh://. Este captulo le muestra paso a paso cmo puede preparar uno de estos servidores en unamquina Windows.

    Puede encontrar informacin ms detallada sobre las opciones del servidor de Subversion, y sobre cmoelegir la mejor arquitectura para su situacin, en el libro de Subversion bajo Configuracin del servidor[http://svnbook.red-bean.com/en/1.4/svn.serverconfig.html].

    Si no tiene un servidor y si trabaja solo, los repositorios locales son probablemente su mejor eleccin.Puede saltarse este captulo e ir directamente al Captulo 4, El repositorio.

    Si estaba pensando configurar un repositorio multiusuario en una unidad compartida de red, pinselo denuevo. Lea Seccin 4.1.4, Accediendo a un repositorio en una unidad de red para averiguar por qucreemos que eso es una mala idea.

    3.1. Servidor basado en Apache3.1.1. Introduccin

    La configuracin ms flexible de todas las instalaciones de servidor posibles para Subversion es la que sebasa en Apache. Aunque es un poco ms complicada de preparar, ofrece beneficios que otros servidoresno pueden dar:

    WebDAVEl servidor de Subversion basado en Apache utiliza el protocolo WebDAV que se utiliza por muchosotros programas. Por ejemplo, podra montar dicho repositorio como una Carpeta web en elexplorador de Windows y luego acceder a ella como cualquier otra carpeta en su sistema de ficheros.

    Navegando por el repositorioPuede apuntar su navegador a la URL del repositorio y navegar por sus contenidos sin tener un clientede Subversion. Esto da acceso a sus datos a un mayor crculo de usuarios.

    AutentificacinPuede utilizar cualquier mecanismo de autentificacin que Apache soporte, incluyendo SSPI yLDAP.

    SeguridadDado que Apache es muy estable y seguro, automticamente obtendr la misma seguridad para surepositorio. Esto incluye la encriptacin SSL.

    3.1.2. Instalando Apache

    La primera cosa que necesita antes de instalar Apache es un ordenador con Windows 2000, WindowsXP con SP1, Windows 2003, Vista o Server 2008.

    Aviso

    Por favor tenga en cuenta que utilizar Windows XP sin el Service Pack 1 corrompe datosde la red y por tanto podra corromper su repositorio!

  • Preparando un servidor

    17

    1. Descargue la ltima versin del servidor web Apache desde http://httpd.apache.org/download.cgi.Asegrese de que descarga la versin 2.2.x - las versiones 1.3.xx no servirn!

    El instalador MSI de Apache se puede encontrar haciendo click en other files (otrosficheros), y luego navegando a binaries/win32. Puede que quiera seleccionar el fichero MSIapache-2.2.x-win32-x86-openssl-0.9.x.msi (el que incluye OpenSSL).

    2. Una vez que tenga el instalador de Apache2 puede hacer doble click en l y le guiar a travs delproceso de instalacin. Asegrese de que ha introducido la URL del servidor correctamente (si no tieneun nombre DNS para su servidor introduzca la direccin IP). Es recomendable que instale Apachepara Todos los usuarios, en el Puerto 80, como un Servicio. Nota: si ya tiene IIS u otro programaejecutndose que escuche en el puerto 80 la instalacin puede fallar. Si esto ocurre, vaya al directoriode 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. Luegoreinicie la instalacin - esta vez debera terminar sin problemas.

    3. Ahora compruebe si el servidor web Apache funciona correctamente apuntando desde su navegadorweb a la direccin http://localhost/ - debera aparecer un sitio web preconfigurado.

    Atencin

    Si decide instalar Apache como un servicio, queda avisado de que por defecto se ejecutarcon la cuenta de sistema local. Sera una prctica ms segura que creara una cuenta separadapara que Apache se ejecutara bajo ella.Asegrese de que la cuenta en el servidor bajo la que se ejecuta Apache tenga una entradaexplcita en la lista de control de acceso del directorio del repositorio (click con el botnderecho en el directorio | propiedades | seguridad), con control total. Si no lo hace as, losusuarios no podrn confirmar sus cambios.

    Incluso si Apache se ejecuta como sistema local, an as necesitar dicha entrada (que eneste caso debera ser la cuenta SYSTEM).Si Apache no tiene este permiso configurado, sus usuarios tendrn mensajes de errorAcceso denegado, que se mostrarn en el registro de errores de Apache como error 500.

    3.1.3. Instalando Subversion1. Descarge la ltima versin de los binarios de Subversion para Apache y Windows 32. Asegrese de

    obtener la versin correcta para integrarla en su versin de Apache, porque si no obtendr un oscuromensaje de error cuando intente reiniciar. Si tiene Apache 2.2.x acuda a http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100.

    2. Ejecute el instalador de Subversion y siga las instrucciones. Si el instalador de Subversion reconoceque ha instalado Apache, habr casi terminado. Si no puede encontrar un servidor de Apache entoncestendr que realizar algunos pasos adicionales.

    3.

    Utilizando el explorador de Windows, vaya al directorio de instalacin 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 mdulos deApache (normalmente C:\Archivos de programa\Apache Group\Apache2\modules).

    4. Copie el fichero /bin/libdb*.dll y /bin/intl3_svn.dll desde el directorio de instalacinde Subversion al directorio bin de Apache.

    5. Edite el fichero de configuracin de Apache (normalmente C:\Archivos de Programa\Apache Group\Apache2\conf\httpd.conf) con un editor de texto como el Bloc de Notasy haga los siguientes cambios:

  • Preparando un servidor

    18

    Descomente (quitando la marca '#') las siguientes lneas:

    #LoadModule dav_fs_module modules/mod_dav_fs.so#LoadModule dav_module modules/mod_dav.so

    Aada las dos lneas siguientes al final de la seccin LoadModule.

    LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so

    3.1.4. Configuracin

    Ahora ya ha preparado Apache y Subversion, pero Apache an no sabe cmo manejar los clientes deSubversion como TortoiseSVN. Para que Apache sepa qu URL debe utilizarse para los repositorios deSubversion debe editar el fichero de configuracin de Apache (normalmente est en C:\Archivosde programa\Apache Group\Apache2\conf\httpd.conf) con cualquier editor de textoque desee (por ejemplo, el Bloc de notas):

    1. Al final del fichero de configuracin, aada las siguientes lneas:

    DAV svn SVNListParentPath on SVNParentPath D:\SVN #SVNIndexXSLT "/svnindex.xsl" AuthType Basic AuthName "Repositorios de Subversion" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user

    Esto configura el Apache de forma que todos sus repositorios de Subversion estn fsicamentelocalizados bajo D:\SVN. Los respositorios se sirven al mundo exterior desde la URL: http://MiServidor/svn/ . El acceso est restringido a los usuarios/contraseas listados en el ficheropasswd

    2. Para crear el fichero passwd, abra el Smbolo del sistema o la lnea de comandos (ventana DOS)de nuevo, cambie a la carpeta Apache2 (normalmente C:\Archivos de programa\ApacheGroup\Apache2) y cree el fichero mediante

    bin\htpasswd -c passwd

    Esto crear un nuevo fichero con el nombre passwd que se utilizar para la autentificacin. Se puedencrear usuarios adicionales con

    bin\htpasswd passwd

    3. Reinice el servicio de Apache de nuevo.

    4. Apunte su navegador a http://MiServidor/svn/MiNuevoRepositorio (dondeMiNuevoRepositorio es el nombre del repositorio de Subversion que cre antes). Si todo haido bien debera ver una ventana preguntando por un usuario y una contrasea, y luego podr ver loscontenidos de su repositorio.

  • Preparando un servidor

    19

    Una explicacin breve sobre lo que acaba de introducir:

    Configuracin Explicacin significa que los repositorios de Subversion estn disponibles en la

    URL http://MiServidor/svn/DAV svn le dice a Apache qu mdulo ser responsable de servir esa URL -

    en este caso, el mdulo de Subversion.SVNListParentPath on Para Subversion 1.3 y superiores, esta directiva habilita el listado de

    todos los repositorios disponibles bajo SVNParentPath.SVNParentPath D:\SVN le dice a Subversion que busque repositorios bajo D:\SVNSVNIndexXSLT "/svnindex.xsl"

    Utilizado para mejorar la visualizacin desde un navegador de web.

    AuthType Basic se utiliza para activar la autentificacin bsica, es decir, Usuario/contrasea

    AuthName "Subversionrepositories"

    se utiliza cuando le aparezca un dilogo de autentificacin alusuario como informacin para decirle para qu se necesita suautentificacin

    AuthUserFile passwd especifica qu fichero de contraseas se utiliza para laautentificacin

    AuthzSVNAccessFile lugar del fichero de Acceso para las rutas dentro del repositorio deSubversion

    Require valid-user especifica que slo los usuarios que hayan introducido un parusuario/contrasea vlido podrn acceder a la URL

    Tabla 3.1. Configuracin de httpd.conf de Apache

    Pero eso es slo un ejemplo. Hay muchas, muchas ms posibilidades de lo que puede hacer con el servidorweb Apache.

    Si desea que su repositorio tenga acceso de lectura para todo el mundo pero el acceso de escritura slopara usuarios especficos, puede cambiar la lnea

    Require valid-user

    por

    Require valid-user

    Utilizando un fichero passwd se limita y se otorga acceso a todos sus repositorios como si fueran unosolo. Si desea ms control sobre qu usuarios tienen acceso a cada carpeta dentro de un repositorio,puede descomentar la lnea

    #AuthzSVNAccessFile svnaccessfile

    y crear un fichero de acceso de Subversion. Apache se asegurar que slo los usuarios vlidospueden acceder su ruta /svn, y luego pasar el nombre de usuario al mdulo de SubversionAuthzSVNAccessFile para que pueda forzar un acceso ms controlado basado en las reglas que seespecifican en el fichero de acceso de Subversion. Tenga en cuenta que las rutas se especifican o bien

  • Preparando un servidor

    20

    como repos:ruta o simplemente ruta. Si no especifica un repositorio en concreto, la regla deacceso se aplicar a todos los repositorios bajo SVNParentPath. El formato del fichero de poltic