Вы находитесь на странице: 1из 196

TortoiseSVN

Un cliente de Subversion para Windows


Versin 1.5.3

Stefan Kng
Lbbe Onken
Simon Large

TortoiseSVN: Un cliente de Subversion para Windows:


Versin 1.5.3
por Stefan Kng, Lbbe Onken, y Simon Large
Traduccin: Fernando P. Najera Cano (yo@FernandoNajera.com)
publicado 2008/07/21 00:38:55 (r13512)

Tabla de contenidos
Prefacio .......................................................................................................................... xi
1. Audiencia ............................................................................................................ xi
2. Gua de Lectura ................................................................................................... xi
3. TortoiseSVN es gratis! ........................................................................................ xii
4. Comunidad ......................................................................................................... xii
5. Reconocimientos ................................................................................................. xii
6. Terminologa usada en este documento .................................................................... xii
1. Introduccin ................................................................................................................. 1
1.1. Qu es TortoiseSVN? ......................................................................................... 1
1.2. Historia de TortoiseSVN ...................................................................................... 1
1.3. Caractersticas de TortoiseSVN ............................................................................. 1
1.4. Instalando TortoiseSVN ....................................................................................... 3
1.4.1. Requerimientos del sistema ........................................................................ 3
1.4.2. Instalacin ............................................................................................... 3
1.4.3. Packs de idiomas ...................................................................................... 3
1.4.4. Corrector ortogrfico ................................................................................. 3
2. Conceptos bsicos ......................................................................................................... 5
2.1. El repositorio ..................................................................................................... 5
2.2. Modelos de versionado ........................................................................................ 5
2.2.1. El problema de compartir ficheros ............................................................... 6
2.2.2. La solucin bloquear-modificar-desbloquear .................................................. 6
2.2.3. La solucin copiar-modificar-fusionar .......................................................... 7
2.2.4. Qu hace Subversion? .............................................................................. 9
2.3. Subversion en accin ......................................................................................... 10
2.3.1. Copias de trabajo .................................................................................... 10
2.3.2. URLs de repositorio ................................................................................ 12
2.3.3. Revisiones ............................................................................................. 12
2.3.4. Cmo se unen las copias de trabajo al repositorio ......................................... 14
2.4. Sumario ........................................................................................................... 15
3. Preparando un servidor ................................................................................................. 16
3.1. Servidor basado en Apache ................................................................................. 16
3.1.1. Introduccin ........................................................................................... 16
3.1.2. Instalando Apache .................................................................................. 16
3.1.3. Instalando Subversion .............................................................................. 17
3.1.4. Configuracin ........................................................................................ 18
3.1.5. Mltiples repositorios .............................................................................. 20
3.1.6. Autorizacin basada en rutas ..................................................................... 20
3.1.7. Autentificacin con un dominio de Windows ............................................... 21
3.1.8. Mltiples orgenes de autentificacin .......................................................... 22
3.1.9. Asegurando el servidor con SSL ................................................................ 23
3.1.10. Utilizando certificados de cliente con hosts SSL virtuales .............................. 25
3.2. Servidor Basado en Svnserve .............................................................................. 26
3.2.1. Introduccin ........................................................................................... 26
3.2.2. Instalando svnserve ................................................................................. 26
3.2.3. Ejecutando svnserve ................................................................................ 26
3.2.4. Basic Authentication with svnserve ............................................................ 28
3.2.5. Better Security with SASL ....................................................................... 29
3.2.6. Autentificacin con svn+ssh ..................................................................... 31
3.2.7. Autorizacin basada en rutas con svnserve .................................................. 31
4. El repositorio .............................................................................................................. 32
4.1. Creacin de repositorios ..................................................................................... 32
4.1.1. Creando un repositorio con el cliente de lnea de comandos ............................ 32
4.1.2. Creando el repositorio con TortoiseSVN ..................................................... 32
4.1.3. Acceso local al repositorio ....................................................................... 33
4.1.4. Accediendo a un repositorio en una unidad de red ......................................... 33

iii

TortoiseSVN

4.1.5. Organizacin del repositorio .....................................................................


4.2. Copia de seguridad del Repositorio ......................................................................
4.3. Scripts gancho ..................................................................................................
4.4. Enlaces de obtener ............................................................................................
5. Gua de uso diario .......................................................................................................
5.1. Empezando ......................................................................................................
5.1.1. Iconos sobreimpresionados .......................................................................
5.1.2. Mens contextuales .................................................................................
5.1.3. Arrastrar y soltar ....................................................................................
5.1.4. Atajos comunes ......................................................................................
5.1.5. Autentificacin .......................................................................................
5.1.6. Maximizando ventanas ............................................................................
5.2. Importando datos en un repositorio .......................................................................
5.2.1. Importar ................................................................................................
5.2.2. Importar en el sitio .................................................................................
5.2.3. Ficheros especiales ..................................................................................
5.2.4. Proyectos referenciados ............................................................................
5.3. Obteniendo una copia de trabajo ..........................................................................
5.3.1. Profundidad de obtencin .........................................................................
5.4. Confirmando sus cambios en el repositorio ............................................................
5.4.1. El dilogo de Confirmacin ......................................................................
5.4.2. Listas de cambios ...................................................................................
5.4.3. Excluyendo tems de la lista de confirmacin ...............................................
5.4.4. Commit Log Messages ............................................................................
5.4.5. Progreso de confirmacin .........................................................................
5.5. Actualice su copia de trabajo con los cambios de otros .............................................
5.6. Resolviendo conflictos .......................................................................................
5.7. Obteniendo informacin del estado .......................................................................
5.7.1. Iconos sobreimpresionados .......................................................................
5.7.2. Columnas de TortoiseSVN en el Explorador de Windows ...............................
5.7.3. Estado local y remoto ..............................................................................
5.7.4. Viendo diferencias ..................................................................................
5.8. Listas de cambios ..............................................................................................
5.9. Dilogo de Registro de revisiones ........................................................................
5.9.1. Invocando el dilogo de Registro de revisiones .............................................
5.9.2. Revision Log Actions ..............................................................................
5.9.3. Obteniendo informacin adicional ..............................................................
5.9.4. Obteniendo ms mensajes de registro .........................................................
5.9.5. Caractersticas de registro de fusin ...........................................................
5.9.6. Cambiando el mensaje de registro y el autor ................................................
5.9.7. Filtrando los mensajes de registro ..............................................................
5.9.8. Informacin estadstica ............................................................................
5.9.9. Modo sin conexin .................................................................................
5.9.10. Refrescando la vista ..............................................................................
5.10. Viendo diferencias ...........................................................................................
5.10.1. Diferencias de ficheros ...........................................................................
5.10.2. Opciones de fn de lnea y espacios en blanco ............................................
5.10.3. Comparando carpetas .............................................................................
5.10.4. Diferenciando imgenes utilizando TortoiseIDiff .........................................
5.10.5. Herramientas externas de diferencias/fusin ...............................................
5.11. Aadiendo nuevos ficheros y directorios ..............................................................
5.12. Copiando/Moviendo/Renombrando ficheros y carpetas ...........................................
5.13. Ignorando ficheros y directorios .........................................................................
5.13.1. Pattern Matching in Ignore Lists ..............................................................
5.14. Eliminando, moviendo y renombrando ................................................................
5.14.1. Eliminando ficheros y carpetas ................................................................
5.14.2. Moviendo ficheros y carpetas ..................................................................
5.14.3. Cambiando las maysculas/minsculas en un nombre de fichero .....................

iv

34
35
36
36
38
38
38
38
40
41
41
42
42
42
44
44
44
46
47
49
49
51
51
51
53
53
55
56
56
58
58
60
61
63
64
64
65
68
68
69
70
70
72
73
73
73
74
74
75
76
77
78
79
80
81
82
83
83

TortoiseSVN

5.14.4. Dealing with filename case conflicts ......................................................... 84


5.14.5. Reparando renombrados de ficheros ......................................................... 84
5.14.6. Deleting Unversioned Files ..................................................................... 85
5.15. Deshacer cambios ............................................................................................ 85
5.16. Limpieza ........................................................................................................ 86
5.17. Configuracin del proyecto ............................................................................... 86
5.17.1. Propiedades de Subversion ...................................................................... 87
5.17.2. Propiedades de projecto TortoiseSVN ....................................................... 91
5.18. Haciendo ramas / etiquetas ................................................................................ 92
5.18.1. Crando una rama o etiqueta .................................................................... 93
5.18.2. Obtener o cambiar... .............................................................................. 94
5.19. Fusionando ..................................................................................................... 95
5.19.1. Fusionando un rango de revisiones ........................................................... 96
5.19.2. Reintegrando una rama. .......................................................................... 98
5.19.3. Fusionando dos rboles diferentes ............................................................ 98
5.19.4. Opciones de fusin ................................................................................ 99
5.19.5. Revisando los resultados de la fusin ...................................................... 100
5.19.6. Registro de fusin ............................................................................... 101
5.19.7. Manejando conflictos durante la fusin .................................................... 101
5.19.8. Merge a Completed Branch ................................................................... 102
5.20. Bloqueando ................................................................................................... 103
5.20.1. Cmo trabaja el bloqueo en Subversion ................................................... 103
5.20.2. Obteniendo un bloqueo ......................................................................... 103
5.20.3. Quitando un Bloqueo ........................................................................... 104
5.20.4. Comprobando el estado de los bloqueos ................................................... 105
5.20.5. Haciendo ficheros no-bloqueados como slo-lectura ................................... 105
5.20.6. Los scripts ganchos de bloqueo .............................................................. 106
5.21. Creando y aplicando parches ............................................................................ 106
5.21.1. Creando un fichero parche .................................................................... 106
5.21.2. Aplicando un fichero parche .................................................................. 107
5.22. Quin cambi qu lnea? ............................................................................... 107
5.22.1. Autora de ficheros .............................................................................. 108
5.22.2. Autora de las diferencias ...................................................................... 110
5.23. El navegador de repositorios ............................................................................ 110
5.24. Grficos de revisin ....................................................................................... 113
5.24.1. Nodos del grfico de revisin ................................................................ 113
5.24.2. Cambiando la vista .............................................................................. 114
5.24.3. Usando el grfico ................................................................................ 115
5.24.4. Refrescando la vista ............................................................................. 115
5.25. Exportando una copia de trabajo de Subversion ................................................... 115
5.25.1. Removing a working copy from version control ........................................ 116
5.26. Relocalizando una copia de trabajo ................................................................... 117
5.27. Integracin con sistemas de control de errores / seguimiento de incidencias ............... 117
5.27.1. Adding Issue Numbers to Log Messages .................................................. 118
5.27.2. Getting Information from the Issue Tracker .............................................. 120
5.28. Integracin con visores de repositorios basados en web ......................................... 121
5.29. Configuracin de TortoiseSVN ......................................................................... 122
5.29.1. Configuracin general .......................................................................... 122
5.29.2. Configuracin de los iconos sobreimpresionados ....................................... 129
5.29.3. Configuracin de red ............................................................................ 132
5.29.4. Configuracin de programas externos ...................................................... 133
5.29.5. Datos de configuracin almacenados ....................................................... 136
5.29.6. Cach de registro ................................................................................ 137
5.29.7. Scripts gancho del lado del cliente .......................................................... 140
5.29.8. Configuracin de TortoiseBlame ............................................................ 143
5.29.9. Configuraciones del registro .................................................................. 144
5.29.10. Carpetas de trabajo de Subversion ......................................................... 144
5.30. ltimo paso .................................................................................................. 145

TortoiseSVN

6. El programa SubWCRev .............................................................................................


6.1. La lnea de comandos de SubWCRev ..................................................................
6.2. Sustitucin de palabras clave .............................................................................
6.3. Ejemplo de palabras clave .................................................................................
6.4. interfaz COM .................................................................................................
A. Preguntas ms frecuentes (FAQ) ..................................................................................
B. Cmo...? .................................................................................................................
B.1. Mover/copiar muchos ficheros de golpe ..............................................................
B.2. Obligar a los usuarios a introducir un mensaje de registro .......................................
B.2.1. Script gancho en el servidor ...................................................................
B.2.2. Propiedades del proyecto .......................................................................
B.3. Actualizar los ficheros seleccionados desde el repositorio .......................................
B.4. Roll back (Undo) revisions in the repository ........................................................
B.4.1. Utilice el dilogo Registro de revisiones ...................................................
B.4.2. Utilice el dilogo Fusionar .....................................................................
B.4.3. Utilice svndumpfilter .....................................................................
B.5. Comparar dos revisiones de un fichero ................................................................
B.6. Incluir un sub-proyecto comn ..........................................................................
B.6.1. Utilice svn:externals ..............................................................................
B.6.2. Utilice una copia de trabajo anidada .........................................................
B.6.3. Utilice una ruta relativa .........................................................................
B.7. Crear un acceso directo a un repositorio ..............................................................
B.8. Ignorar ficheros que ya estn versionados ............................................................
B.9. Desversionar una copia de trabajo ......................................................................
B.10. Eliminar una copia de trabajo ..........................................................................
C. Useful Tips For Administrators ....................................................................................
C.1. Instalar TortoiseSVN utilizando polticas de grupo ................................................
C.2. Redirigir la comprobacin de actualizacin ..........................................................
C.3. Setting the SVN_ASP_DOT_NET_HACK environment variable ................................
C.4. Deshabilitar entradas del men contextual ...........................................................
D. Automatizando TortoiseSVN .......................................................................................
D.1. Comandos de TortoiseSVN ...............................................................................
D.2. Comandos de TortoiseIDiff ...............................................................................
E. Referencia cruzada del interface de lnea de comandos .....................................................
E.1. Convenciones y reglas bsicas ...........................................................................
E.2. Comandos de TortoiseSVN ...............................................................................
E.2.1. Obtener ...............................................................................................
E.2.2. Actualizar ............................................................................................
E.2.3. Actualizar a la revisin ..........................................................................
E.2.4. Confirmar ............................................................................................
E.2.5. Diff ....................................................................................................
E.2.6. Mostrar registro ....................................................................................
E.2.7. Comprobar modificaciones .....................................................................
E.2.8. Grfico de revisin ...............................................................................
E.2.9. Navegador de repositorios ......................................................................
E.2.10. Editar conflictos ..................................................................................
E.2.11. Resuelto ............................................................................................
E.2.12. Renombrar .........................................................................................
E.2.13. Eliminar ............................................................................................
E.2.14. Revertir .............................................................................................
E.2.15. Limpieza ...........................................................................................
E.2.16. Obtener bloqueo .................................................................................
E.2.17. Quitar bloqueo ....................................................................................
E.2.18. Ramas / Etiqueta .................................................................................
E.2.19. Cambiar ............................................................................................
E.2.20. Fusionar ............................................................................................
E.2.21. Exportar ............................................................................................
E.2.22. Relocalizar .........................................................................................

vi

146
146
147
147
148
151
152
152
152
152
152
152
153
153
153
154
154
154
154
155
155
155
156
156
156
157
157
157
158
158
160
160
163
165
165
165
165
165
166
166
166
167
167
167
167
168
168
168
168
168
168
168
168
169
169
169
169
169

TortoiseSVN

E.2.23. Crear repositorio aqu ..........................................................................


E.2.24. Aadir ...............................................................................................
E.2.25. Importar ............................................................................................
E.2.26. Autora ..............................................................................................
E.2.27. Aadir a la lista de ignorados ................................................................
E.2.28. Crear parche .......................................................................................
E.2.29. Aplicar parche ....................................................................................
F. Detalles de implementacion .........................................................................................
F.1. Iconos sobreimpresionados ................................................................................
G. Asegurando Svnserve utilizando SSH ...........................................................................
G.1. Preparando un servidor Linux ...........................................................................
G.2. Preparando un servidor Windows .......................................................................
G.3. Herramientas de cliente SSH para utilizar con TortoiseSVN ....................................
G.4. Creando certificados OpenSSH ..........................................................................
G.4.1. Crear claves utilizando ssh-keygen ..........................................................
G.4.2. Crear claves utilizando PuTTYgen ...........................................................
G.5. Comprobacin utilizando PuTTY .......................................................................
G.6. Comprobando SSH con TortoiseSVN .................................................................
G.7. Variantes de configuracin SSH ........................................................................
Glosario .......................................................................................................................
ndice ..........................................................................................................................

vii

170
170
170
170
170
170
170
171
171
173
173
173
174
174
174
174
175
175
176
177
181

Lista de figuras
2.1. Un sistema tpico cliente/servidor .................................................................................. 5
2.2. El problema a evitar .................................................................................................... 6
2.3. La solucin bloquear-modificar-desbloquear .................................................................... 7
2.4. La solucin copiar-modificar-fusionar ............................................................................. 8
2.5. ...Copiar-modificar-fusionar continuado ........................................................................... 9
2.6. El sistema de ficheros del repositorio ............................................................................ 11
2.7. El repositorio ........................................................................................................... 13
4.1. El men de TortoiseSVN para carpetas no versionadas ..................................................... 32
5.1. Explorador mostrando iconos sobreimpresionados ........................................................... 38
5.2. Men contextual para un directorio bajo el control de versiones ......................................... 39
5.3. Men archivo del explorador para un acceso directo en una carpeta versionada ...................... 40
5.4. Men de arrastre con el botn derecho para un directorio bajo el control de versiones ............. 41
5.5. Dilogo de autentificacin .......................................................................................... 42
5.6. El dilogo Importar ................................................................................................... 43
5.7. El dilogo Obtener .................................................................................................... 47
5.8. El dilogo de Confirmacin ........................................................................................ 49
5.9. El corrector ortogrfico del dilogo de Confirmacin ....................................................... 52
5.10. El dilogo Progreso mostrando el progreso de una confirmacin ....................................... 53
5.11. Dilogo de progreso mostrando una actualizacin terminada ............................................ 54
5.12. Explorador mostrando iconos sobreimpresionados ......................................................... 57
5.13. Comprobar modificaciones ........................................................................................ 59
5.14. Commit dialog with Changelists ................................................................................. 62
5.15. El dilogo de Registro de revisiones ........................................................................... 64
5.16. El panel superior del dilogo de Registro de revisiones con el men contextual .................... 65
5.17. Men contextual del panel superior para 2 revisiones seleccionadas ................................... 66
5.18. El panel inferior del dilogo de Registro con el men contextual ...................................... 67
5.19. El dilogo de registro mostrando revisiones con registro de fusin .................................... 69
5.20. Histograma de confirmaciones por autor ...................................................................... 71
5.21. Grfico de tarta de confirmaciones por autor ................................................................ 71
5.22. Grfico de confirmaciones por fecha ........................................................................... 72
5.23. El dilogo Comparar Revisiones ................................................................................ 75
5.24. El visor de diferencias de imgenes ............................................................................ 76
5.25. Men contextual del explorador para ficheros no versionados .......................................... 77
5.26. Men de arrastre con el botn derecho para un directorio bajo el control de versiones ............ 79
5.27. Men contextual del explorador para ficheros no versionados .......................................... 80
5.28. Men contextual del explorador para ficheros versionados ............................................... 82
5.29. Dilogo de Revertir ................................................................................................. 85
5.30. Pgina de propiedades del Explorador, pestaa Subversion .............................................. 87
5.31. Pgina de propiedades de Subversion .......................................................................... 88
5.32. Aadiendo propiedades ............................................................................................. 89
5.33. El dilogo Rama/Etiqueta .......................................................................................... 93
5.34. El dilogo Cambiar .................................................................................................. 95
5.35. El asistente de fusionado - Seleccionar el rango de revisiones .......................................... 97
5.36. El asistente de fusin - Fusionar reintegracin .............................................................. 98
5.37. El asistente de fusin - Fusin de rboles ..................................................................... 99
5.38. The Merge Conflict Callback Dialog ......................................................................... 102
5.39. The Merge reintegrate Dialog .................................................................................. 102
5.40. El dilogo Bloquear ............................................................................................... 104
5.41. El dilogo Comprobar modificaciones ....................................................................... 105
5.42. El dilogo Crear parche .......................................................................................... 106
5.43. El dilogo Anotar / Autora ..................................................................................... 108
5.44. TortoiseBlame ....................................................................................................... 109
5.45. El navegador de repositorios .................................................................................... 111
5.46. Un grfico de revisiones ......................................................................................... 113
5.47. The Export-from-URL Dialog .................................................................................. 116

viii

TortoiseSVN

5.48. El dilogo Relocalizar ............................................................................................


5.49. Example issue tracker query dialog ...........................................................................
5.50. El dilogo de Configuracin, pgina General ..............................................................
5.51. El dilogo Configuracin, pgina de Men contextual ...................................................
5.52. El dilogo Configuracin, pgina de Dilogos 1 ..........................................................
5.53. El dilogo Configuracin, pgina de Dilogos 2 ..........................................................
5.54. El dilogo Configuracin, pgina de Colores ...............................................................
5.55. El dilogo Configuracin, pgina de Sobreimpresin de iconos .......................................
5.56. El dilogo Configuracin, pgina de Conjunto de iconos ...............................................
5.57. El dilogo Configuracin, pgina de Red ...................................................................
5.58. El dilogo Configuracin, pgina de Visor de diferencias ..............................................
5.59. El dilogo Configuracin, dilogo de Diferencias/Fusin avanzadas .................................
5.60. El dilogo Configuracin, pgina de Datos almacenados ...............................................
5.61. The Settings Dialog, Log Cache Page ........................................................................
5.62. The Settings Dialog, Log Cache Statistics ..................................................................
5.63. El dilogo Configuracin, pgina de scripts gancho ......................................................
5.64. El dilogo Configuracin, configurar scripts gancho .....................................................
5.65. The Settings Dialog, Issue Tracker Integration Page .....................................................
5.66. The Settings Dialog, TortoiseBlame Page ...................................................................
C.1. El dilogo de Actualizacin ......................................................................................

ix

117
121
122
124
125
126
128
129
131
132
133
135
136
137
139
140
141
143
143
157

Lista de tablas
2.1. URLs de acceso al repositorio ..................................................................................... 12
3.1. Configuracin de httpd.conf de Apache ................................................................... 19
6.1. Lista de opciones de lnea de comandos disponible ........................................................ 146
6.2. Lista de opciones de lnea de comandos disponible ........................................................ 147
6.3. mtodos de automatizacin/COM soportados ................................................................ 148
C.1. Entradas de men y sus valores ................................................................................. 158
D.1. Lista de comandos y opciones disponibles ................................................................... 161
D.2. Lista de las opciones disponibles ............................................................................... 163

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 error
en 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. Audiencia
Este 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 es
una extensin del shell de Windows, se asume que el usuario est familiarizado con el Explorador de
windows y sabe cmo usarlo.

2. Gua de Lectura
This Prefacio explains a little about the TortoiseSVN project, the community of people who work on it,
and the licensing conditions for using it and distributing it.
The Captulo 1, Introduccin explains what TortoiseSVN is, what it does, where it comes from and the
basics for installing it on your PC.
In Captulo 2, Conceptos bsicos we give a short introduction to the Subversion revision control system
which underlies TortoiseSVN. This is borrowed from the documentation for the Subversion project and
explains the different approaches to version control, and how Subversion works.
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.
The chapter on Captulo 4, El repositorio explains how to set up a local repository, which is useful
for testing Subversion and TortoiseSVN using a single PC. It also explains a bit about repository
administration which is also relevant to repositories located on a server.
The Captulo 5, Gua de uso diario is the most important section as it explains all the main features of
TortoiseSVN and how to use them. It takes the form of a tutorial, starting with checking out a working
copy, modifying it, committing your changes, etc. It then progresses to more advanced topics.
Captulo 6, El programa SubWCRev is a separate program included with TortoiseSVN which can extract
the information from your working copy and write it into a file. This is useful for including build
information in your projects.
The Apndice B, Cmo...? section answers some common questions about performing tasks which are
not explicitly covered elsewhere.

xi

Prefacio

The section on Apndice D, Automatizando TortoiseSVN shows how the TortoiseSVN GUI dialogs can
be called from the command line. This is useful for scripting where you still need user interaction.
The Apndice E, Referencia cruzada del interface de lnea de comandos give a correlation between
TortoiseSVN commands and their equivalents in the Subversion command line client svn.exe.

3. TortoiseSVN es gratis!
TortoiseSVN es gratis. No tiene que pagar por l, y puede usarlo para lo que quiera. Est desarrollado
bajo la Licencia Pblica General GNU (GPL).
TortoiseSVN es un proyecto de Cdigo Abierto. Eso significa que tiene acceso completo al cdigo fuente
de 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. Comunidad
Tanto TortoiseSVN como Subversion estn siendo desarrollados por una comunidad de gente que trabaja
en estos proyectos. Provienen de diferentes pases por todo el mundo y se juntan para crear programas
estupendos.

5. Reconocimientos
Tim Kemp
por fundar el proyecto TortoiseSVN
Stefan Kng
por el duro trabajo de llevar a TortoiseSVN a lo que es hoy
Lbbe Onken
por los bonitos iconos, el logo, la caza de errores, por traducir y administrar traducciones
Simon Large
por ayudar con la documentacin y en la caza de bugs
El libro de Subversion
por la gran introduccin a Subversion y su captulo 2 que hemos copiado aqu
El proyecto Tigris Style
por algunos de los estilos que estn siendo reutilizados en esta documentacin
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 msica que nos enviaron

6. Terminologa usada en este documento


Para hacer ms facil la lectura de la documentacin, los nombres de todas las pantallas y mens de
TortoiseSVN 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.
Donde aparezca un men contextual local dentro de uno de los dilogos de TortoiseSVN, se mostrar
as: Men Contextual Grabar como ...

xii

Prefacio

Los botones del interfaz de usuario se indican como este: Pulse OK para continuar.
User Actions are indicated using a bold font. Alt+A: press the Alt-Key on your keyboard and while
holding it down press the A-Key as well. Right-drag: press the right mouse button and while holding it
down drag the items to the new location.
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 otras
cosas horribles si se ignoran estas advertencias.

xiii

Captulo 1. Introduccin
El control de versiones es el arte de manejar cambios en la informacin. Ha sido desde siempre una
herramienta crtica para los programadores, quienes tpicamente emplean su tiempo haciendo pequeos
cambios al software y luego deshaciendo o comprobando esos cambios al da siguiente. Imagine un
equipo de estos programadores trabajando concurrentemente - y quizs tambin simultneamente en los
mismos 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 en
un 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 que
pueda recuperar versiones antiguas de sus ficheros y examinar la historia de cundo y cmo cambiaron
sus datos, y quin hizo el cambio. Esta es la razn por la que mucha gente piensa que Subversion, y los
sistemas 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 del
software (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 el
entendimiento nativo de los lenguajes de programacin, 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 coleccin de ficheros, incluyendo cdigo fuente.

1.2. 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 exista para CVS llamado TortoiseCVS.
Tim estudi el cdigo fuente de TortoiseCVS y lo utiliz como base de TortoiseSVN. Entonces inici el
proyecto, 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 Subversion
y el cdigo fuente de TortoiseSVN. Como TortoiseSVN todava no estaba listo para usarse, se uni al
proyecto y empez a programar. Pronto reescribi la mayor parte del cdigo existente y empez a aadir
comandos 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 utilizar
TortoiseSVN 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 y
un logo para TortoiseSVN. Y tambin se encarga de la pgina web y de administrar las traducciones.

1.3. Caractersticas de TortoiseSVN


Qu hace de TortoiseSVN tan buen cliente de Subversion? Aqu hay una pequea lista de sus
caractersticas.
Integracin 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 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 de
TortoiseSVN tambin funcionan en otros administradores de archivos, y en el dilogo Fichero/Abrir

Introduccin

que es comn a la mayora de aplicaciones estndar de Windows. Sin embargo, debe tener en cuenta
que TortoiseSVN est desarrollado con la mirada puesta en hacerle extensin del Explorador de
Windows. 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 sobreimpresionados
El 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 Subversion
Todos 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 las
caractersticas del propio Subversion:
Versionado de carpetas
CVS slo 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 estn versionados. Como resultado, hay comandos reales
en el lado del cliente como mover y copiar que operan en ficheros y directorios.
Confirmaciones atmicas
Una confirmacin o bien entra en el repositorio completamente, o no entra en absoluto. Esto permite
a los desarrolladores construir y confirmar cambios como unidades lgicas.
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.
Eleccin de capas de red
Subversion tiene una nocin abstracta del acceso al repositorio, hacindo que la gente pueda
implementar nuevos mecanismos de red fcilmente. El avanzado servidor de red de Subversion es
un 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 varias
caractersticas importantes gratis: autentificacin, autorizacin, compresin de la transmisin y
navegacin del repositorio, por ejemplo. Tambin est disponible un proceso servidor de Subversion
independiente. Este servidor habla un protocolo propio que puede encapsularse fcilmente sobre ssh.
Manejo de datos consistente
Subversion expresa las diferencias entre ficheros usando un algoritmo de diferenciacin 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 creacin de ramas eficiente
El 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 mecanismo
similar a los vnculos duros. Por tanto estas operaciones llevan un tiempo pequeo y constante, y
muy poco espacio en el repositorio.
Extensibilidad
Subversion no tiene lastre histrico; est implementado como una coleccin de libreras C
compartidas con APIS bien definidas. Esto hace que Subversion sea extremadamente mantenible y
se pueda utilizar por otras aplicaciones y lenguajes.

Introduccin

1.4. Instalando TortoiseSVN


1.4.1. Requerimientos del sistema
TortoiseSVN se ejecuta en Windows 2000 SP2, Windows XP o superiores. Windows 98, Windows ME
y Windows NT4 ya no se soportan desde TortoiseSVN 1.2.0, pero an puede descargar las versiones ms
antiguas si realmente las necesita.
Si encuentra algn problema durante o despus de la instalacin de TortoiseSVN, por favor visite primero
Apndice 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 siga
las 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 posible
que pueda descargar un pack de idioma que se ajuste a sus necesidades. Puede encontrar los packs de
idioma en nuestra pgina de estado de las traducciones [http://tortoisesvn.net/translation_status]. Y si
an 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 programa
de 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 en
las confirmaciones. Esto es especialmente til si el idioma del proyecto no es su lengua materna. El
corrector 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 desea
tenerlos en otros idiomas, la opcin ms sencilla es smplemente instalar uno de los packs de idiomas
de TortoiseSVN. Eso instalar los ficheros de diccionario adecuados junto con el interface de usuario de
TortoiseSVN 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, puede
copiar 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 los
nombres 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

la subcarpeta bin, tambin puede poner los ficheros del corrector ortogrfico en C:\Archivos de
programa\TortoiseSVN\Languages. Si esa carpeta no est ah, tendr que crearla primero. La
siguiente 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 del
proyecto 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 idioma
que corresponde al de Windows.
3. Si no funciona el idioma exacto de Windows, pruebe el idioma Base, por ejemplo, es_MX (EspaolMxico) 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 la
instalacin estndar.

Captulo 2. Conceptos bsicos


Este captulo es una versin ligeramente modificada del mismo captulo en el libro de Subversion. Una
versin 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 nuevo
para usted, este captulo es definitivamente para usted. Empezamos con una discusin de los conceptos
generales de control de versiones, nos hacemos camino dentro de las ideas especficas que hay tras
Subversion, y mostramos algunos ejemplos sencillos de Subversion en accin.
Incluso aunque los ejemplos en este captulo muestran a gente compartiendo colecciones de cdigo fuente
de programas, tenga en cuenta que Subversion puede manejar cualquier colleccin de ficheros - no est
limitado 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, que
es 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 disponible
para 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 ficheros
tpico. 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 aadir,
borrar o reorganizar ficheros y directorios.
Cuando un cliente lee datos de un repositorio, normalmente ve nicamente la ltima versin del rbol
de 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 ltimo
mircoles?, o quin fue la ltima persona que cambi este fichero, y qu cambios hizo? Esta es la
clase de preguntas que forman el corazn de cualquier sistema de control de versiones: son sistemas que
estn diseados para guardar y registrar los cambios a los datos a lo largo del tiempo.

2.2. Modelos de versionado


Todos 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 accidentalmente
se pisen unos a otros? Es demasiado sencillo que los usuarios accidentalmente sobreescriban los cambios
del otro en el repositorio.

Conceptos bsicos

2.2.1. El problema de compartir ficheros


Considere este escenario: suponga que tiene dos compaeros 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 despus) Sally pueda accidentalmente sobreescribirlos con su propia versin
nueva del fichero. Mientras que la versin 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 versin nueva del
fichero de Sally, porque para empezar ella nunca vi los cambios de Harry. El trabajo de Harry est an
efectivamente 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 para
enfrentarse a este problema, que es una solucin muy simple. En estos sistemas, el repositorio slo 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 libro
de 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 hacer
es leer el fichero, y esperar a que Harry termine sus cambios y libere su bloqueo. Despus de que Harry
desbloquee el fichero, se acab su turno, y ahora Sally puede bloquear y editar.

Conceptos bsicos

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 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 an esperando para editar el fichero, sus manos
estn atadas. Y Harry se va de vacacioens. Ahora Sally tiene que buscar a un administrador para que
libere el bloqueo de Harry. La situacin acaba causando un montn de retraso y prdida 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 podran fcilmente editar el fichero de forma simultnea,
y no habra ningn dao, asumiendo que los cambios se fusionaran correctamente. No hay necesidad
de que se turnen en esta situacin.
El bloqueo puede causar una falsa sensacin de seguridad. Imagine que Harry bloquea y edita el
fichero A, mientras Sally simultneamente 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 semnticamente 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 sensacin de falsa seguridad. Es fcil 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.

2.2.3. La solucin copiar-modificar-fusionar


Subversion, CVS y otros sistemas de control de versiones utilizan un modelo copiar-modificar-fusionar
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 fusionan juntas en una nueva versin final. El sistema
de control de versiones a menudo ofrece ayuda en la fusin, pero al final la persona es la responsable
de hacer que ocurra correctamente.

Conceptos bsicos

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 dentro
de sus copias. Sally es la primera en grabar sus cambios en el repositorio. Cuando Harry intenta grabar
sus 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 lo
que Harry le pide a su cliente que fusione cualquier nuevo cambio del repositorio dentro de su copia de
trabajo del fichero A. Lo ms 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 solucin copiar-modificar-fusionar

Conceptos bsicos

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

Pero qu ocurre si los cambios de Sally s se superponen a los cambios de Harry? Qu hacemos
entonces? La situacin se denomina un conflicto, y normalmente no es mucho problema. Cuando Harry
le pide a su cliente que fusione los ltimos cambios del repositorio en su copia de trabajo, su 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 automticamente; slo 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 superponan (quizs discutiendo el conflicto con Sally!), puede volcar de forma segura
el fichero fusionado al repositorio.
El modelo copiar-modificar-fusionar puede sonar un poco catico, pero en la prctica, 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 mayora 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 crtico: la comunicacin entre usuarios. Cuando los usuarios se
comunican de forma pobre, aumentan los conflictos sintcticos y semnticos. No hay sistema capaz
de forzar a los usuarios a comunicarse perfectamente, y no hay sistema que pueda detectar conflictos
semnticos. 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 prctica, el bloqueo parece inhibir la productividad ms
que otra cosa.
Hay una situacin comn donde el modelo bloquear-modificar-desbloquear resulta mejor, y es cuando
tiene ficheros no-fusionables. Por ejemplo si su repositorio contiene algunas imgenes grficas, y dos
personas cambian la imagen a la vez, no hay forma de fusionar esos cambios. O Harry o Sally perdern
sus cambios.

2.2.4. Qu hace Subversion?


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

Conceptos bsicos

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

2.3. Subversion en accin


2.3.1. Copias de trabajo
Ya ha odo hablar sobre las copias de trabajo; ahora le demostraremos cmo 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 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 para
los 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 haya
verificado que funcionan correctamente, Subversion le provee de comandos para publicar sus cambios
para los dems que trabajan con usted en su proyecto (escribiendo en el repositorio). Si los dems publican
sus propios cambios, Subversion le provee de comandos para fusionar esos cambios dentro de su copia
de 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 trabajo
contiene un subdirectorio llamado .svn, tambin 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 estn desactualizados respecto al trabajo de
los dems.
Un repositorio tpico de Subversion a menudo contiene los ficheros (o el cdigo fuente) de varios
proyectos; usualmente, cada proyecto es un subdirectorio en el rbol de ficheros del repositorio. Con esta
disposicin, una copia de trabajo de un usuario normalmente correspondern a un subrbol particular
del repositorio.
Por ejemplo, suponga que tiene un repositorio que contiene dos proyectos de software.

10

Conceptos bsicos

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 trmino
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).
Suponga que ha hecho cambios a button.c. Dado que el directorio .svn recuerda la fecha de
modificacin y los contenidos originales del fichero, Subversion puede decirle que ha cambiado el
fichero. 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 al
repositorio.
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 usuario
obtiene 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 tiempo
que usted. Cuando ha confirmado sus cambios en button.c, la copia de trabajo de Sally se queda sin
cambios; 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, 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
informacin en el directorio .svn, y ms informacin desde el repositorio, para decidir qu ficheros
deben ponerse al da.

11

Conceptos bsicos

2.3.2. URLs de repositorio


Los 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. El
esquema URL indica el mtodo de acceso:
Esquema

Mtodo de acceso

file://

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


For the most part, Subversion's URLs use the standard syntax, allowing for server names and port numbers
to be specified as part of the URL. The file:// access method is normally used for local access,
although it can be used with UNC paths to a networked host. The URL therefore takes the form file://
hostname/path/to/repos. For the local machine, the hostname portion of the URL is required
to be either absent or localhost. For this reason, local paths normally appear with three slashes,
file:///path/to/repos.
Also, users of the file:// scheme on Windows platforms will need to use an unofficially standard
syntax for accessing repositories that are on the same machine, but on a different drive than the client's
current working drive. Either of the two following URL path syntaxes will work where X is the drive
on which the repository resides:

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.
Puede acceder con seguridad a un repositorio FSFS utilizando una carpeta compartida de red, pero no
puede 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 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.

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

12

Conceptos bsicos

borrar, renombrar y copiar ficheros y directorios, y luego confirmar el conjunto completo de cambios
como una unidad.
En el repositorio, cada confirmacin se trata como una transaccin atmica: o bien todos los cambios de
la confirmacin se llevan a cabo, o bien ninguno de ellos se realiza. Subversion aplica esta atomicidad
en 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, llamado
revisin. 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 un
directorio raz vaco.
Una buena forma de visualizar el repositorio es como una serie de rboles. Imagine una fila de nmeros
de revisiones, empezando en 0, de izquierda a derecha. Cada nmero de revisin tiene un rbol colgando
debajo, 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 de
Subversion se aplican a rboles completos, no a los ficheros individuales. Cada nmero de revisin
selecciona un rbol entero, un estado particular del repositorio tras algn cambio confirmado. Otra
forma de verlo es pensar que la revisin N representa el estado del repositorio tras la confirmacin
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 revisin 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
revisin en el repositorio; pueden contener ficheros de varias revisiones.Por ejemplo, suonga que obtiene
una copia de trabajo de un repositorio cuya revisin ms reciente es la 4:

calc/Makefile:4

13

Conceptos bsicos

integer.c:4
button.c:4
En este momento, esta copia de trabajo corresopnde exactamente a la revisin 4 en el respositorio. Sin
embargo, suponga que ha hecho cambios al fichero button.c, y confirme ese cambio. Asumiendo
que no se haya llevado a cambio ninguna otra confirmacin, su confirmacin crear la revisin 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 revisin 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 aparecern en su copia de trabajo, y su cambio estar an presente
en button.c. En este ejemplo, el texto de Makefile es idntico en las revisiones 4, 5, y 6, pero
Subversion marcar su copia de trabajo de Makefile con la revisin 6 para indicar que an est
actualizado. Por lo que, despus de que haga una actualizacin limpia en la parte superior de su copia de
trabajo, generalmente obtendr exactamente una revisin del repositorio.

2.3.4. Cmo se unen las copias de trabajo al repositorio


Por cada fichero en un directorio de trabajo, Subversion grabar dos piezas esenciales de informacin
en 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 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 revisin de trabajo. Una confirmacin de ese fichero no har nada, y una
actualizacin 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 ningn cambio a ese
fichero en el repositorio desde su revisin base. Hay cambios locales que no se han confirmado en el
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 algn momento, para actualizarlo con la revisin pblica. Un
comando confirmar sobre el fichero no har nada, y al actualizar el fichero se traern los ltimos
cambios a su copia de trabajo.
Cambiado localmente, 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 debera actualizarse
primero; al actualizar se intentar fusionar los cambios pblicos con los cambios locales. Si

14

Conceptos bsicos

Subversion no puede completar la fusin de una forma plausible automticamente, le dejar al


usuario la tarea de resolver el conflicto.

2.4. Sumario
Hemos 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 de
rboles de revisiones del repositorio.
Hemos visto algunos ejemplos simples sobre cmo dos colaboradores pueden utilizar Subversion para
publicar 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 una
copia de trabajo.

15

Captulo 3. Preparando un servidor


To use TortoiseSVN (or any other Subversion client), you need a place where your repositories are
located. You can either store your repositories locally and access them using the file:// protocol or
you can place them on a server and access them with the http:// or svn:// protocols. The two server
protocols can also be encrypted. You use https:// or svn+ssh://. This chapter shows you step by
step on how you can set up such a server on a Windows machine.
Puede encontrar informacin ms detallada sobre las opciones del servidor de Subversion, y sobre cmo
elegir 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].
If you don't have a server and you work alone then local repositories are probably your best choice. You
can skip this chapter and go directly to Captulo 4, El repositorio.
Si estaba pensando configurar un repositorio multiusuario en una unidad compartida de red, pinselo de
nuevo. Lea Seccin 4.1.4, Accediendo a un repositorio en una unidad de red para averiguar por qu
creemos que eso es una mala idea.

3.1. Servidor basado en Apache


3.1.1. Introduccin
La configuracin ms flexible de todas las instalaciones de servidor posibles para Subversion es la que se
basa en Apache. Aunque es un poco ms 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, podra montar dicho 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 crculo de usuarios.
Autentificacin
Puede utilizar cualquier mecanismo de autentificacin que Apache soporte, incluyendo SSPI y
LDAP.
Seguridad
Dado que Apache es muy estable y seguro, automticamente obtendr la misma seguridad para su
repositorio. 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, Windows
XP con SP1, Windows 2003, Vista o Server 2008.

Aviso
Por favor tenga en cuenta que utilizar Windows XP sin el Service Pack 1 corrompe datos
de la red y por tanto podra corromper su repositorio!
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!

16

Preparando un servidor

El instalador MSI de Apache se puede encontrar haciendo click en other files (otros
ficheros), y luego navegando a binaries/win32. Puede que quiera seleccionar el fichero MSI
apache-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 del
proceso de instalacin. Asegrese de que ha introducido la URL del servidor correctamente (si no tiene
un nombre DNS para su servidor introduzca la direccin IP). Es recomendable que instale Apache
para Todos los usuarios, en el Puerto 80, como un Servicio. Nota: si ya tiene IIS u otro programa
ejecutndose que escuche en el puerto 80 la instalacin 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 instalacin - esta vez debera terminar sin problemas.
3. Ahora compruebe si el servidor web Apache funciona correctamente apuntando desde su navegador
web 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 ejecutar
con la cuenta de sistema local. Sera una prctica ms segura que creara una cuenta separada
para que Apache se ejecutara bajo ella.
Asegrese de que la cuenta en el servidor bajo la que se ejecuta Apache tenga una entrada
explcita en la lista de control de acceso del directorio del repositorio (click con el botn
derecho en el directorio | propiedades | seguridad), con control total. Si no lo hace as, los
usuarios no podrn confirmar sus cambios.
Incluso si Apache se ejecuta como sistema local, an as necesitar dicha entrada (que en
este caso debera ser la cuenta SYSTEM).
Si Apache no tiene este permiso configurado, sus usuarios tendrn mensajes de error
Acceso denegado, que se mostrarn en el registro de errores de Apache como error 500.

3.1.3. Instalando Subversion


1. 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 oscuro
mensaje 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 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 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 de
Apache (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 instalacin
de 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 Notas
y haga los siguientes cambios:
Descomente (quitando la marca '#') las siguientes lneas:

17

Preparando un servidor

#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.so


LoadModule 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 de
Subversion como TortoiseSVN. Para que Apache sepa qu URL debe utilizarse para los repositorios de
Subversion debe editar el fichero de configuracin 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. At the end of the config file add the following lines:

<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
#SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
This configures Apache so that all your Subversion repositories are physically located below D:\SVN.
The repositories are served to the outside world from the URL: http://MyServer/svn/ .
Access is restricted to known users/passwords listed in the passwd file.
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\Apache
Group\Apache2) y cree el fichero mediante

bin\htpasswd -c passwd <nombreusuario>


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

bin\htpasswd passwd <nombreusuario>


3. Reinice el servicio de Apache de nuevo.
4. Apunte su navegador a http://MiServidor/svn/MiNuevoRepositorio (donde
MiNuevoRepositorio es el nombre del repositorio de Subversion que cre antes). Si todo ha
ido bien debera ver una ventana preguntando por un usuario y una contrasea, y luego podr ver los
contenidos de su repositorio.

A short explanation of what you just entered:

18

Preparando un servidor

Configuracin

Explicacin

<Location /svn>

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:\SVN

SVNIndexXSLT
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
repositories"

"Subversion se utiliza cuando le aparezca un dilogo de autentificacin al


usuario como informacin para decirle para qu se necesita su
autentificacin

AuthUserFile passwd

especifica qu fichero de contraseas se utiliza para la


autentificacin

AuthzSVNAccessFile

lugar del fichero de Acceso para las rutas dentro del repositorio de
Subversion

Require valid-user

especifica que slo los usuarios que hayan introducido un par


usuario/contrasea vlido podrn acceder a la URL

Tabla 3.1. Configuracin de httpd.conf de Apache


But that's just an example. There are many, many more possibilities of what you can do with the Apache
web server.
Si desea que su repositorio tenga acceso de lectura para todo el mundo pero el acceso de escritura slo
para usuarios especficos, puede cambiar la lnea

Require valid-user
por

<LimitExcept GET PROPFIND OPTIONS REPORT>


Require valid-user
</LimitExcept>
Using a passwd file limits and grants access to all of your repositories as a unit. If you want more
control over which users have access to each folder inside a repository you can uncomment the line

#AuthzSVNAccessFile svnaccessfile
and create a Subversion access file. Apache will make sure that only valid users are able to access your
/svn location, and will then pass the username to Subversion's AuthzSVNAccessFile module so
that it can enforce more granular access based upon rules listed in the Subversion access file. Note that
paths are specified either as repos:path or simply path. If you don't specify a particular repository,
that access rule will apply to all repositories under SVNParentPath. The format of the authorizationpolicy file used by mod_authz_svn is described in Seccin 3.1.6, Autorizacin basada en rutas
To make browsing the repository with a web browser 'prettier', uncomment the line

19

Preparando un servidor

#SVNIndexXSLT "/svnindex.xsl"
and put the files svnindex.xsl, svnindex.css and menucheckout.ico in your document
root directory (usually C:/Program Files/Apache Group/Apache2/htdocs). The
directory is set with the DocumentRoot directive in your Apache config file.
Puede obtener estos tres ficheros directamente desde nuestro repositorio de cdigo fuente en http://
tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/other/svnindex. Si se le pide autenticacin para este
enlace, utilice guest como nombre de usuario y deje la contrasea vaca.
The XSL file from the TortoiseSVN repository has a nice gimmick: if you browse the repository with
your web browser, then every folder in your repository has an icon on the right shown. If you click on
that icon, the TortoiseSVN checkout dialog is started for this URL.

3.1.5. Mltiples repositorios


If you used the SVNParentPath directive then you don't have to change the Apache config file every
time you add a new Subversion repository. Simply create the new repository under the same location as
the first repository and you're done! In my company I have direct access to that specific folder on the
server via SMB (normal windows file access). So I just create a new folder there, run the TortoiseSVN
command TortoiseSVN Create repository here... and a new project has a home...
Si est utilizando Subversion 1.3 o posterior, puede utilizar la directiva SVNListParentPath on
para permitir que Apache produzca un listado de todos los proyectos disponibles si apunta su navegador
a la ruta raz en vez de a un repositorio en concreto.

3.1.6. Autorizacin basada en rutas


The mod_authz_svn module permits fine-grained control of access permissions based on user names
and repository paths. This is available with the Apache server, and as of Subversion 1.3 it is available
with svnserve as well.
Esto sera un fichero de ejemplo:

[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, miguel
training = zak
# Regla de acceso por defecto para TODOS los repositorios
# Todo el mundo puede leer, los administradores pueden escribir,
# Donpe Ligro est exludo.
[/]
* = r
@admin = rw
donpeligro =
# Permitir a los desarrolladores acceso completo
# al repositorio de su proyecto
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]

20

Preparando un servidor

@devteam1 = rw
@devteam2 = rw
trevor = rw
# Dar a los documentadores acceso de escritura
# a todas las carpetas de documentacin
[/trunk/doc]
@docs = rw
# Dar a los becarios acceso de escritura
# slo al repositorio de pruebas
[TrainingRepos:/]
@training = rw
Tenga en cuenta que comprobar cada ruta puede ser una operacin costosa, particularmente en el caso
del registro de revisiones. El servidor toma cada ruta cambiada en cada revisin y comprueba si se puede
leer, lo que puede ser lento en revisiones que afecten a un gran nmero de ficheros.
Authentication and authorization are separate processes. If a user wants to gain access to a repository
path, she has to meet both, the usual authentication requirements and the authorization requirements of
the access file.

3.1.7. Autentificacin con un dominio de Windows


Como habr notado necesita introducir una entrada usuario/contrasea en el fichero passwd para
cada usuario de forma separada. Y si (por razones de seguridad) quiere que sus usuarios cambien
peridicamente sus contraseas tendr que hacer el cambio de forma manual.
But there's a solution for that problem - at least if you're accessing the repository from inside a LAN with
a windows domain controller: mod_auth_sspi!
The original SSPI module was offered by Syneapps including source code. But the development for it
has been stopped. But don't despair, the community has picked it up and improved it. It has a new home
on SourceForge [http://sourceforge.net/projects/mod-auth-sspi/].
Download the module which matches your apache version, then copy the file mod_auth_sspi.so
into the Apache modules folder.
Edit the Apache config file: add the line

LoadModule sspi_auth_module modules/mod_auth_sspi.so


to the LoadModule section. Make sure you insert this line before the line

LoadModule auth_module modules/mod_auth.so


To make the Subversion location use this type of authentication you have to change the line

AuthType Basic
to

AuthType SSPI
also you need to add

21

Preparando un servidor

SSPIAuth On
SSPIAuthoritative On
SSPIDomain <domaincontroller>
SSPIOmitDomain on
SSPIUsernameCase lower
SSPIPerRequestAuth on
SSPIOfferBasic On
within the <Location /svn> block. If you don't have a domain controller, leave the name of the
domain control as <domaincontroller>.
Note that if you are authenticating using SSPI, then you don't need the AuthUserFile line to define
a password file any more. Apache authenticates your username and password against your windows
domain instead. You will need to update the users list in your svnaccessfile to reference DOMAIN
\username as well.

Importante
La autenticacin SSPI slo est habilitada para conexiones seguras por SSL (https). Si
nicamente est utilizando conexiones http normales a su servidor, no funcionar.
Para habilitar SSL en su servidor, vea el captulo: Seccin 3.1.9, Asegurando el servidor
con SSL

Sugerencia
Subversion AuthzSVNAccessFile files are case sensitive in regard to user names
(JUser is different from juser).
In Microsoft's world, Windows domains and user names are not case sensitive. Even so,
some network administrators like to create user accounts in CamelCase (e.g. JUser).
La diferencia puede morderle cuando utilice la autentificacin 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 automticamente utilizando el formato con el que se cre la cuenta.
The end result is that you may need at least two entries in your AuthzSVNAccessFile
for each user -- a lowercase entry and an entry in the same case that Internet Explorer passes
to Apache. You will also need to train your users to also type in their credentials using lower
case when accessing repositories via TortoiseSVN.
Apache's Error and Access logs are your best friend in deciphering problems such as
these as they will help you determine the username string passed onto Subversion's
AuthzSVNAccessFile module. You may need to experiment with the exact format of
the user string in the svnaccessfile (e.g. DOMAIN\user vs. DOMAIN//user) in
order to get everything working.

3.1.8. Mltiples orgenes de autentificacin


Tambin es posible tener ms de un origen de autentificacin para su repositorio de Subversion. Para
conseguirlo, debe hacer que cada tipo de autentificacin sea no-autoritario, para que Apache compruebe
mltiples orgenes buscando un par usuario/contrasea que concuerden.
Un escenario comn es utilizar tanto la autentificacin de dominio de Windows como un fichero passwd,
para que pueda dar acceso a SVN a usuarios que no tienen usuario en el dominio de Windows.

22

Preparando un servidor

To enable both Windows domain and passwd file authentication, add the following entries within
the <Location> block of your Apache config file:

AuthBasicAuthoritative Off
SSPIAuthoritative Off
Here is an example of the full Apache configuration for combined Windows domain and passwd file
authentication:

<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
AuthName "Subversion repositories"
AuthzSVNAccessFile svnaccessfile.txt
# NT Domain Logins.
AuthType SSPI
SSPIAuth On
SSPIAuthoritative Off
SSPIDomain <domaincontroller>
SSPIOfferBasic On
# Htpasswd Logins.
AuthType Basic
AuthBasicAuthoritative Off
AuthUserFile passwd
Require valid-user
</Location>

3.1.9. Asegurando el servidor con SSL


Incluso aunque Apache 2.2.x tiene soporte para OpenSSL, no est activado por defecto. Necesitar
activarlo manualmente.
1. In the apache config file, uncomment the lines:

#LoadModule ssl_module modules/mod_ssl.so


and at the bottom

#Include conf/extra/httpd-ssl.conf
then change the line (on one line)

SSLMutex "file:C:/Program Files/Apache Software Foundation/\


Apache2.2/logs/ssl_mutex"
to

SSLMutex default

23

Preparando un servidor

2. Next you need to create an SSL certificate. To do that open a command prompt (DOS-Box) and
change to the Apache folder (e.g. C:\program files\apache group\apache2) and type
the following command:

bin\openssl req -config bin\openssl.cnf -new -out my-server.csr


You will be asked for a passphrase. Please don't use simple words but whole sentences, e.g. a part of
a poem. The longer the phrase the better. Also you have to enter the URL of your server. All other
questions are optional but we recommend you fill those in too.
Normally the privkey.pem file is created automatically, but if it isn't you need to type this command
to generate it:

bin\openssl genrsa -out conf\privkey.pem 2048


Next type the commands

bin\openssl rsa -in conf\privkey.pem -out conf\server.key


and (on one line)

bin\openssl req -new -key conf\server.key -out conf\server.csr \


-config conf\openssl.cnf
and then (on one line)

bin\openssl x509 -in conf\server.csr -out conf\server.crt


-req -signkey conf\server.key -days 4000
This will create a certificate which will expire in 4000 days. And finally enter (on one line):

bin\openssl x509 -in conf\server.cert -out conf\server.der.crt


-outform DER
These commands created some files in the Apache conf folder (server.der.crt,
server.csr, server.key, .rnd, privkey.pem, server.cert).
3. Reinicie el servicio de Apache.
4. Apunte su navegador a https://nombredelservidor/svn/project ...

SSL e Internet Explorer


Si est asegurando su servidor con SSL y utiliza la autentificacin contra un dominio de
Windows se encontrar que la navegacin de repositorios con el Internet Explorer ya no
funcionar. No se preocupe - es slo que Internet Explorer no se puede autentificar. Los
dems navegadores no tienen ese problema y tanto TortoiseSVN como cualquier otro cliente
de Subversion todava podrn autentificarse.
Si todava quiere utilizar IE para navegar en el repositorio, puede:
define a separate <Location /path> directive in the Apache config file, and add
the SSPIBasicPreferred On. This will allow IE to authenticate again, but other
browsers and Subversion won't be able to authenticate against that location.

24

Preparando un servidor

Ofrezca tambin la navegacin sin autentificacin encriptada (sin SSL). Extraamente,


IE no tiene ningn problema para autentificarse si la conexin no est asegurada con SSL.
In the SSL "standard" setup there's often the following statement in Apache's virtual SSL
host:
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
There are (were?) good reasons for this configuration, see http://www.modssl.org/
docs/2.8/ssl_faq.html#ToC49 But if you want NTLM authentication you have to use
keepalive. If You uncomment the whole SetEnvIf you should be able to
authenticate IE with windows authentication over SSL against the Apache on Win32 with
included mod_auth_sspi.

Forzando el acceso SSL


When you've set up SSL to make your repository more secure, you might want to disable
the normal access via non-SSL (http) and only allow https access. To do this, you have to
add another directive to the Subversion <Location> block: SSLRequireSSL.
An example <Location> block would look like this:
<Location /svn>
DAV svn
SVNParentPath D:\SVN
SSLRequireSSL
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>

3.1.10. Utilizando certificados de cliente con hosts SSL virtuales


Enviado a la lista de correo de TortoiseSVN por Nigel Green. Gracias!
En algunas configuraciones de servidor puede que necesite configurar un nico servidor que contenga 2
hosts SSL virtuales: el primero para acceso web pblico, sin requerimientos de un certificado de cliente;
el segundo, seguro requiriendo un certificado de cliente, y ejecutando un servidor Subversion.
Al aadir una directiva SSLVerifyClient Optional en la seccin por-servidor de la configuracin
de Apache (es decir, fuera de cualquier bloque VirtualHost y Directory), se fuerza a Apache a
pedir un certificado de cliente en el saludo inicial SSL. Debido a un bug en mod_ssl, es esencial que
el certificado se pida en este punto, ya que no funciona si la conexin SSL se re-negocia.
La solucin es aadir la siguiente directiva en el directorio del host virtual que quiere bloquear para
Subversion:
SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"
Esta directiva da acceso al directorio slo si se recibi y verific correctamente un certificado de cliente.
Para resumir, las lneas relevantes de la configuracin de Apache son:

25

Preparando un servidor

SSLVerifyClient Optional
### Configuracin del virtual host para el host PBLICO
### (sin necesidad de un certificado de cliente)
<VirtualHost 127.0.0.1:443>
<Directory "rutaalaraizdeficherospublicos">
</Directory>
</VirtualHost>
### Configuracin del virtual host para SUBVERSION
### (necesita un certificado de cliente)
<VirtualHost 127.0.0.1:443>
<Directory "ruta a la raiz del host de subversion">
SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"
</Directory>
<Location /svn>
DAV svn
SVNParentPath /rutaalrepositorio
</Location>
</VirtualHost>

3.2. Servidor Basado en Svnserve


3.2.1. Introduccin
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
conexin TCP/IP ordinaria.
In most cases svnserve is easier to setup and runs faster than the Apache based server. And now that
SASL support is included it is easy to secure as well.

3.2.2. Instalando svnserve


1. Obtenga la ltima versin de Subversion desde http://subversion.tigris.org/servlets/
ProjectDocumentList?folderID=91. Alternativamente obtenga un instalador pre-empaquetado desde
CollabNet en http://www.collab.net/downloads/subversion. Este instalador pondr svnserve como un
servicio de Windows, y tambin incluye algunas de las herramientas que necesitar si va a utilizar
SASL para la seguridad.
2. Si ya tiene una versin de Subversion instalada, y svnserve se est ejecutando, necesitar pararlo antes
de continuar.
3. Run the Subversion installer. If you run the installer on your server (recommended) you can skip step 4.
4. Open the windows-explorer, go to the installation directory of Subversion (usually C:
\Program Files\Subversion) and in the bin directory, find the files svnserve.exe,
intl3_svn.dll, libapr.dll, libapriconv.dll, libapriutil.dll, libdb*.dll,
libeay32.dll and ssleay32.dll - copy these files, or just copy all of the bin directory, into
a directory on your server e.g. c:\svnserve

3.2.3. Ejecutando svnserve


Ahora que svnserve est instalado, necesitar ejecutarlo en su servidor. La forma ms sencilla es ejecutar
lo siguiente desde una ventana DOS o bien crear un acceso directo de Windows:

26

Preparando un servidor

svnserve.exe --daemon
svnserve ahora se iniciar esperando peticiones entrantes en el puerto 3690. La opcin --daemon le dice
a svnserve que se ejecute como un servicio, por lo que continuar ejecutndose hasta que manualmente
se le mande terminar.
Si an no ha creado un repositorio, siga las instrucciones dadas en la instalacin del servidor basado en
Apache Seccin 3.1.4, Configuracin.
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.
You can also increase security and save time entering URLs with svnserve by using the --root switch to
set the root location and restrict access to a specified directory on the server:

svnserve.exe --daemon --root drive:\path\to\repository\root


Using the previous test as a guide, svnserve would now run as:

svnserve.exe --daemon --root c:\repos


And in TortoiseSVN our repo-browser URL is now shortened to:

svn://localhost/TestRepo
Note that the --root switch is also needed if your repository is located on a different partition or drive
than the location of svnserve on your server.
Svnserve podr servir un nmero de repositorios arbitrario. Simplemente colquelos en algn lugar bajo
la carpeta raz que acaba de definir, y acceda a ellos utilizando una URL relativa a esa raz.

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.

3.2.3.1. Ejecutar svnserve como un servicio


Running svnserve as a user is usually not the best way. It means always having a user logged in on your
server, and remembering to restart it after a reboot. A better way is to run svnserve as a windows service.
Starting with Subversion 1.4, svnserve can be installed as a native windows service.

27

Preparando un servidor

To install svnserve as a native windows service, execute the following command all on one line to create
a service which is automatically started when windows starts.

sc create svnserve binpath= "c:\svnserve\svnserve.exe --service


--root c:\repos" displayname= "Subversion" depend= tcpip
start= auto
If any of the paths include spaces, you have to use (escaped) quotes around the path, like this:

sc create svnserve binpath= "


\"C:\Program Files\Subversion\bin\svnserve.exe\"
--service --root c:\repos" displayname= "Subversion"
depend= tcpip start= auto
You can also add a description after creating the service. This will show up in the Windows Services
Manager.

sc description svnserve "Subversion server (svnserve)"


Tenga en cuenta el formato no muy usual de la lnea de comandos utilizado por sc. En los pares key=
value no debe haber espacio entre la clave y el = pero s debe haber un espacio antes del valor.

Sugerencia
Microsoft now recommend services to be run as under either the Local Service or
Network Service account. Refer to The Services and Service Accounts Security Planning
Guide [http://www.microsoft.com/technet/security/topics/serversecurity/serviceaccount/
default.mspx]. To create the service under the Local Service account, append the following
to the example above.

obj= "NT AUTHORITY\LocalService"


Note that you would have to give the Local Service account appropriate rights to both
Subversion and your repositories, as well as any applications which are used by hook scripts.
The built-in group for this is called "LOCAL SERVICE".
Una vez que haya instalado el servicio, necesitar ir al administrador de servicios para arrancarlo (slo
por esta vez; arrancar automticamente cuando se reinicie el servidor).
Para obtener informacin ms detallada, refirase a Soporte de servicio de Windows para Svnserve [http://
svn.collab.net/repos/svn/trunk/notes/windows-service.txt].
Si ha instalado una versin anterior de svnserve utilizando el programa SVNService, y ahora quiere
utilizar el soporte nativo, deber desregistrar el programa SVNService como servicio (recuerde parar
el servicio antes!). Smplemente utilice el comando

svnservice -remove
para eliminar la entrada del registro del servicio.

3.2.4. Basic Authentication with svnserve


The default svnserve setup provides anonymous read-only access. This means that you can use an
svn:// URL to checkout and update, or use the repo-browser in TortoiseSVN to view the repository,
but you won't be able to commit any changes.

28

Preparando un servidor

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 configuracin del servicio svnserve, y tambin
contiene informacin til.
Puede habilitar el acceso annimo para escritura simplemente poniendo:
[general]
anon-access = write
Sin embargo, no sabr quin ha hecho cambios en el repositorio, dado que la propiedad svn:author
estar vaca. Tampoco podr controlar quin puede hacer cambios en el repositorio. Esta es una
configuracin algo arriesgada!
One way to overcome this is to create a password database:
[general]
anon-access = none
auth-access = write
password-db = userfile
Where userfile is a file which exists in the same directory as svnserve.conf. This file can live
elsewhere in your file system (useful for when you have multiple repositories which require the same
access rights) and may be referenced using an absolute path, or a path relative to the conf directory.
If you include a path, it must be written /the/unix/way. Using \ or drive letters will not work. The
userfile should have a structure of:
[users]
username = password
...
This example would deny all access for unauthenticated (anonymous) users, and give read-write access
to users listed in userfile.

Sugerencia
If you maintain multiple repositories using the same password database,
the use of an authentication realm will make life easier for users, as
TortoiseSVN can cache your credentials so that you only have to enter them
once. More information can be found in the Subversion book, specifically
in the sections Create a 'users' file and realm [http://svnbook.red-bean.com/
en/1.4/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.auth.users] and Client
Credentials
Caching
[http://svnbook.red-bean.com/en/1.4/
svn.serverconfig.netmodel.html#svn.serverconfig.netmodel.credcache]

3.2.5. Better Security with SASL


3.2.5.1. What is SASL?
La Capa de seguridad y autenticacin simple Cyrus (Cyrus Simple Authentication and Security Layer)
es un software de cdigo abierto escrito por la Universidad de Carnegie Mellon. Aade capacidades
genricas de autenticacin y encriptacin a cualquier protocolo de red, y desde Subversion 1.5 y
posteriores, tanto el servidor svnserve como el cliente TortoiseSVN saben cmo hacer uso de esta
biblioteca.
Para una discusin ms completa de las opciones disponibles, debera leer el libro de
Subversion en la seccin Utilizando svnserve con SASL [http://svnbook.red-bean.com/nightly/en/

29

Preparando un servidor

svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.sasl]. Si simplemente est buscando una


forma sencilla para poner autenticacin y encriptacin en un servidor Windows, para que su repositorio
pueda accederse seguramente a travs del gran e inseguro Internet, siga leyendo.

3.2.5.2. SASL Authentication


Para activar los mecanismos especficos SASL en el servidor, necesitar hacer tres cosas. Primero, cree
una seccin [sasl] en el fichero svnserve.conf de su repositorio, con este par de clave-valor:

use-sasl = true
En segundo lugar, cree un fichero llamado svn.conf en un lugar conveniente - tpicamente en el
directorio donde est instalado Subversion.
En tercer lugar, cree dos nuevas entradas de registro para indicar a SASL dnde encontrar las cosas.
Cree una clave de registro llamada [HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon
\Project Cyrus\SASL Library] y ponga dos nuevos valores de cadena dentro: SearchPath
establecido a la carpeta que contiene los plug-ins sasl*.dll (normalmente en la carpeta de instalacin
de Subversion), y ConfFile establecido a la carpeta que contiene el fichero svn.conf. Si ha utilizado
el instalador CollabNet, estas claves de registro ya habrn sido creadas por usted.
Edite el fichero svn.conf para que contenga lo siguiente:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: DIGEST-MD5
sasldb_path: C:\TortoiseSVN\sasldb
La ltima lnea muestra el lugar de la base de datos de autenticacin, que es un fichero llamado sasldb.
Este puede estar en cualquier sitio, pero una eleccin conveniente es la carpeta padre del repositorio.
Asegrese de que el servicio svnserve tiene acceso de lectura sobre este fichero.
Si svnserve ya est ejecutndose, necesitar reiniciarlo para asegurarse de que lee la configuracin
actualizada.
Ahora que todo est preparado, todo lo que necesita es crear algunos usuarios y contraseas. Para hacerlo,
necesitar el programa saslpasswd2. Si ha usado el instalador CollabNet, ese programa estar en el
diretorio de instalacin. Utilice un comando como este:

saslpasswd2 -c -f C:\TortoiseSVN\sasldb -u realm username


La opcin -f establece el lugar de la base de datos, realm debe ser el mismo valor que ha definido en
el fichero svnserve.conf de su repositorio, y el nombre de usuario es exactamente lo que se supone
que es. Tenga en cuenta que el realm no admite espacios en blanco.
Puede listar los nombres de usuarios almacenados en la base de datos utilizando el programa
sasldblistusers2.

3.2.5.3. Encriptacin SASL


Para habilitar o deshabilitar diferentes niveles de encriptacin, puede poner dos valores en el fichero
svnserve.conf de su repositorio:

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256

30

Preparando un servidor

Las variables min-encryption y max-encryption controlan el nivel de encriptacin demandado


por el servidor. Para deshabilitar la encriptacin completamente, establezca ambos valores a 0. Para
habilitar la suma simple de comprobacin (por ejemplo, previene alteraciones y garantiza la integridad
de los datos sin encriptacin), establezca ambos valores a 1. Si desea permitir (pero no requerir)
encriptacin, establezca el valor mnimo a 0 y el valor mximo a alguna longitud de bits. Para requerir
encriptacin incondicional, establezca ambos valores a nmeros mayores de 1. En nuestro ejemplo
anterior, requerimos a los clientes encriptacin de al menos 128-bits, pero no ms de 256-bits.

3.2.6. Autentificacin con svn+ssh


Another way to authenticate users with a svnserve based server is to use a secure shell (SSH) to tunnel
requests through. It is not as simple to set up as SASL, but it may be useful is some cases.
Con esta aproximacin, svnserve no se ejecuta como un servicio, en cambio, el shell seguro inicia
svnserve por usted, ejecutndolo como el usuario autentificado SSH. Para habilitar esto, necesita un
servicio de shell seguro en su servidor.
En Apndice G, Asegurando Svnserve utilizando SSH tiene un mtodo bsico para preparar su servidor.
Puede encontrar otros temas SSH en el FAQ buscando SSH.
Further information about svnserve can be found in the Version Control with Subversion [http://
svnbook.red-bean.com].

3.2.7. Autorizacin basada en rutas con svnserve


Empezando con Subversion 1.3, svnserve soporta el mismo esquema de autorizacin basada en rutas
que est disponible en el mdulo mod_authz_svn de Apache. Necesita editar el fichero conf/
svnserve.conf dentro del directorio de su repositorio y aadir una lnea refirindose a su fichero
de autorizacin.

[general]
authz-db = authz
Aqu, authz es un fichero que debe existir y que define los permisos de acceso. Puede utilizar un
fichero separado por cada repositorio, o utilizar el mismo fichero para varios repositorios. Si desea una
descripcin del formato del fichero, lea Seccin 3.1.6, Autorizacin basada en rutas.

31

Captulo 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 lnea de comandos de Subversion o con
TortoiseSVN.
Si todava no ha creado un repositorio de Subversion, ahora es el momento de hacerlo.

4.1. Creacin de repositorios


You can create a repository with the FSFS backend or with the older Berkeley Database (BDB)
format. The FSFS format is generally faster and easier to administer, and it works on network
shares and Windows 98 without problems. The BDB format was once considered more stable simply
because it has been in use for longer, but since FSFS has now been in use in the field for several
years, that argument is now rather weak. Read Choosing a Data Store [http://svnbook.red-bean.com/
en/1.4/svn.reposadmin.planning.html#svn.reposadmin.basics.backends] in the Subversion book for more
information.

4.1.1. Creando un repositorio con el cliente de lnea de comandos


1. Cree una carpeta vaca con el nombre SVN (por ejemplo, D:\SVN\), que se usar como la raz de
todos sus repositorios.
2. Cree otra carpeta MiNuevoRepositorio dentro de D:\SVN\
3. Abra un smbolo 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.

4.1.2. Creando el repositorio con TortoiseSVN

Figura 4.1. El men de TortoiseSVN para carpetas no versionadas


1. Abra el explorador de Windows

32

El repositorio

2. Cree una nueva carpeta y llmela por ejemplo SVNRepositorio


3. Haga click con el botn derecho sobre la carpeta recin creada y seleccione TortoiseSVN Crear
Repositorio aqu....
Entonces se crear un repositorio dentro de la nueva carpeta. No edite los ficheros!!!. Si obtiene
algn error asegrese de que la carpeta est vaca y que no est protegida contra escritura.

Sugerencia
TortoiseSVN ya no ofrece la opcin de crear repositorios BDB, aunque an puede utilizar
el cliente de lnea de comandos para crearlos. Los repositorios FSFS son generalmente ms
sencillos de mantener, y tambin nos facilita el mantenimiento de TortoiseSVN debido a
los problemas de compatibilidad entre las diferentes versiones de BDB.
Future versions of TortoiseSVN will not support file:// access to BDB repositories due
to these compatibility issues, although it will of course always support this repository format
when accessed via a server through the svn://, http:// or https:// protocols. For
this reason, we strongly recommend that any new repository which must be accessed using
file:// protocol is created as FSFS.
Of course we also recommend that you don't use file:// access at all, apart from local
testing purposes. Using a server is more secure and more reliable for all but single-developer
use.

4.1.3. 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 slo hay 2 barras invertidas aqu.
Antes de SVN 1.2, las rutas UNC tenan que estar dadas en la forma ms oscura file:///
\NombreDelServidor/ruta/al/repositorio. Esta forma an se puede utilizar, pero no est
recomendada.

Aviso
Do not create or access a Berkeley DB repository on a network share. It cannot exist on a
remote file system. Not even if you have the network drive mapped to a drive letter. If you
attempt to use Berkeley DB on a network share, the results are unpredictable - you may see
mysterious errors right away, or it may be months before you discover that your repository
database is subtly corrupted.

4.1.4. Accediendo a un repositorio en una unidad de red


Although in theory it is possible to put a FSFS repository on a network share and have multiple users
access it using file:// protocol, this is most definitely not recommended. In fact we would strongly
discourage it, and do not support such use.
En primer lugar, est dando a todos los usuarios acceso directo de escritura en el repositorio, por lo
que cualquier usuario podra accidentalmente borrar el repositorio completo o hacerlo inutilizable de
cualquier otra forma.

33

El repositorio

En segundo lugar, no todos los protocolos de comparticin de ficheros de red soportan el bloqueo que
Subversion necesita, por lo que puede encontrar que su repositorio se corrompe. Puede que no ocurra al
principio, pero un da dos usuarios intentarn acceder al repositorio al mismo tiempo.
En tercer lugar, tambin debe establecer los permisos de los ficheros. Puede ser sencillo en una unidad
de red nativa de Windows, pero en SAMBA esto es particularmente dificil.
file:// access is intended for local, single-user access only, particularly testing and debugging. When
you want to share the repository you really need to set up a proper server, and it is not nearly as difficult
as you might think. Read Captulo 3, Preparando un servidor for guidelines on choosing and setting up
a server.

4.1.5. Organizacin del repositorio


Antes de que importe sus datos al repositorio, primero debera pensar cmo quiere organizar sus datos.
Si utiliza uno de los patrones recomendados lo tendr luego mucho ms fcil.
There are some standard, recommended ways to organize a repository. Most people create a trunk
directory to hold the main line of development, a branches directory to contain branch copies, and
a tags directory to contain tag copies. If a repository holds only one project, then often people create
these top-level directories:
/trunk
/branches
/tags
Si un repositorio contiene mltiples 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 estn 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 estn unidos y forman un paquete de distribucin nico, a menudo es mejor indexar
por rama. De esta forma slo tendr un tronco para obtener, y las relaciones entre sub-proyectos se ven
ms fcilmente.
Si adopta una aproximacin 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 nmero de revisin del repositorio completo, no el nmero de revisin
del proyecto. Si tiene 2 proyectos que no tengan que ver compartiendo un repositorio, eso puede llevar
a que ocurran grandes lagunas en los nmeros de revisin. Los proyectos Subversion y TortoiseSVN

34

El repositorio

aparecen en el mismo servidor, pero son dos repositorios totalmente separados que permiten un desarrollo
independiente, y no hay confusin sobre los nmeros de compilacin.
Por supuesto, tiene libertad para ignorar estos patrones comunes. Puede crear cualquier variacin, la que
mejor le venga a usted o a su equipo. Recuerde que cualquiera que sea la que elija, no es una eleccin
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 disposicin a otra es slo una cuestin de ejecutar una serie de movimientos en el lado
del servidor; si no le gusta la forma en la que estn organizadas las cosas en el repositorio, slo tiene
que ir moviendo los directorios.
So if you haven't already created a basic folder structure inside your repository you should do that now.
There are two ways to achieve this. If you simply want to create a /trunk /tags /branches
structure, you can use the repository browser to create the three folders (in three separate commits). If
you want to create a deeper hierarchy then it is simpler to create a folder structure on disk first and import
it in a single commit, like this:
1. cree una nueva carpeta en su disco duro
2. cree la estructura de carpetas de primer nivel dentro de esa carpeta - no ponga ningn fichero all
todava!
3. importe esta estructura en el repositorio via click con el botn derecho en la carpeta y seleccionando
TortoiseSVN Importar.... Esto importar su carpeta temporal a la raz del repositorio para crear
la estructura bsica del repositorio.
Tenga en cuenta que el nombre de la carpeta que est importando no aparece en el repositorio, slo 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 raz del repositorio, que entonces contendr:

/trunk
/branches
/tags

4.2. 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 versin
ms reciente de sus ficheros, pero sin el repositorio toda su historia se perder para siempre.
La manera ms sencilla (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 ningn proceso
accediendo a los datos. En este contexto, acceder significa cualquier tipo de acceso. En un repositorio
BDB se escribe incluso cuando la operacin slo 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 mtodo recomendado es ejecutar

svnadmin hotcopy ruta/al/repositorio ruta/al/backup --clean-logs

35

El repositorio

para crear una copia del repositorio de forma segura. Entonces hacer una copia de seguridad de la copia.
La opcin --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 automticamente cuando instala el cliente de lnea de comandos de
Subversion. Si est instalando las herramientas de lnea de comandos en un PC con Windows, la mejor
forma de hacerlo es descargar la versin con Windows installer. Est comprimido de forma ms eficiente
que la versin .zip, por lo que la descarga es menor, y se encarga de establecer las rutas por usted.
Puede descargar la ltima versin del cliente de lnea de comandos desde http://subversion.tigris.org/
servlets/ProjectDocumentList?folderID=91.

4.3. Scripts gancho


A hook script is a program triggered by some repository event, such as the creation of a new revision
or the modification of an unversioned property. Each hook is handed enough information to tell what
that event is, what target(s) it's operating on, and the username of the person who triggered the event.
Depending on the hook's output or return status, the hook program may continue the action, stop it, or
suspend it in some way. Please refer to the chapter on Hook Scripts [http://svnbook.red-bean.com/en/1.4/
svn.reposadmin.create.html#svn.reposadmin.create.hooks] in the Subversion Book for full details about
the hooks which are implemented.
Estos scripts gancho se ejecutan por el servidor que hospeda el repositorio. TortoiseSVN tambin le
permite configurar scripts ganchos del lado del cliente que se ejecutan localmente en ciertos eventos.
Para ms informacin consulte Seccin 5.29.7, Scripts gancho del lado del cliente.
Puede encontrar scripts de ganchos en el directorio hooks del repositorio. Estos scripts de ejemplo son
vlidos 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 estndar se descartar. Si desea que aparezca
un mensaje en el dilogo Confirmacin Rechazada debe enviarlo a la salida de error. En un fichero batch
esto se consigue usando >&2

4.4. Enlaces de obtener


If you want to make your Subversion repository available to others you may want to include a link
to it from your website. One way to make this more accessible is to include a checkout link for other
TortoiseSVN users.
When you install TortoiseSVN, it registers a new tsvn: protocol. When a TortoiseSVN user clicks on
such a link, the checkout dialog will open automatically with the repository URL already filled in.
To include such a link in your own html page, you need to add code which looks something like this:

<a href="tsvn:https://tortoisesvn.tigris.org/svn/tortoisesvn/trunk">
</a>
Of course it would look even better if you included a suitable picture. You can use the TortoiseSVN logo
[http://tortoisesvn.tigris.org/images/TortoiseCheckout.png] or you can provide your own image.

36

El repositorio

<a href="tsvn:https://tortoisesvn.tigris.org/svn/tortoisesvn/trunk">
<img src=TortoiseCheckout.png></a>

37

Captulo 5. Gua de uso diario


Este documento describe el uso diario del cliente TortoiseSVN. No es una introduccin a los sistemas de
control de versiones, y no es una introduccin a Subversion (SVN). Es ms como un lugar donde puede
venir cuando sepa qu quiere hacer, pero no recuerde exactamente cmo hacerlo.
If you need an introduction to version control with Subversion, then we recommend you read the fantastic
book: Version Control with Subversion [http://svnbook.red-bean.com/].
Este documento es tambin un trabajo en progreso, igual que lo son TortoiseSVN y Subversion. Si
encuentra algn error, por favor hganoslo saber en la lista de correo para que podamos actualizar la
documentacin. Algunas de las capturas de pantalla en la Gua de Uso Diario (GUD) puede que no
reflejen el estado actual del software. Le rogamos nos disculpe. Trabajamos en TortoiseSVN en nuestro
tiempo libre.
In order to get the most out of the Daily Use Guide:
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.

5.1. Empezando
5.1.1. Iconos sobreimpresionados

Figura 5.1. Explorador mostrando iconos sobreimpresionados


One of the most visible features of TortoiseSVN is the icon overlays which appear on files in your working
copy. These show you at a glance which of your files have been modified. Refer to Seccin 5.7.1, Iconos
sobreimpresionados to find out what the different overlays represent.

5.1.2. Mens contextuales

38

Gua de uso diario

Figura 5.2. 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 mayora se ven directamente, cuando hace click con el botn 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. Tambin puede ver el men de TortoiseSVN como parte del men archivo del explorador.

Sugerencia
Some commands which are very rarely used are only available in the extended context
menu. To bring up the extended context menu, hold down the Shift key when you rightclick.
En algunos casos puede ver varias entradas de TortoiseSVN. Esto no es un error!

39

Gua de uso diario

Figura 5.3. Men archivo del explorador para un acceso directo en una carpeta
versionada
Este ejemplo es para un acceso directo sin versionar dentro de una carpeta versionada, y en el men de
archivo del Explorador hay tres entradas para TortoiseSVN. Una es para la carpeta, otra para el acceso
directo en s mismo, y otra para el objeto al que apunta el acceso directo. Para ayudarle a distinguir entre
ellos, los iconos tienen un indicador en la esquina inferior derecha para mostrarle que la entrada del men
es para un fichero, una carpeta, un acceso directo o para mltiples tems seleccionados.
Si est utilizando Windows 2000 ver que los mens contextuales se muestran slo como texto, sin
los iconos de men mostrados arriba. Sabemos que esto funcionaba en las versiones anteriores, pero
Microsoft ha cambiado la forma en la que los iconos de men funcionan en Vista, y eso nos ha forzado
a utilizar una forma para mostrarlos que desafortunadamente no funciona en Windows 2000.

5.1.3. Arrastrar y soltar

40

Gua de uso diario

Figura 5.4. Men de arrastre con el botn derecho para un directorio bajo el
control de versiones
Otros comandos estn disponibles como manejadores de arrastre, cuando arrastra con el botn derecho
ficheros o carpetas a un nuevo destino dentro de copias de trabajo, o cuando arrastra con el botn derecho
un fichero o una carpeta no versionados a un directorio que est bajo el control de versiones.

5.1.4. Atajos comunes


Some common operations have well-known Windows shortcuts, but do not appear on buttons or in menus.
If you can't work out how to do something obvious, like refreshing a view, check here.
F1
La ayuda, por supuesto.
F5
Refresca la vista actual. Este es quizs el comando de una tecla ms til. Por ejemplo... en el
Explorador esto refresca los iconos sobreimpresionados en su copia de trabajo. En el dilogo de
confirmacin volver a reescanear la copia de trabajo para ver qu puede necesitar ser confirmado.
En el dilogo de Mostrar Registro contactar con el repositorio de nuevo buscando los cambios ms
recientes.
Ctrl-A
Selecciona todo. Esto puede ser til si obtiene un mensaje de error y quiere copiar y pegarlo en un
email. Utilice Ctrl-A para seleccionar el mensaje de error y luego...
Ctrl-C
... copia el texto seleccionado.

5.1.5. Autentificacin
If the repository that you are trying to access is password protected, an authentication Dialog will show up.

41

Gua de uso diario

Figura 5.5. Dilogo de autentificacin


Enter your username and password. The checkbox will make TortoiseSVN store the credentials in
Subversion's default directory: %APPDATA%\Subversion\auth in three subdirectories:
svn.simple contiene las credenciales para la autentificacin bsica (usuario/contrasea).
svn.ssl.server contiene los certificados SSL de servidor.
svn.username contiene las credenciales para autentificacin slo por usuario (sin necesidad de
contrasea).
If you want to clear the authentication cache for all servers, you can do so from the Saved Data
page of TortoiseSVN's settings dialog. That button will clear all cached authentication data from the
Subversion auth directories, as well as any authentication data stored in the registry by earlier versions
of TortoiseSVN. Refer to Seccin 5.29.5, Datos de configuracin almacenados.
Para ms informacin sobre cmo preparar su servidor para la autentificacin y el control de acceso, vea
Captulo 3, Preparando un servidor

5.1.6. Maximizando ventanas


Muchos de los dilogos de TortoiseSVN tienen montones de informacin que mostrar, pero a menudo es
ms til maximizar slo la altura o slo la anchura, mejor que maximizar para ocupar toda la pantalla.
Como ayuda existen atajos para esto en el botn Maximizar. Utilice el botn central del ratn para
maximizar verticalmente, y el botn derecho del ratn para maximizar horizontalmente.

5.2. Importando datos en un repositorio


5.2.1. Importar
Si est importando en un repositorio que ya tiene algunos proyectos, entonces la estructura del repositorio
ya estar decidida. Si est importando datos a un nuevo repositorio entonces merece la pena tomar el
tiempo para pensar en cmo debera organizarse. Lea Seccin 4.1.5, Organizacin del repositorio para
ms informacin.
Esta seccin describe el comando importar de Subversion, que fue diseado para importar una jerarqua
de directorios en el repositorio de una vez. Aunque funciona, tiene algunos inconvenientes:
No hay forma de seleccionar los ficheros y carpetas a incluir, salvo si utiliza la configuracin del patrn
global de ignorar.

42

Gua de uso diario

La carpeta importada no se convierte en una copia de trabajo. Tiene que hacer una obtencin para
copiar los ficheros de nuevo desde el servidor.
It is easy to import to the wrong folder level in the repository.
Por estas razones le recomendamos que no utilice el comando importar en absoluto, y en cambio siga
el mtodo de dos pasos descrito en Seccin 5.2.2, Importar en el sitio. Pero dado que ya est aqu, as
es como funciona el comando importar bsico ...
Antes de importar su proyecto en un repositorio debera:
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. Organize the files in folders and sub-folders. Although it is possible to rename/move files later it is
highly recommended to get your project's structure straight before importing!
Ahora seleccione la carpeta superior de la estructura de directorios del proyecto en el explorador de
Windows, y haga click con el botn derecho para abrir el men contextual. Seleccione el comando
TortoiseSVN Importar... y aparecer un cuadro de dilogo:

Figura 5.6. El dilogo Importar


En este dilogo tiene que introducir la URL del lugar del repositorio donde desea importar su proyecto.
Es muy importante darse cuenta de que la carpeta local que est importando no aparece en s misma en
el repositorio, slo su contenido. Por ejemplo, si tiene una estructura:

C:\Proyectos\Widget\source
C:\Proyectos\Widget\doc
C:\Proyectos\Widget\images
e importa C:\Proyectos\Widget en http://mydomain.com/svn/trunk entonces puede
que se sorprenda al encontrar que sus subdirectorios van directos a trunk en vez de estar
en un subdirectorio Widget. Necesita especificar el subdirectorio como parte de la URL,
http://mydomain.com/svn/trunk/Widget-X. Tenga en cuenta que el comando importar
automticamente crea los subdirectorios en el repositorio si no existen.

43

Gua de uso diario

El mensaje de importacin se utiliza como un mensaje de registro.


Por defecto, los ficheros y carpetas que concuerden con los patrones globales de ignorar no se
importan. Para cambiar este comportamiento, puede utilizar la casilla Incluir ficheros ignorados. Lea
Seccin 5.29.1, Configuracin general para ms informacin sobre cmo establecer un patrn global
de ignorar.
As soon as you press OK TortoiseSVN imports the complete directory tree including all files into the
repository. The project is now stored in the repository under version control. Please note that the folder
you imported is NOT under version control! To get a version-controlled working copy you need to do a
Checkout of the version you just imported. Or read on to find out how to import a folder in place.

5.2.2. Importar en el sitio


Asumiendo que ya tiene un repositorio, y que quiere aadir una nueva estructura de carpetas e l, slo
tiene que seguir estos pasos:
1. Use the repository browser to create a new project folder directly in the repository.
2. Ejecute la operacin obtener de la nueva carpeta sobre la carpeta de ms alto nivel que desea importar.
Obtendr una advertencia porque la carpeta local no est vaca. Ahora tiene una carpeta de ms alto
nivel versionada con contenido no versionado.
3. Use TortoiseSVN Add... on this versioned folder to add some or all of the content. You can add
and remove files, set svn:ignore properties on folders and make any other changes you need to.
4. Confirme la carpeta de ms alto nivel, y ya tiene un nuevo rbol versionado, y una copia de trabajo
local, creada desde su carpeta existente.

5.2.3. Ficheros especiales


A veces necesitar tener un fichero bajo control de versiones que contenga datos especficos del usuario.
Esto significa que tiene un fichero que cada desarrollador/usuario necesita modificar para que se ajuste
a su configuracin local. Pero versionar ese fichero es dificil, porque cada usuario hara confirmaciones
de sus cambios cada vez en el repositorio.
In such cases we suggest to use template files. You create a file which contains all the data your developers
will need, add that file to version control and let the developers check this file out. Then, each developer
has to make a copy of that file and rename that copy. After that, modifying the copy is not a problem
anymore.
Por poner un ejemplo, puede mirar el script de compilacin de TortoiseSVN. Se invoca a un
fichero llamado TortoiseVars.bat que no existe en el repositorio. Slo existe el fichero
TortoiseVars.tmpl. TortoiseVars.tmpl es el fichero plantilla del que cada desarrollador
tiene que hacer una copia y cambiarla de nombre a TortoiseVars.bat. Dentro de ese fichero, hemos
aadido 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, tambin hemos aadido el fichero TortoiseVars.bat a la lista de
ignorados de su carpeta padre, es decir, hemos cambiado la propiedad de Subversion svn:ignore para
incluir ese nombre de fichero. De esta forma no se mostrar como no versionado en cada confirmacin.

5.2.4. Proyectos referenciados


A veces es til construir una copia de trabajo que est hecho de un nmero de obtenciones diferentes. Por
ejemplo, puede querer que diferentes carpetas vengan de orgenes distintos de un repositorio, o quizs

44

Gua de uso diario

de repositorios diferentes. Si desea que todos los usuarios tengan la misma estructura, puede definir
propiedades svn:externals.
Let's say you check out a working copy of /project1 to D:\dev\project1. Select the folder D:
\dev\project1, right click and choose Windows Menu Properties from the context menu. The
Properties Dialog comes up. Then go to the Subversion tab. There, you can set properties. Click Add....
Select the svn:externals property from the combobox and write in the edit box the repository URL
in the format name url or if you want to specify a particular revision, name -rREV url You can
add multiple external projects, 1 per line. Note that URLs must be properly escaped or they will not work.
For example you must replace each space with %20. Note that it is not possible to use folder names with
spaces in them. Suppose that you have set these properties on D:\dev\project1:

sounds
http://sounds.red-bean.com/repos
quick_graphs http://graphics.red-bean.com/repos/fast%20graphics
skins/toolkit -r21 http://svn.red-bean.com/repos/skin-maker
Now click Set and commit your changes. When you (or any other user) update your working copy,
Subversion will create a sub-folder D:\dev\project1\sounds and checkout the sounds project,
another sub-folder D:\dev\project1\quick graphs containing the graphics project, and finally
a nested sub-folder D:\dev\project1\skins\toolkit containing revision 21 of the skin-maker
project.

Sugerencia
You should strongly consider using explicit revision numbers in all of your externals
definitions, as described above. Doing so means that you get to decide when to pull down
a different snapshot of external information, and exactly which snapshot to pull. Besides
the common sense aspect of not being surprised by changes to third-party repositories that
you might not have any control over, using explicit revision numbers also means that as
you backdate your working copy to a previous revision, your externals definitions will also
revert to the way they looked in that previous revision, which in turn means that the external
working copies will be updated to match they way they looked back when your repository
was at that previous revision. For software projects, this could be the difference between a
successful and a failed build of an older snapshot of your complex code base.
Si los proyectos externos estn en el mismo repositorio, cualquier cambio que haga all se incluir en la
lista de confirmacin cuando confirme su proyecto principal.
Si los proyectos externos estn en repositorios diferentes, cualquier cambio que haga en el proyecto
externo se notificar cuando cnofirme el proyecto principal, pero tendr que confirmar esos cambios
externos de forma separada.
Si utiliza URLs absolutas en las definiciones svn:externals y tiene que relocalizar su copia de
trabajo (por ejemplo si la URL de su repositorio cambia), entonces sus externos no cambiarn y puede
que no funcionen ms.
Para evitar dichos problemas, los clientes de Subversion versin 1.5 y superior soportan URLs externas
relativas. Hay cuatro formas para especificar una URL relativa. En los siguientes ejemplos, asumimos
que tenemos dos repositorios: uno en http://example.com/svn/repos-1 y otro en http://
example.com/svn/repos-2. Tenemos una copia de trabajo de http://example.com/svn/
repos-1/project/trunk en C:\Working y la propiedad svn:externals est establecida en
trunk.
Relativa a la carpeta padre
Estas URLs siempre comienzan con la cadena ../. Por ejemplo:

45

Gua de uso diario

../../widgets/foo

common/foo-widget

Esto extraer http://example.com/svn/repos-1/widgets/foo en C:\Working


\common\foo-widget.
Tenga en cuenta que la URL es relativa a la URL del directorio con la propiedad svn:externals,
no al directorio donde la carpeta externa se escribe en el disco.
Relativo a la raz del repositorio
Estas URLs siempre comienzan con la cadena ^/. Por ejemplo:

^/widgets/foo

common/foo-widget

Esto extraer http://example.com/svn/repos-1/widgets/foo en C:\Working


\common\foo-widget.
Puede referirse fcilmente a otros repositorios con el mismo SVNParentPath (un directorio
comn que contiene varios repositorios). Por ejempo:

^/../repos-2/hammers/claw

common/claw-hammer

Esto extraer http://example.com/svn/repos-2/hammers/claw en C:\Working


\common\claw-hammer.
Relativa al esquema
Las URLs que comienzan con la cadena // copian slo la parte del esquema de la URL. Esto es
til cuando se debe acceder al mismo nombre de servidor con diferentes esquemas dependiendo de
la red; por ejemplo los clientes en la intranet utilizan http:// mientras que los clientes externos
utilizan svn+ssh://. Por ejemplo:

//example.com/svn/repos-1/widgets/foo

common/foo-widget

Esto extraer http://example.com/svn/repos-1/widgets/foo o svn+ssh://


example.com/svn/repos-1/widgets/foo dependiendo de qu mtodo se utilice para
obtener C:\Working.
Relativa al nombre del servidor
Las URLs que comienzan con la cadena / copian el esquema y el nombre del servidor de la URL,
por ejemplo:

/svn/repos-1/widgets/foo

common/foo-widget

Esto extraer http://example.com/svn/repos-1/widgets/foo en C:\Working


\common\foo-widget. Pero si obtiene su copia de trabajo desde otro servidor en svn+ssh://
another.mirror.net/svn/repos-1/project1/trunk entonces la referencia externa
extraer svn+ssh://another.mirror.net/svn/repos-1/widgets/foo.
Si necesita ms informacin sobre cmo TortoiseSVN maneja las Propiedades, lea Seccin 5.17,
Configuracin del proyecto.
Para averiguar los diferentes mtodos para acceder a subproyectos comunes lea Seccin B.6, Incluir un
sub-proyecto comn.

5.3. Obteniendo una copia de trabajo

46

Gua de uso diario

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 botn derecho para mostrar el men contextual y seleccione el comando TortoiseSVN
Obtener..., que mostrar el siguiente cuadro de dilogo:

Figura 5.7. El dilogo Obtener


Si introduce un nombre de carpeta que no an no exista, se crear un directorio con ese nombre.

5.3.1. Profundidad de obtencin


Puede elegir la profundidad que desea para la obtencin, lo que le permite especificar la profundidad de
la recusin en las carpetas hijas. Si slo desea unas pocas secciones de un rbol grande, puede obtener
slo la carpeta de ms alto nivel, y luego actualizar las carpetas seleccionadas de forma recursiva.
Totalmente recursivo
Obtener el rbol entero, incluyendo todas las carpetas hijas y subcarpetas.
Hijos inmediatos, incluyendo carpetas
Obtener el directorio especificado, incluyendo todos los fichero sy carpetas hijas, pero no rellenar
las carpetas hijas.
Slo los ficheros hijos
Obtener la carpeta especificada, incluyendo todos los ficheros pero no obtener ninguna carpeta hija.
Slo este tem
Obtener slo el directorio. No rellenarlo con ficheros ni carpetas hijas.
Copia de trabajo
Retiene la profundidad especificada en la copia de trabajo. Esta opcin no se utiliza en el dilogo
obtener, pero es el valor por defecto para todos los dems dilogos que tengan opcin de profundidad.
Si obtiene una copia de trabajo dispersa (por ejemplo seleccionando cualquier otra opcin distinta
de totalmente recursivo para la profundidad de la obtencin), puede conseguir sub-carpetas
adicionales utilizando el Navegador de repositorios (Seccin 5.23, El navegador de repositorios) o el
dilogo Comprobar modificaciones (Seccin 5.7.3, Estado local y remoto).

47

Gua de uso diario

In the repository browser, Right click on the checked out folder, then use TortoiseSVN RepoBrowser to bring up the repository browser. Find the sub-folder you would like to add to your working
copy, then use Context menu Update item to revision... That menu will only be visible if the
selected item does not exist yet in your working copy, but the parent item does exist.
En el dilogo Comprobar modificaciones, primero haga click en el botn Comprobar repositorio.
El dilogo mostrar como aadido remotamente todos los ficheros y carpetas que estn en el
repositorio pero que an no se han obtenido. Haga click con el botn derecho sobre la carpeta o carpetas
que desea aadir a su copia de trabajo, y luego utilice Men contextual Actualizar.
This feature is very useful when you only want to checkout parts of a large tree, but you want
the convenience of updating a single working copy. Suppose you have a large tree which has subfolders Project01 to Project99, and you only want to checkout Project03, Project25 and
Project76/SubProj. Use these steps:
1. Checkout the parent folder with depth Only this item You now have an empty top level folder.
2. Select the new folder and use TortoiseSVN Repo browser to display the repository content.
3. Right click on Project03 and Context menu Update item to revision.... Keep the default
settings and click on OK. You now have that folder fully populated.
Repeat the same process for Project25.
4. Navigate to Project76/SubProj and do the same. This time note that the Project76 folder
has no content except for SubProj, which itself is fully populated. Subversion has created the
intermediate folders for you without populating them.

Working copy depth cannot be reduced


Once you have checked out a working copy to a particular depth you can increase that depth
later to get more content. However you cannot reduce the depth again to remove content.
That feature may be added in a later version of Subversion.

Using an older server


Pre-1.5 servers do not understand the working copy depth request, so they cannot always
deal with requests efficiently. The command will still work, but an older server may send
all the data, leaving the client to filter out what is not required, which may mean a lot of
network traffic. If possible you should upgrade your server to 1.5.
Si el proyecto contiene referencias a proyectos externos que no desea que se obtengan al mismo tiempo,
utilice la casilla Omitir externos.

Importante
If Omit externals is checked, or if you wish to increase the depth value, you will have
to perform updates to your working copy using TortoiseSVN Update to Revision...
instead of TortoiseSVN Update. The standard update will include all externals and
keep the existing depth.
It is recommended that you check out only the trunk part of the directory tree, or lower. If you specify
the parent path of the directory tree in the URL then you might end up with a full hard disk since you
will get a copy of the entire repository tree including every branch and tag of your project!

48

Gua de uso diario

Exportando
A veces puede querer crear una copia local sin ninguno de esos directorios .svn, por
ejemplo para crear un fichero comprimido de sus fuentes. Lea Seccin 5.25, Exportando
una copia de trabajo de Subversion para averiguar cmo hacerlo.

5.4. Confirmando sus cambios en el 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
ejecutar TortoiseSVN Actualizar directamente, o bien ejecutar TortoiseSVN Comprobar
Modificaciones primero, para ver qu se ha cambiado localmente o en el servidor.

5.4.1. El dilogo de Confirmacin


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.8. El dilogo de Confirmacin


El dilogo de confirmacin le mostrar todos los ficheros cambiados, incluso los ficheros aadidos,
borrados o no versionados. Si no desea que un fichero cambiado se confirme, smplemente desmarque
ese fichero. Si desea incluir un fichero no versionado, mrquelo para aadirlo a la confirmacin.

49

Gua de uso diario

Los tems que han sido cambiados a una ruta de repositorio diferente tambin se indican utilizando un
marcador (s). Puede haber cambiado algo mientras trabaja en una rama y habrsele olvidado volver a
cambiarlo al tronco. Este es su signo de advertencia!

Confirmar ficheros o carpetas?


Cuando confirma ficheros, el dilogo de confirmacin slo le ensea los ficheros que ha
seleccionado. Cuando confirma una carpeta el dilogo de confirmacin seleccionar los
ficheros que han cambiado de forma automtica. 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; slo le hace la vida ms fcil haciendo ms trabajo
por usted.
Si ha modificado ficheros que han sido incluidos desde un repositorio diferente utilizando
svn:externals, esos cambios no pueden ser includos en la misma confirmacin atmica. Aparecer
un smbolo de advertencia bajo la lista de ficheros que le indicar si esto ha ocurrido, y el texto de ayuda
le explicar que esos ficheros externos deben confirmarse de forma separada.

Muchos ficheros sin versionar en el dilogo de confirmar


If you think that the commit dialog shows you too many unversioned (e.g. compiler
generated or editor backup) files, there are several ways to handle this. You can:
aadir el fichero (o una extensin con mscara) a la lista de ficheros a ignorar en la pgina
de configuracin. Esto afectar a todas las copias de trabajo que tenga.
aadir el fichero a la lista de svn:ignore utilizando TortoiseSVN Aadir 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 Dilogo de Propiedades SVN.
Read Seccin 5.13, Ignorando ficheros y directorios for more information.
Double clicking on any modified file in the commit dialog will launch the external diff tool to show your
changes. The context menu will give you more options, as shown in the screenshot. You can also drag
files from here into another application such as a text editor or an IDE.
You can select or deselect items by clicking on the checkbox to the left of the item. For directories you
can use Shift-select to make the action recursive.
Las columnas que se muestran en el panel inferior son personalizables. Si hace click con el botn derecho
en cualquier cabecera de columna ver un men contextual que le permite seleccionar qu columnas se
muestran. Tambin puede cambiar el ancho de la columna utilizando el manejador de arrastre que aparece
cuando mueve el cursor sobre el lmite de una columna. Estas personalizaciones se mantienen, por lo que
ver los mismos encabezados la siguiente vez.
By default when you commit changes, any locks that you hold on files are released automatically
after the commit succeeds. If you want to keep those locks, make sure the Keep locks checkbox is
checked. The default state of this checkbox is taken from the no_unlock option in the Subversion
configuration file. Read Seccin 5.29.1, Configuracin general for information on how to edit the
Subversion configuration file.

Arrastrar y soltar
Puede arrastrar ficheros hasta el dilogo de confirmacin desde cualquier otro lugar,
siempre y cuando las copias de trabajo sean del mismo repositorio. Por ejemplo, puede tener

50

Gua de uso diario

una copia de trabajo enorme con diferentes ventanas del explorador abiertas en carpetas
distantes de la jerarqua. Si quiere evitar confirmar desde la carpeta ms alta (lo que implica
una lenta operacin de bsqueda de cambios) puede abrir el dilogo de confirmar para
una carpeta y arrastrar desde las otras ventanas para incluir ficheros dentro de la misma
confirmacin atmica.
Puede arrastrar ficheros no versionados que residan dentro de una copia de trabajo al dilogo
de confirmacin, y automticamente sern SVN aadidos.

Reparando renombrados externos


A veces los ficheros se renombran fuera de Subversion, y se muestran en la lista de
ficheros como un fichero faltante y un fichero no versionado. Para evitar perder la historia
necesita notificar a Subversion su conexin. Simplemente seleccione tanto el nombre
antiguo (faltante) como el nombre nuevo (sin versionar) y utilice Men contextual
Reparar movimiento para emparejar los dos ficheros como un renombrado.

5.4.2. Listas de cambios


El dilogo de confirmacin da soporte a las listas de cambios de Subversion para ayudar a agrupar ficheros
relacionados. Averigue ms sobre esta caracterstica en Seccin 5.8, Listas de cambios.

5.4.3. Excluyendo tems de la lista de confirmacin


A veces tiene ficheros versionados que cambian con frecuencia pero que realmente no desea confirmar.
En ocasiones esto indica un fallo en su sistema de compilacin - por qu estn esos ficheros versionados?
debera utilizar ficheros de plantilla? Pero ocasionalmente es inevitable. Una razn clsica es que su IDE
cambie una fecha en el fichero de proyecto cada vez que lo compile. El fichero de proyecto debe estar
versionado ya que contiene todas las configuraciones de la compilacin, pero no necesita confirmarse
slo porque la fecha haya cambiado.
Para ayudarle en casos tan extraos como estos, hemos reservado una lista de cambios llamada ignoreon-commit. Cualquier fichero aadido a esta lista de cambios se desmarcar automticamente en el
dilogo de confirmacin. An puede confirmar los cambios, pero tendr que selecionarlo manualmente
en el dilogo de confirmacin.

5.4.4. Commit Log Messages


Asegrese de introducir un mensaje de registro que describa los cambios que est confirmando. Esto
le ayudar a saber qu ocurri y cuando segn navegue por los mensajes de registro del proyecto en el
futuro. El mensaje puede ser tan extenso o escueto como desee; muchos proyectos tienen directrices sobre
qu debe incluirse en ellos, el idioma que debe utilizarse, y a veces incluso un formato estricto.
Puede aplicar formatos sencillos en sus mensajes de registro utilizando una convencin similar a la usada
en los emails. Para aplicar un estilo a un texto, utilice *texto* para la negrita, _texto_ para el
subrayado, y ^texto^ para la cursiva.

51

Gua de uso diario

Figura 5.9. El corrector ortogrfico del dilogo de Confirmacin


TortoiseSVN incluye un corrector ortogrfico para ayudarle a escribir sus mensajes de registro
correctamente. Este corrector sealar cualquier palabra mal escriba. Utilice el men contextual para
acceder a las correcciones sugeridas. Por supuesto, el corrector no conoce todos los trminos tcnicos
que utiliza, as que a veces palabras bien escritas aparecern como errores. Pero no se preocupe. Puede
simplemente aadirlas a su diccionario personal utilizando el men contextual.
The log message window also includes a filename and function auto-completion facility. This uses regular
expressions to extract class and function names from the (text) files you are committing, as well as the
filenames themselves. If a word you are typing matches anything in the list (after you have typed at least 3
characters, or pressed Ctrl+Space), a drop-down appears allowing you to select the full name. The regular
expressions supplied with TortoiseSVN are held in the TortoiseSVN installation bin folder. You can
also define your own regexes and store them in %APPDATA%\TortoiseSVN\autolist.txt. Of
course your private autolist will not be overwritten when you update your installation of TortoiseSVN. If
you are unfamiliar with regular expressions, take a look at the introduction at http://en.wikipedia.org/wiki/
Regular_expression, and the online documentation and tutorial at http://www.regular-expressions.info/.
Puede reutilizar mensajes de registro que haya introducido anteriormente. Tan slo debe pulsar en
Mensajes recientes para ver una lista de los ltimos mensajes que ha introducido para esta copia de
trabajo. El nmero de mensajes almacenados se puede personalizar en el dilogo de configuracin de
TortoiseSVN.
Puede limpiar todos los mensajes de confirmacin almacenados desde la pgina Datos Almacenados de
la configuracin de TortoiseSVN, o puede eliminar mensajes individuales dentro del dilogo Mensajes
recientes utilizando la tecla Supr.

52

Gua de uso diario

Propiedades especiales de carpetas


Hay diversas propiedades especiales de carpeta que pueden usarse para darle mayor control
sobre el formato de los mensajes de registro de las confirmaciones y el idioma que utiliza el
mdulo del corrector ortogrfico. Para ms informacin, lea Seccin 5.17, Configuracin
del proyecto.

Integration with Bug Tracking Tools


If you have activated the bug tracking system, you can set one or more Issues in the BugID / Issue-Nr: text box. Multiple issues should be comma separated. Alternatively, if you
are using regex-based bug tracking support, just add your issue references as part of the
log message. Learn more in Seccin 5.27, Integracin con sistemas de control de errores /
seguimiento de incidencias.

5.4.5. Progreso de confirmacin


Tras pulsar Aceptar aparece un dilogo mostrando el progreso de la confirmacin.

Figura 5.10. El dilogo Progreso mostrando el progreso de una confirmacin


El dilogo de progreso utiliza una codificacin de colores para resaltar las diferentes acciones de
confirmacin:
Azul
Confirmando una modificacin.
Prpura
Confirmando un tem aadido.
Rojo oscuro
Confirmando un borrado o un reemplazo.
Negro
Todos los dems tems.
Este es el esquema de colores por defecto, pero puede personalizar dichos colores utilizando el dilogo de
configuracin. Para ms informacin, lea Seccin 5.29.1.4, Configuracin de colores de TortoiseSVN.

5.5. Actualice su copia de trabajo con los cambios de otros

53

Gua de uso diario

Figura 5.11. Dilogo de progreso mostrando una actualizacin terminada


Periodically, you should ensure that changes done by others get incorporated in your local working copy.
The process of getting changes from the server to your local copy is known as updating. Updating may
be done on single files, a set of selected files, or recursively on entire directory hierarchies. To update,
select the files and/or directories you want, right click and select TortoiseSVN Update in the explorer
context menu. A window will pop up displaying the progress of the update as it runs. Changes done by
others will be merged into your files, keeping any changes you may have done to the same files. The
repository is not affected by an update.
El dilogo de progreso utiliza un cdigo de colores para resaltar diferentes acciones de actualizacin:
Prpura
Nuevo tem aadido a su copia de trabajo
Rojo oscuro
tem redundante borrado de su copia de trabajo, o tem faltante reemplazado en su copia de trabajo.
Verde
Cambios del repositorio que se han fusionado satisfactoriamente con sus cambios locales.
Rojo brillante
Cambios del repositorio fusionados con sus cambios locales, pero que han dado lugar a conflictos
que debe resolver.
Negro
Items sin cambios en su copia de trabajo actualizados con una versin ms nueva desde el repositorio.
Este es el esquema de colores por defecto, pero puede personalizar dichos colores utilizando el dilogo de
configuracin. Para ms informacin, lea Seccin 5.29.1.4, Configuracin de colores de TortoiseSVN.
If you get any conflicts during an update (this can happen if others changed the same lines in the same file
as you did and those changes don't match) then the dialog shows those conflicts in red. You can double
click on these lines to start the external merge tool to resolve the conflicts.
When the update is complete, the progress dialog shows a summary of the number of items updated,
added, removed, conflicted, etc. below the file list. This summary information can be copied to the
clipboard using Ctrl+C.
The standard Update command has no options and just updates your working copy to the HEAD revision
of the repository, which is the most common use case. If you want more control over the update process,

54

Gua de uso diario

you should use TortoiseSVN Update to Revision... instead. This allows you to update your working
copy to a specific revision, not only to the most recent one. Suppose your working copy is at revision
100, but you want it to reflect the state which it had in revision 50 - then simply update to revision 50.
In the same dialog you can also choose the depth at which to update the current folder. The terms used
are described in Seccin 5.3.1, Profundidad de obtencin. The default depth is Working copy, which
preserves the existing depth setting. You can also choose whether to ignore any external projects in the
update (i.e. projects referenced using svn:externals).

Atencin
If you update a file or folder to a specific revision, you should not make changes to those
files. You will get out of date error messages when you try to commit them! If you want
to undo changes to a file and start afresh from an earlier revision, you can rollback to a
previous revision from the revision log dialog. Take a look at Seccin B.4, Roll back
(Undo) revisions in the repository for further instructions, and alternative methods.
Actualizar a la revisin puede ser til a veces para ver cmo estaba su proyecto en un momento anterior
en su historia. Pero en general, actualizar ficheros individuales a una revisin 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 revisin no haba ningn fichero con ese nombre. Si simplemente desea una copia local de
una versin antigua de un fichero, es mejor utilizar para ese fichero el comando Men Contextual
Grabar la revisin como... desde el dilogo de registro.

Mltiples ficheros/carpetas
Si selecciona mltiples 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 revisin!
Incluso si entre esas actualizaciones ocurri alguna confirmacin.

El fichero local ya existe


A veces cuando intente actualizar, la actualizacin falla con un mensaje para decir que ya
existe un fichero local con el mismo nombre. Esto tpicamente ocurre cuando Subversion
intenta obtener un fichero recin 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 recin confirmado
fichero.
Si obtiene este mensaje de error, la solucin es simplemente renombrar el fichero local sin
versionar. Tras completar la actualizacin, 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.

5.6. Resolviendo conflictos


De vez en cuando, obtendr un conflicto cuando actualiza sus ficheros desde el repositorio. Un conflicto
ocurre cuando dos o ms desarrolladores han hecho cambios en las mismas lneas de un fichero. Dado

55

Gua de uso diario

que Subversion no sabe nada de su proyecto, delega la resolucin de los conflictos en los desarrolladores.
Cuando se le informa de un conficto, debera abrir el fichero en cuestin, y buscar lneas que empiecen
con el texto <<<<<<<. El rea conflictiva se marca as:

<<<<<<< nombre-del-fichero
sus cambios
=======
cdigo fusionado del repositorio
>>>>>>> revisin
Adems, 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 ms.
nombre-del-fichero.ext.rREV-ANTIGUA
Este es el fichero que era la revisin 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 revisin HEAD del repositorio.
Puede o bien lanzar una herramienta externa de fusiones / editor de conflictos con el men contextual
TortoiseSVN Editar Conflictos o bien utilizar otro editor manualmente para resolver el conflicto.
Debe decidir cmo tiene que quedar el cdigo, hacer los cambios necesarios, y grabar el fichero.
Despus, 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*, dejndole confirmar sus cambios.
Si tiene conflictos con ficheros binarios, Subversion no intentar mezclar dichos ficheros por si mismo.
El fichero local se mantendr sin cambios (exactamente tal y como lo haba cambiado usted) y obtendr
unos ficheros nombrefichero.ext.r*. Si desea descartar sus cambios y quedarse con la versin
del repositorio, utilice el comando Revertir. Si desea mantener su versin y sobreescribir la versin del
repositorio, utilice el comando Resuelto y luego confirme su versin.
Puede utilizar el comando Resuelto para mltiples ficheros si pulsa con el botn derecho en la carpeta
padre y selecciona TortoiseSVN Resuelto... Esto mostrar un dilogo con todos los ficheros en
conflicto dentro de esa carpeta, y le permitir seleccionar cules marcar como resueltos.

5.7. Obteniendo informacin del estado


Mientras est trabajando en su copia de trabajo a menudo necesitar saber qu ficheros ha cambiado/
aadido/borrado o renombrado, o incluso qu ficheros han sido cambiados y confirmados por los dems.

5.7.1. Iconos sobreimpresionados

56

Gua de uso diario

Figura 5.12. Explorador 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 aade lo que se llama un icono sobreimpresionado al icono de cada fichero
que se superpone al icono original del fichero. Dependiendo del estado en Subversion del fichero, el
icono sobreimpresionado es diferente.

Una copia de trabajo recin obtenida tiene una marca verde como sobreimpresin. 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 exclamacin roja. De esta forma puede ver fcilmente qu ficheros se
han cambiado desde la ltima vez que actualiz su copia de trabajo, y que necesitan ser confirmados.

Si durante una actualizacin ocurre un conflicto, el icono cambia a un signo de exclamacin amarillo.

Si ha establecido la propiedad svn:needs-lock en un fichero, Subversion establece ese fichero


como de slo-lectura hasta que obtenga un bloqueo en l. Estos ficheros tienen esta sobreimpresin para
indicarle que debe obtener un bloqueo antes de que pueda editarlo.

Si ha obtenido un bloqueo sobre un fichero, y el estado de Subversion es normal, este icono


sobreimpresionado le recordar que debera liberar el bloqueo si no lo est utilizando para permitir a los
dems que puedan confirmar sus cambios en el fichero.

Este icono le muestra que algunos ficheros o carpetas dentro de la carpeta actual se han marcado para ser
eliminados del control de versiones, o bien que falta un fichero que est bajo el control de versiones
dentro de una carpeta.

57

Gua de uso diario

El signo ms le indica que el fichero o carpeta est programado para ser aadido al control de versiones.

La barra le indica que el fichero o carpeta est ignorado para los asuntos de control de versiones. Esta
sobreimpresin es opcional.

Este icono muestra los archivos y carpetas que no estn bajo el control de versiones pero tampoco han
sido ignorados. Esta sobreimpresin es opcional.
De hecho, puede que se encuentre con que no todos estos iconos se utilizan en su sistema. Esto se debe
a que el nmero de sobreimpresiones permitidas por Windows est muy limitado y si est utilizando
tambin una versin antigua de TrotoiseCVS, entonces no hay suficientes huecos de sobreimpresin
disponibles. TortoiseSVN intenta ser un Buen Ciudadano (TM) y limita su uso de sobreimpresiones
para darles una oportunidad al resto de aplicaciones.
Ahora que hay ms clilentes Tortoise por ah (TortoiseCVS, TortoiseHG, ...) el lmite de iconos se ha
convertido en un problema real. Para evitarlo, el proyecto TortoiseSVN ha introducido un conjunto
compartido comn de iconos, cargado como una DLL, que puede ser usado por todos los clientes Tortoise.
Compruebe con el proveedor de su cliente para ver si esto ya se ha integrado :-)
Si desea una descripcin de cmo se corresponden las sobreimpresiones con los estados de Subversion
y otros detalles tcnicos, lea Seccin F.1, Iconos sobreimpresionados.

5.7.2. Columnas de TortoiseSVN en el Explorador de Windows


Se puede ver la misma informacin que est disponible en los iconos sobreimpresionados (y mucha ms)
como columnas adicionales en la Vista Detalles del Explorador de Windows.
Simply right click on one of the headings of a column, choose More... from the context menu displayed. A
dialog will appear where you can specify the columns and their order, which is displayed in the Detailed
View. Scroll down until the entries starting with SVN come into view. Check the ones you would like to
have displayed and close the dialog by pressing OK. The columns will be appended to the right of those
currently displayed. You can reorder them by drag and drop, or resize them, so that they fit your needs.

Importante
Las columnas adicionales en el Explorador de Windows no estn disponibles en Vista, dado
que Microsoft decidi no habilitar tales columnas para todos los ficheros, sino nicamente
para tipos de ficheros especficos.

Sugerencia
Si desea que la organizacin actual se muestre en todas sus copias de trabajo, puede que
desee convertirla en su vista por defecto.

5.7.3. Estado local y remoto

58

Gua de uso diario

Figura 5.13. Comprobar modificaciones


A menudo es muy til saber qu ficheros ha cambiado y tambin qu ficheros han cambiado y confirmado
los dems. Ah es donde viene bien el comando TortoiseSVN Comprobar Modificaciones.... Este
dilogo le muestra todos los ficheros que ha cambiado de alguna forma en su copia de trabajo, y adems
todos los ficheros no versionados que pueda tener.
Si pulsa en el botn Comprobar Repositorio tambin puede comprobar los cambios en el repositorio. De
esa forma puede comprobar antes de hacer una actualizacin si es posible que haya un conflicto. Tambin
puede actualizar los ficheros seleccionados desde el repositorio sin actualizar la carpeta completa.
El dilogo utiliza un cdigo de colores para resaltar el estado.
Azul
tems modificados localmente.
Prpura
tems aadidos. Los tems que han sido aadidos con historia tienen un signo + en la columna Estado
del texto, y un texto de ayuda que le muestra de dnde ha sido copiado.
Rojo oscuro
tems faltantes o borrados.
Verde
tems modificados localmente y en el repositorio. Los cambios se fusionarn al actualizar. sto puede
producir conflictos al actualizar.
Rojo brillante
Items modificados localmente y borrados en el repositorio, o modificados en el repositorio y borrados
localmente. Esto producir conflictos al actualizar.
Negro
tems sin cambios y sin versionar.
Este es el esquema de colores por defecto, pero puede personalizar dichos colores utilizando el dilogo de
configuracin. Para ms informacin, lea Seccin 5.29.1.4, Configuracin de colores de TortoiseSVN.
Los tems que han sido cambiados a una ruta de repositorio diferente tambin se indican utilizando un
marcador (s). Puede haber cambiado algo mientras trabaja en una rama y habrsele olvidado volver a
cambiarlo al tronco. Este es su signo de advertencia!

59

Gua de uso diario

Desde el men contextual del dilogo puede mostrar un resumen de los cambios. Compruebe los cambios
locales que usted ha hecho utilizando Men Contextual Comparar con Base. Compruebe los
cambios en el repositorio hechos por los dems utilizando Men Contextual Mostrar Diferencias
como Diff Unificado.
You can also revert changes in individual files. If you have deleted a file accidentally, it will show up
as Missing and you can use Revert to recover it.
Los ficheros sin versionar y los ignorados se pueden enviar a la papelera de reciclaje desde aqu utilizando
Men Contextual Eliminar. Si quiere eliminar los ficheros de forma definitiva (sin utilizar la papelera
de reciclaje) pulse la tecla Maysculas mientras hace click en Eliminar.
Si desea examinar un fichero ms en detalle, puede arrastrarlo desde aqu a otra aplicacin, tal como un
editor de textos o un IDE.
Las columnas son personalizables. Si hace click con el botn derecho en cualquier cabecera de columna
ver un men contextual que le permite seleccionar qu columnas se muestran. Tambin puede cambiar
el ancho de la columna utilizando el manejador de arrastre que aparece cuando mueve el cursor sobre el
lmite de una columna. Estas personalizaciones se mantienen, por lo que ver los mismos encabezados
la prxima vez.
If you are working on several unrelated tasks at once, you can also group files together into changelists.
Read Seccin 5.4.2, Listas de cambios for more information.
En la parte inferior del dilogo puede ver un sumario del rango de revisiones del repositorio en uso en su
copia de trabajo. Estas son revisiones confirmadas, no las revisiones actualizadas; representan el rango
de revisiones donde estos ficheros fueron confirmados por ltima vez, no las revisiones a las que se han
actualizado. Tenga en cuenta que el rango de revisiones mostrado se aplica slo a los tems mostrados,
no a la copia de trabajo completa. Si quiere ver esa informacin para la copia de trabajo completa debe
seleccionar la casilla Mostrar ficheros no modificados.

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 jerarqua de carpetas, entonces el dilogo Comprobar
modificaciones es la forma ms sencilla de conseguirlo. Smplemente seleccione la casilla
Mostrar archivos no modificados para ver todos los ficheros de su copia de trabajo.

Reparando renombrados externos


A veces los ficheros se renombran fuera de Subversion, y se muestran en la lista de
ficheros como un fichero faltante y un fichero no versionado. Para evitar perder la historia
necesita notificar a Subversion su conexin. Simplemente seleccione tanto el nombre
antiguo (faltante) como el nombre nuevo (sin versionar) y utilice Men contextual
Reparar movimiento para emparejar los dos ficheros como un renombrado.

5.7.4. Viendo diferencias


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 desde el men
contextual de TortoiseSVN. Esto inicia el visor externo de diferencias, que comparar el fichero actual
con la copia prstina (revisin BASE), que se guard tras su obtencin o tras la ltima actualizacin.

60

Gua de uso diario

Sugerencia
Puede mostrar diferencias incluso cuando no est dentro de una copia de trabajo, o cuando
tiene mltiples versiones del fichero alrededor:
Seleecione los dos ficheros que desea comparar en el explorador (por ejemplo, utilizando
la tecla Ctrl y el ratn) y seleccione Diferenciar del men contextual de TortoiseSVN. El
fichero que haya pulsado en ltimo lugar (el que tiene el foco, es decir, el rectngulo con
puntos) ser tomado como ms nuevo.

5.8. Listas de cambios


En un mundo ideal, slo trabajar en una cosa cada vez, y su copia de trabajo slo contendr un conjunto
de cambios lgicos. Vale, de vuelta al mundo real. A menudo ocurre que tiene que trabajar en varias tareas
sin relacin entre s a la vez, y cuando mira en el dilogo de confirmar, todos los cambios estn juntos
y mezclados. La caracterstica lista de cambios le ayuda a hacer agrupaciones de ficheros, facilitando
ver qu se est haciendo. Por supuesto sto slo funciona si los cambios no se superponen. Si dos tareas
diferentes afectan al mismo archivo, no hay forma de separar los cambios.

Importante
The changelist feature in TortoiseSVN is only available in Windows XP and later, as it
depends on a shell capability which is not present in Windows 2000. Sorry, but Win2K is
really quite old now, so please don't complain.
Puede ver las listas de cambios en varios lugares, pero los ms importantes son el dilogo de confirmacin
y el de comprobar modificaciones. Empecemos en el dilogo comprobar modificaciones despus de que
haya estado trabajando en varias caractersticas y varios ficheros. La primera vez que abra el dilogo,
todos los ficheros modificados se muestran juntos. Supongamos que ahora quiere organizar las cosas y
agrupar esos ficheros segn la caracterstica.
Select one or more files and use Context Menu Move to changelist to add an item to a changelist.
Initially there will be no changelists, so the first time you do this you will create a new changelist. Give
it name which describes what you are using it for, and click OK. The dialog will now change to show
groups of items.
Una vez que haya creado una lista de cambios puede arrastrar y soltar tems en ella, tanto desde otra lista
de cambios como desde el Explorador de Windows. Arrastrar desde el Explorador puede ser til ya que
le permite aadir tems a una lista de cambios antes de que el fichero sea modificado. Puede hacer eso
desde el dilogo comprobar modificaciones, pero slo si muestra todos los ficheros no modificados.

61

Gua de uso diario

Figura 5.14. Commit dialog with Changelists


In the commit dialog you can see those same files, grouped by changelist. Apart from giving an immediate
visual indication of groupings, you can also use the group headings to select which files to commit.
On XP, there is a context menu when you right click on a group heading which gives you the choice to
check or uncheck all group entries. On Vista however the context menu is not necessary. Click on the
group header to select all entries, then check one of the selected entries to check all.
TortoiseSVN reserva un nombre de lista de cambios para su propio uso, llamada ignore-on-commit.
Se utiliza para marcar los ficheros versionados que casi nunca querr confirmar, incluso aunque tengan
cambios locales. Esta caracterstica se describe en Seccin 5.4.3, Excluyendo tems de la lista de
confirmacin.
Cuando confirme ficheros que pertenezcan a una lista de cambios, normalmente no es necesario que
dichos ficheros sigan perteneciendo a la lista de cambios. Por este motivo, y por defecto, los ficheros
se eliminan de las listas de cambios automticamente al ser confirmados. Si desea mantener el fichero
en su lista de cambios, utilice la casilla Mantener listas de cambios en la parte inferior del dilogo
de confirmacin.

62

Gua de uso diario

Sugerencia
Changelists are purely a local client feature. Creating and removing changelists will not
affect the repository, nor anyone else's working copy. They are simply a convenient way
for you to organise your files.

5.9. Dilogo de Registro de revisiones


Para cada cambio que haga y confirme, debera proporcionar un mensaje de registro de ese cambio. As
podr averiguar despus qu cambios hizo y por qu, y tendr un registro detallado para su proceso de
desarrollo.
El dilogo de Registro de revisiones recopila todos esos mensajes de registro y se los ensea. 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 revisin y el inicio del
mensaje de registro.
Las lneas azules indican que algo se ha copiado a esta lnea de desarrollo (quizs desde una rama).
El panel medio le muestra el mensaje de registro completo para la revisin seleccionada.
El panel inferior le muestra una lista de todos los ficheros y carpetas que se cambiaron como parte
de la revisin seleccionada.
Pero hace mucho ms que eso - le proporciona comandos del men contextual que puede utilizar para
obtener an ms informacin de la historia del proyecto.

63

Gua de uso diario

5.9.1. Invocando el dilogo de Registro de revisiones

Figura 5.15. El dilogo de Registro de revisiones


Hay varios lugares desde los que puede mostrar el dilogo de Registro:
Desde el submen contextual de TortoiseSVN
Desde la pgina de propiedades
Desde el dilogo de Progreso despus de que termine una actualizacin. En ese caso el dilogo de
Registro slo le mostrar aquellas revisiones que cambiaron desde su ltima actualizacin

5.9.2. Revision Log Actions


El panel superior tiene una columna Acciones que contiene iconos que resumen qu se ha hecho en esa
revisin. Hay cuatro iconos diferentes, cada uno mostrado en su propia columna.

Si una revisin modific un fichero o un directorio, se muestra el icono modificado en la primera columna.

If a revision added a file or directory, the added icon is shown in the second column.

64

Gua de uso diario

If a revision deleted a file or directory, the deleted icon is shown in the third column.

Si una revisin reemplaz un fichero o un directorio, se muestra el icono reemplazado en la cuarta


columna.

5.9.3. Obteniendo informacin adicional

Figura 5.16. El panel superior del dilogo de Registro de revisiones con el men
contextual
El panel superior del dilogo de Registro tiene un men contextual que le permite acceder a mucha ms
informacin. Algunas de las entradas de este men aparecen slo cuando se muestra el registro de un
fichero, y algunas slo cuando se muestra el registro de una carpeta.
Comparar las revisiones seleccionadas con su copia de trabajo. La Herramienta de Diferencias por
defecto es TortoiseMerge que se proporciona con TortoiseSVN. Si el dilogo 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 revisin seleccionada como fichero de diff unificado (formato de parche
GNU). Esto le muestra slo las diferencias con unas pocas lneas de contexto. Es ms dificil de leer que
una comparacin visual de ficheros, pero le mostrar todos los cambios juntos en un formato compacto.
Compara la revisin seleccionada con la revisin anterior. Esto funciona de forma similar a comparar
con su copia de trabajo.
Blame the selected revision, and the file in your working BASE and compare the blame reports using
a visual diff tool. Read Seccin 5.22.2, Autora de las diferencias for more detail. (files only).
Blame the selected revision, and the previous revision, and compare the results using a visual diff tool.
(folders only).
Save the selected revision to a file so you have an older version of that file. (files only).
Open the selected file, either with the default viewer for that file type, or with a program you choose.
(files only).
Muestra la autora del fichero hasta la revisin seleccionada (slo para ficheros).

65

Gua de uso diario

Open the repository browser to examine the selected file or folder in the repository as it was at the
selected revision.
Crear una rama/etiqueta desde una revisin 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 versin.
Actualizar su copia de trabajo a la revisin 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
slo un fichero, ya que si no su copia de trabajo ser inconsistente y no podr confirmar ningn cambio.
Revert changes from which were made in the selected revision. The changes are reverted in your
working copy so this operation does not affect the repository at all! Note that this will undo the changes
made in that revision only. It does not replace your working copy with the entire file at the earlier
revision. This is very useful for undoing an earlier change when other unrelated changes have been
made since. If you have made local changes, this command will merge these changes into your working
copy.
Revert to an earlier revision. If you have made several changes, and then decide that you really want
to go back to how things were in revision N, this is the command you need. Again, the changes are
reverted in your working copy so this operation does not affect the repository until you commit the
changes. Note that this will undo all changes made after the selected revision, replacing the file/folder
with the earlier version. If you have made local changes, this command will merge these changes into
your working copy.
Fusiona en una copia de trabajo diferente la(s) revision(es) seleccionada(s). Un dilogo de seleccin
de carpeta le permitir elegir la copia de trabajo donde desea fusionar, pero despus de eso no hay
dilogo de confirmacin, ni oportunidad de probar la fusin sin ejecutarla realmente. Es una buena
idea fusionar en una copia de trabajo sin cambios, y as poder revertir los cambios si no funcionan!
Esta es una funcionalidad til si desea fusionar las revisiones seleccionadas de una rama a otra.
Hace una obtencin nueva de la carpeta seleccionada en la revisin seleccionada. Esto muestra un
dilogo para que confirme la URL y la revisin, y seleccione un lugar para la obtencin.
Exporta la carpeta o el fichero seleccionado en la revisin seleccionada. Esto muestra un dilogo para
que confirme la URL y la revisin, y para que seleccione un lugar para la exportacin.
Editar el mensaje de registro o el autor adjunto a una confirmacin anterior. Lea Seccin 5.9.6,
Cambiando el mensaje de registro y el autor para averiguar cmo funciona esto.
Copia los detalles de registro de las revisiones seleccionadas al portapapeles. Esto copia el nmero de
revisin, el autor, la fecha, el mensaje de registro y la lista de tems cambiados para cada revisin.
Buscar en los mensajes de registro el texto que desee. Esto busca en los mensajes de registro que
ha introducido, y tambin en los sumarios de accin creados por Subversion (mostrados en el panel
inferior). La bsqueda no distingue maysculas y minsculas.

Figura 5.17. Men contextual del panel superior para 2 revisiones seleccionadas
Si selecciona dos revisiones a la vez (utilizando el modificador habitual Ctrl), el men contextual cambia
y le ofrece menos opciones:

66

Gua de uso diario

Compara 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 opcin para una carpeta, aparecer un dilogo posterior mostrando los ficheros
cambiados y ofrecindole ms opciones de diferenciacin. Lea ms sobre el dilogo Comparar
Revisiones en Seccin 5.10.3, Comparando carpetas.
Blame the two revisions and compare the blame reports using a visual difference tool. Read
Seccin 5.22.2, Autora de las diferencias for more detail.
Ver las diferencias entre las dos revisiones seleccionadas como un fichero diff unificado. Esto funciona
para ficheros y carpetas.
Copy log messages to clipboard as described above.
Buscar mensajes de registro como se describe ms arriba.
If you select two or more revisions (using the usual Ctrl or Shift modifiers), the context menu will
include an entry to Revert all changes which were made in the selected revisions. This is the easiest way
to rollback a group of revisions in one go.
Tambin puede elegir fusionar en otra copia de trabajo las revisiones seleccionadas, como se describi
ms arriba.

Figura 5.18. El panel inferior del dilogo de Registro con el men contextual
El panel inferior del dilogo Registro tambin tiene un men contextual que le permite
Show changes made in the selected revision for the selected file. This context menu is only available
for files shown as modified.
Blame the selected revision and the previous revision for the selected file, and compare the blame
reports using a visual diff tool. Read Seccin 5.22.2, Autora de las diferencias for more detail.
Abrir el fichero seleccionado, bien con el visor por defecto para ese tipo de fichero, o bien con el
programa que elija.
Revertir los cambios hechos al fichero seleccionado en esa revisin.
Ver las propiedades de Subversion del tem seleccionado.
Mostrar el registro de revisiones para ese fichero seleccionado.
Grabar la revisin seleccionada a un fichero, para que pueda tener una versin antigua de ese fichero.

Sugerencia
Puede haberse dado cuenta de que a veces nos referimos a cambios y otras veces a
diferencias. Cul es la diferencia?

67

Gua de uso diario

Subversion uses revision numbers to mean 2 different things. A revision generally


represents the state of the repository at a point in time, but it can also be used to represent
the changeset which created that revision, eg. Done in r1234 means that the changes
committed in r1234 implement feature X. To make it clearer which sense is being used, we
use two different terms.
Si selecciona dos revisiones N y M, el men contextual le ofrecer mostrar las diferencias
entre estas dos revisiones. En trminos de Subversion esto es diff -r M:N.
Si selecciona una nica revisin N, el men contextual le ofrecer mostrar los cambios
realizados en esa revisin. En trminos de Subversion esto es diff -r N-1:N o diff
-c N.
The bottom pane shows the files changed in all selected revisions, so the context menu
always offers to show changes.

5.9.4. Obteniendo ms mensajes de registro


El dilogo Registro no siempre le muestra todos los cambios que se hayan hecho alguna vez por unos
cuantos motivos:
For a large repository there may be hundreds or even thousands of changes and fetching them all could
take a long time. Normally you are only interested in the more recent changes. By default, the number
of log messages fetched is limited to 100, but you can change this value in TortoiseSVN Settings
(Seccin 5.29.1.2, Configuracin de dilogos de TortoiseSVN 1),
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 algn otro lugar en el repositorio. Esto puede ser
til para buscar ramas (o etiquetas) porque se para en la raz de esa rama, y le da una indicacin rpida
de los cambios hechos nicamente en esa rama.
Normalmente querr dejar esta opcin sin marcar. TortoiseSVN recuerda el estado de la casilla, por
lo que respetar su preferencia.
Cuando se invoca el dilogo Mostrar Registro desde el dilogo Fusionar, la casilla siempre se marca
por defecto. Esto es porque al fusionar lo ms probable es buscar cambios en las ramas, y retroceder
a la raz de la rama no tiene sentido en ese caso.
Tenga en cuenta que Subversion actualmente implementa el renombrado como un par de copia/borrado,
por lo que renombrar un fichero o carpeta tambin provocar que el dilogo de registro se pare si se
marca esta opcin.
Si desea ver ms mensajes de registro, pulse Siguientes 100 para obtener los siguientes 100 mensajes
de registro. Puede repetir sto tantas veces como sea necesario.
Al lado de este botn hay un botn multifuncin que recuerda la ltima opcin que utiliz. Pulse en la
flecha para ver las otras opciones ofrecidas.
Utilice Mostrar rango ... si desea ver un rango especfico de revisiones. Aparecer un dilogo que le
preguntar por la revisin de inicio y de fin.
Utilice Mostrar Todos si desea ver todos los mensajes de registro desde HEAD hasta la revisin 1.

5.9.5. Caractersticas de registro de fusin


Subversion 1.5 y posteriores almacenan un registro de las fusiones utilizando propiedades. Esto nos
permite obtener una historia ms detallada de los cambios fusionados. Por ejemplo, si desarrolla una

68

Gua de uso diario

nueva caracterstica en una rama y luego la fusiona en el tronco, la caracterstica desarrollada aparecer
en el historial de registro del tronco como una nica confirmacin para la fusin, incluso aunque haya
habido 1000 confirmaciones durante el desarrollo de la rama.

Figura 5.19. El dilogo de registro mostrando revisiones con registro de fusin


Si desea ver el detalle de qu revisiones se fusionaron como parte de esa confirmacin, utilice la casilla
Incluir revisiones fusionadas. Esto obtendr los mensajes de registro de nuevo, pero tambin intercalar
los mensajes de registro desde las revisiones que se fusionaron. Las revisiones fusionadas se muestran
en gris porque representan cambios hechos en una parte diferente del rbol.
Por supuesto que fusionar nunca es sencillo! Durante el desarrollo de la rama habr probablemente
fusiones ocasionales desde el tronco para mantener la rama en sincrona con la lnea principal del cdigo.
Por eso la historia de fusiones de la rama tambin incluir otra capa de historia de fusiones. Estas capas
se muestran en el dilogo de registro utilizando niveles de indentacin.

5.9.6. Cambiando el mensaje de registro y el autor


A veces querr cambiar un mensaje de registro que introdujo en su da, quizs porque hay un error
ortogrfico en l o porque quiere mejorar el mensaje o cambiarlo por otras razones. O quizs quiera
cambiar el autor de una confirmacin porque se le olvid preparar la autentificacin, o ...
Subversion lets you change both the log message and the author of revisions any time you want. But
since such changes can't be undone (those changes are not versioned) this feature is disabled by default.

69

Gua de uso diario

To make this work, you must set up a pre-revprop-change hook. Please refer to the chapter on Hook
Scripts [http://svnbook.red-bean.com/en/1.4/svn.reposadmin.create.html#svn.reposadmin.create.hooks]
in the Subversion Book for details about how to do that. Read Seccin 4.3, Scripts gancho to find some
further notes on implementing hooks on a Windows machine.
Una vez que haya preparado su servidor con los ganchos necesarios, puede cambiar tanto el autor como
el mensaje de registro de cualquier revisin, utilizando el men contextual del panel superior del dilogo
Registro.

Aviso
Dado que las propiedades de revisin de Subversion no se versionan, al hacer
modificaciones a estas propiedades (por ejemplo, la propiedad del mensaje svn:log) se
sobreescribir el valor anterior de esa propiedad para siempre.

5.9.7. Filtrando los mensajes de registro


Si desea restringir los mensajes de registro para mostrar slo 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 Dilogo
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 bsqueda le permite mostrar slo los mensajes que contengan una frase
en particular.
Pulse en el icono de bsqueda para seleccionar sobre qu informacin desea buscar, y para seleccionar el
modo regex. Normalmente slo necesitar una bsqueda de texto simple, pero si necesita utilizar trminos
de bsqueda ms flexibles puede utilizar expresiones regulares. Si mueve el ratn encima de la caja,
aparecer un texto de ayuda que le proporcionar pistas sobre cmo utilizar las funciones regex. Tambin
puede encontrar documentacin en lnea y un tutorial en http://www.regular-expressions.info/.
Tenga en cuenta que estos filtros actan sobre los mensajes ya obtenidos. Ellos no controlan la descarga
de mensajes desde el repositorio.
You can also filter the path names in the bottom pane using the Hide unrelated changed paths
checkbox. Related paths are those which contain the path used to display the log. If you fetch the log for
a folder, that means anything in that folder or below it. For a file it means just that one file. The checkbox
is tristate: you can show all paths, grey out the unrelated ones, or hide the unrelated paths completely.
A veces sus prcticas de trabajo requerirn que los mensajes de registro sigan un formato particular, lo
que significa que el texto que describe los cambios no es visible desde el sumario abreviado mostrado
en el panel superior. La propiedad tsvn:logsummary puede utilizarse para extraer una porcin del
mensaje de registro que se mostrar en el panel superior. Lea Seccin 5.17.2, Propiedades de projecto
TortoiseSVN para saber cmo se utiliza esta propiedad.

5.9.8. Informacin estadstica


El botn Estadsticas lanza un cuadro de dilogo que muestra algunas informaciones interesantes sobre
las revisiones que se muestran en el dilogo Registro. Le muestra cuntos autores han estado trabajando,
cuntas confirmaciones han hecho, el progreso por semanas, y mucho ms. Ahora puede ver de un vistazo
quin ha trabajado duro y quin se ha tocado la barriga ;-)

5.9.8.1. Pgina de estadsticas


Esta pgina le proporciona todas las cifras que pueda necesitar, en particular el perodo y el nmero de
revisiones cubiertas, y algunos valores mnimos/mximos/medios.

70

Gua de uso diario

5.9.8.2. Pgina de confirmaciones por autor

Figura 5.20. Histograma de confirmaciones por autor


Este grfico le muestra qu autores han estado activos en el proyecto como un simple histograma, un
histograma apilado o un grfico de tarta.

Figura 5.21. Grfico de tarta de confirmaciones por autor

71

Gua de uso diario

Where there are a few major authors and many minor contributors, the number of tiny segments can make
the graph more difficult to read. The slider at the bottom allows you to set a threshold (as a percentage
of total commits) below which any activity is grouped into an Others category.

5.9.8.3. Pgina de confirmaciones por fecha

Figura 5.22. Grfico de confirmaciones por fecha


Esta pgina proporciona una representacin grfica de la actividad del proyecto en trminos del nmero
de confirmaciones y autor. Esto da una idea de cundo se ha trabajado en un proyecto, y quin estaba
trabajando en cada momento.
Cuando hay varios autores, puede obtener muchas lneas en el grfico. Hay dos vistas disponibles aqu:
normal, en la que la actividad de cada autor se refiere a la lnea base, y apilado, donde la actividad de
cada autor se refiere a la lnea subyacente. La ltima opcin evita que se crucen las lneas, lo que puede
permitir un grfico ms sencillo de leer, pero es menos fcil ver la salida de cada autor.
By default the analysis is case-sensitive, so users PeterEgan and PeteRegan are treated as
different authors. However, in many cases user names are not case-sensitive, and are sometimes entered
inconsistently, so you may want DavidMorgan and davidmorgan to be treated as the same person.
Use the Authors case insensitive checkbox to control how this is handled.
Tenga en cuenta que las estadsticas cubren el mismo perodo que el dilogo Registro. Si slo se est
mostrando una revisin, las estadsticas no le dirn mucho.

5.9.9. Modo sin conexin


Si no se puede alcanzar el servidor, y tiene habilitado el cach de registro, puede utilizar el dilogo de
registro y el grfico de revisiones en modo sin conexin. Esto utiliza la informacin de la cach, lo que
le permite continuar trabajando aunqu ela informacin puede no estar actualizada o incluso completa.

72

Gua de uso diario

5.9.10. Refrescando la vista


Si desea comprobar el servidor de nuevo para obtener los mensajes de registro ms recientes, puede
simplemente refrescar la vista utilizando F5. Si est utilizando la cach de registro (habilitada por
defecto), esto buscar en el repositorio los mensajes ms recientes y traer slo los nuevos. Si la cach
de registro estaba en modo desconectado, esto intentar volver a ponerla en lnea.
Si est utilizando la cach de registros y cree que el contenido del mensaje o el autor han podido cambiar,
puede utilizar Mays-F5 o Ctrl-F5 para re-obtener los mensajes mostrados desde el servidor y actualizar la
cach de registro. Tenga en cuenta que esto slo afecta a los mensajes que se estn mostrando actualmente
y que por tanto no invalida la cach completa de ese repositorio.

5.10. Viendo diferencias


One of the commonest requirements in project development is to see what has changed. You might want
to look at the differences between two revisions of the same file, or the differences between two separate
files. TortoiseSVN provides a built-in tool named TortoiseMerge for viewing differences of text files.
For viewing differences of image files, TortoiseSVN also has a tool named TortoiseIDiff. Of course, you
can use your own favourite diff program if you like.

5.10.1. 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 con otra rama/etiqueta
Si desea ver qu ha cambiado en el tronco (si est trabajando en una rama) o en una rama especfica (si
est trabajando en el tronco), puede utilizar el men contextual del explorador. Simplemente sostegna
la tecla Maysculas mientras hace click con el botn derecho en el fichero. Luego, seleccione
TortoiseSVN Diferenciar con URL. En el siguiente dilogo, especifique la URL del repositorio
con la que quiere comparar su fichero local.
Tambin puede utilizar el navegador de repositorios y seleccionar dos rboles para diferenciar, quizs
dos ramas, o una rama/etiqueta y el tronco. Ah, el men contextual le permite compararlos utilizando
Comparar revisiones. Lea ms en Seccin 5.10.3, Comparando carpetas.
Diferenciar desde una revisin anterior
Si desea ver las diferencias entre una revisin en concreto y su copia de trabajo, utilice el dilogo
Registro de Revisiones, seleccione la revision de interes, y luego seleccione Compar con la copia
de trabajo desde el men contextual.
Si desea ver la diferencia entre la ltima revision confirmada y su copia de trabajo, asumiendo que
la copia de trabajo no se haya modificado, simplemente haga click con el botn derecho sobre el
fichero. Luego, seleccione TortoiseSVN Comparar con la revisin anterior. Esto realizar una
diferenciacin entre la revisin anterior a la fecha-de-la-ltima-confirmacin (tal y como se registr
en su copia de trabajo) y la BASE de la copia de trabajo. Esto le muestra el ltimo cambio hecho
al fichero que lo llev al estado que ahora est viendo en su copia de trabajo. No mostrar cambios
ms nuevos que su copia de trabajo.
Diferenciar entre dos revisiones antiguas
Si desea ver las diferencias entre dos revisiones que ya se confirmaron, utilice el dilogo Registro de
Revisiones y seleccione las dos revisiones que desea comparar (utilizando el modificador habitual
Ctrl). Luego seleccione Comparar revisiones desde el men contextual.
Si hizo esto desde el historial de revisiones de una carpeta, aparece un dilogo Comparar Revisiones,
mostrando una lista de ficheros cambiados en esa carpeta. Lea ms en Seccin 5.10.3, Comparando
carpetas.

73

Gua de uso diario

Todos los cambios hechos en una confirmacin


Si desea ver los cambios hechos a todos los ficheros en una revisin en particular de una vez, puede
utilizar la salida diff unificado (formato de parche GNU). Esto le muestra slo las diferencias con
unas pocas lneas de contexto. Es ms dificil de leer que una comparacin visual de ficheros, pero le
mostrar todos los cambios juntos. Desde el dilogo Registro de Revisiones, seleccione la revisin
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.
Diferencias entre un fichero/carpeta en la copia de trabajo y una URL
If you want to see the differences between a file in your working copy, and a file in any Subversion
repository, you can do that directly in explorer by selecting the file then holding down the Shift key
whilst right clicking to obtain the context menu. Select TortoiseSVN Diff with URL. You can do
the same thing for a working copy folder. TortoiseMerge shows these differences in the same way
as it shows a patch file - a list of changed files which you can view one at a time.
Diferencias con informacin de autora
Si desea ver no slo las diferencias sino tambin el autor, revisin y la fecha en la que se hicieron
los cambios, puede combinar los informes de diferencias y de autora desde dentro del dilogo del
historial de revisiones. Lea Seccin 5.22.2, Autora de las diferencias para ms detalles.
Diferencias entre carpetas
The built-in tools supplied with TortoiseSVN do not support viewing differences between directory
hierarchies. But if you have an external tool which does support that feature, you can use that instead.
In Seccin 5.10.5, Herramientas externas de diferencias/fusin we tell you about some tools which
we have used.
If you have configured a third party diff tool, you can use Shift when selecting the Diff command to
use the alternate tool. Read Seccin 5.29.4, Configuracin de programas externos to find out about
configuring other diff tools.

5.10.2. Opciones de fn de lnea y espacios en blanco


A veces en la vida de un proyecto puede querer cambiar los fines de lnea de CRLF a LF, o puede querer
cambiar la indentacin de una seccin. Desafortunadamente esto marcar un gran nmero de lneas como
modificadas, incluso aunque no haya cambios en el significado del cdigo. Estas opciones le ayudarn a
administrar estos cambios cuando se comparan y aplican diferencias. Ver estas opciones en los dilogos
Fusionar y Autora, adems de en la configuracin de TortoiseMerge.
Ignorar finales de lnea excluye los cambios que slo se deban a diferencias en el estilo de fin de lnea.
Comparar espacios en blanco incluye todos los cambios en la indentacin y en los espacios en blanco
interiores como lneas aadidas/eliminadas.
Ignorar cambios en espacios en blanco excluye los cambios que slo se deben a un cambio en
la cantidad o tipo de espacios en blanco, como por ejemplo cambios en la indentacin o cambio de
tabuladores a espacios. Aadir espacios en blanco donde antes no haba, o eliminar completamente
espacios en blanco an se mostrar como un cambio.
Ignorar todos los espacios en blanco excluye todos los cambios que slo se deban a espacios en
blanco.
Naturalmente, cualquier lnea cuyo contenido haya cambiado se incluye siempre en la diferenciacin.

5.10.3. Comparando carpetas

74

Gua de uso diario

Figura 5.23. El dilogo Comparar Revisiones


Cuando seleccione dos rboles dentro del navegador de repositorios, o cuando seleccione dos revisiones
de una carpeta en el dilogo de registro, puede Men contextual Comparar revisiones.
Este dilogo muestra una lista de todos los ficheros que han cambiado y le permite comparar o ver la
autora de cada uno individualmente utilizando el men contextual.
Tambin puede exportar la lista de ficheros cambiados a un fichero de texto, o puede exportar los propios
ficheros cambiados a una carpeta. Esta operacin funciona nicamente sobre los ficheros seleccionados,
por lo que deber seleccionar los ficheros de inters - normalmente eso quiere decir seleccionarlos a todos.
If you want to export the list of files and the actions (modified, added, deleted) as well, you can do
that using the keyboard shortcuts Ctrl-A to select all entries and Ctrl-C to copy the detailed list to the
clipboard.
El botn en la parte superior le permite cambiar la direccin de la comparacin. Puede mostrar los cambios
necesarios para ir de A a B, o si lo prefiere, de B a A.
Los botones con los nmeros de revisin pueden utilizarse para cambiar a un rango de revisiones
diferente. Cuando cambia el rango, la lista de tems que difieren entre las dos revisiones se actualizar
automticamente.
Si la lista de nombres de ficheros es muy larga, puede utilizar la caja de bsqueda para reducir la lista a
los nombres de ficheros que contengan un texto especfico. Tenga en cuenta que se utiliza una bsqueda
de texto simple, as que si desea restringir la lista a ficheros de cdigo fuente C debera introducir .c
en vez de *.c.

5.10.4. Diferenciando imgenes utilizando TortoiseIDiff

75

Gua de uso diario

Hay muchas herramientas disponibles para diferenciar ficheros de texto, incluyendo nuestro propio
TortoiseMerge, pero a veces nos encontramos en la situacin de querer ver tambin cmo ha cambiado
un fichero de imagen. Por eso es por lo que hemos creado TortoiseIDiff.

Figura 5.24. El visor de diferencias de imgenes


TortoiseSVN Diff for any of the common image file formats will start TortoiseIDiff to show image
differences. By default the images are displayed side-by-side but you can use the View menu or toolbar
to switch to a top-bottom view instead, or if you prefer, you can overlay the images and pretend you are
using a lightbox.
Naturally you can also zoom in and out and pan around the image. You can also pan the image simply
by left-dragging it. If you select the Link images together option, then the pan controls (scrollbars,
mousewheel) on both images are linked.
An image info box shows details about the image file, such as the size in pixels, resolution and colour
depth. If this box gets in the way, use View Image Info to hide it. You can get the same information
in a tooltip if you hover the mouse over the image title bar.
When the images are overlaid, the relative intensity of the images (alpha blend) is controlled by a slider
control at the left side. You can click anywhere in the slider to set the blend directly, or you can drag the
slider to change the blend interactively. Ctrl+Shift-Wheel to change the blend.
The button above the slider toggles between two preset blends, indicated by the markers on either side
of the blend slider. By default one is at the top and the other at the bottom, so the toggle button just
switches between one image and the other. You can move the markers to choose the two blend values
that the toggle button will use.
A veces quiere ver una diferencia en vez de un fundido. Puede que tenga las imgenes de dos revisiones de
una placa de circuito impreso y desea ver qu pistas han cambiado. Si deshabilita el modo alpha blend, la
diferencia se mostrar como un XOR de los valores de color del pixel. Las reas sin cambios se mostrarn
en blanco y los cambios se colorearn.

5.10.5. Herramientas externas de diferencias/fusin

76

Gua de uso diario

Si las herramientas que le proporcionamos no son lo que necesita, pruebe alguno de los muchos programas
de cdigo abierto o comerciales disponibles. Cada uno tiene sus propios favoritos, y esta lista por supuesto
no est completa, pero aqu hay algunas que debera considerar:
WinMerge
WinMerge [http://winmerge.sourceforge.net/] es un muy buen visor de diferencias y herramienta de
fusin de cdigo abierto, que tambin puede manejar directorios.
Perforce Merge
Perforce es un RCS comercial, pero puede descargar la herramienta de diferencias/fusiones
gratuitamente. Obtenga ms informacin en Perforce [http://www.perforce.com/perforce/products/
merge.html].
KDiff3
KDiff3 es una herramienta de diferencias gratuita que tambin maneja directorios. Puede descargarla
desde aqu [http://kdiff3.sf.net/].
ExamDiff
ExamDiff Standard es gratuito. Puede manejar ficheros pero no directorios. ExamDiff Pro es
shareware y aade un nmero de ventajas que incluyen diferenciacin de directorios y capacidades
de edicin. En ambos casos, la versin 3.2 y las siguientes pueden manejar tambin unicode. Puede
descargarlas desde PrestoSoft [http://www.prestosoft.com/].
Beyond Compare
Similar a ExamDiff Pro, esta es una herramienta shareware de diferencias que puede
manejar diferenciacin de directorios y unicode. Descrgela desde Scooter Software [http://
www.scootersoftware.com/].
Araxis Merge
Araxis Merge is a useful commercial tool for diff and merging both files and folders. It does threeway comparison in merges and has synchronization links to use if you've changed the order of
functions. Download it from Araxis [http://www.araxis.com/merge/index.html].
SciTE
Este editor de texto incluye sintaxis coloreada para ficheros diff unificados, hacindolos mucho ms
fciles de leer. Descrgelo desde Scintilla [http://www.scintilla.org/SciTEDownload.html].
Notepad2
Notepad2 est diseado como un reemplazo del programa Bloc de Notas estndar de Windows, y
se basa en el control de edicin de cdigo abierto Scintilla. Adems de ser bueno para ver diffs
unificados, es mucho mejor que el bloc de notas de Windows para la mayora de trabajo. Descrgelo
gratuitamente aqu [http://www.flos-freeware.ch/notepad2.html].
Lea Seccin 5.29.4, Configuracin de programas externos para ms informacin sobre cmo preparar
TortoiseSVN para utilizar estas herramientas.

5.11. Aadiendo nuevos ficheros y directorios

Figura 5.25. Men contextual del explorador para ficheros no versionados

77

Gua de uso diario

Si ha creado nuevos ficheros y/o directorios durante su proceso de desarrollo, necesitar aadirlos tambin
al control de cdigo. Seleccione los ficheros y/o directorios y utilice TortoiseSVN Aadir.
Despus de que aada los ficheros o directorios al control de cdigo, el fichero aparece con una
sobreimpresin de icono aadido que significa que primero debe confirmar su copia de trabajo para
que esos ficheros y directorios estn disponibles para otros desarrolladores. Aadir un fichero/directorio
no afecta al repositorio!

Aadir muchos
You can also use the Add command on already versioned folders. In that case, the add
dialog will show you all unversioned files inside that versioned folder. This helps if you
have many new files and need to add them all at once.
Para aadir ficheros desde fuera de su copia de trabajo puede usar el manejador de arrastrar-y-soltar:
1. seleccione los ficheros que desea aadir
2. arrstrelos con el botn derecho a su nuevo destino dentro de la copia de trabajo
3. suelte el botn derecho del ratn
4. seleccione Men contextual SVN Aadir ficheros a esta Copia de Trabajo. En ese momento
los ficheros se copiarn a la copia de trabajo y se aadirn al control de versiones.
Tambin puede aadir ficheros dentro de una copia de trabajo simplemente arrastrndolos con el botn
izquierdo y soltndolos en el dilogo de confirmacin.
If you add a file or folder by mistake, you can undo the addition before you commit using TortoiseSVN
Undo add....

5.12. Copiando/Moviendo/Renombrando ficheros y carpetas


A menudo ocurre que ya tiene los ficheros que necesita en otro proyecto en su repositorio, y que
simplemente quiere copiarlos. Podra simplemente copiar los ficheros y aadirlos como se describe ms
arriba, pero eso no le dar ninguna historia. Y si posteriormente arregla un error en los ficheros originales,
slo podr fusionar el arreglo automticamente si la nueva copia est relacionada con la original en
Subversion.
La manera ms fcil de copiar ficheros y carpetas desde dentro de una copia de trabajo es utilizar el men
contextual que aparece al arrastrar con el botn derecho. Cuando arrastra con el botn derecho un fichero
o una carpeta de una copia de trabajo a otra, o incluso dentro de la misma carpeta, aparece un men
contextual cuando suelta el botn del ratn.

78

Gua de uso diario

Figura 5.26. Men de arrastre con el botn derecho para un directorio bajo el
control de versiones
Ahora puede copiar contenido existente versionado a un nuevo lugar, posiblemente renombrndolo al
mismo tiempo.
You can copy files and folders from your working copy to another location in the repository using
TortoiseSVN Branch/Tag. Refer to Seccin 5.18.1, Crando una rama o etiqueta to find out more.
You can locate an older version of a file or folder in the log dialog and copy it to a new location in the
repository directly from the log dialog using Context menu Create branch/tag from revision. Refer
to Seccin 5.9.3, Obteniendo informacin adicional to find out more.
You can also use the repository browser to locate content you want, and copy it into your working copy
directly from the repository, or copy between two locations within the repository. Refer to Seccin 5.23,
El navegador de repositorios to find out more.

Cannot copy between repositories


Whilst you can copy and files and folders within a repository, you cannot copy or move
from one repository to another while preserving history using TortoiseSVN. Not even if the
repositories live on the same server. All you can do is copy the content in its current state
and add it as new content to the second repository.
If you are uncertain whether two URLs on the same server refer to the same or different
repositories, use the repo browser to open one URL and find out where the repository root
is. If you can see both locations in one repo browser window then they are in the same
repository.

5.13. Ignorando ficheros y directorios

79

Gua de uso diario

Figura 5.27. Men contextual del explorador para ficheros no versionados


In most projects you will have files and folders that should not be subject to version control. These
might include files created by the compiler, *.obj, *.lst, maybe an output folder used to store the
executable. Whenever you commit changes, TortoiseSVN shows your unversioned files, which fills up
the file list in the commit dialog. Of course you can turn off this display, but then you might forget to
add a new source file.
La mejor forma de evitar estos problemas es aadir los ficheros derivados a la lista de ignorados del
proyecto. De esta forma nunca se mostrarn en el dilogo de confirmar, pero se seguirn sealando los
genuinos ficheros de cdigo no versionados.
Si hace click con el botn derecho en un nico fichero no versionado, y selecciona el comando
TortoiseSVN Ignorar del men contextual, aparecer un submen que le permitir seleccionar slo
ese fichero, o todos los ficheros con la misma extensin. Si selecciona mltiples ficheros, no hay submen
y slo puede aadir esos ficheros o carpetas especficos.
If you want to remove one or more items from the ignore list, right click on those items and select
TortoiseSVN Remove from Ignore List You can also access a folder's svn:ignore property
directly. That allows you to specify more general patterns using filename globbing, described in the
section below. Read Seccin 5.17, Configuracin del proyecto for more information on setting
properties directly. Please be aware that each ignore pattern has to be placed on a separate line. Separating
them by spaces does not work.

La lista global de ignorados


Otra forma de ignorar ficheros es aadirlos 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 slo en el PC cliente. En general es mejor utilizar
la propiedad svn:ignore donde sea posible, porque puede aplicarse a reas del proyecto
especficas, y funciona para todos los que obtengan el proyecto. Para ms informacin, lea
la Seccin 5.29.1, Configuracin general.

Ignorando tems versionados


Los ficheros y las carpetas verisonadas nunca pueden ser ignoradas - esta es una
caracterstica de Subversion. Si ha versionado un fichero por error, lea Seccin B.8, Ignorar
ficheros que ya estn versionados para ver las instrucciones sobre cmo desversionarlo.

5.13.1. Pattern Matching in Ignore Lists

80

Gua de uso diario

El patrn de ignorados de Subversion hace uso de la expansin de comodines en los nombres de los
ficheros, una tcnica que originariamente se utilizaba en Unix para especificar ficheros utilizando metacaracteres como son los comodines. Los siguientes caracteres tienen un significado especial:
*
Concuerda con cualquier cadena de caracteres, incluyendo la cadena vaca (sin caracteres).
?
Concuerda con un nico cracter cualquiera.
[...]
Concuerda con cualquiera de los caracteres includos entre los corchetes. Dentro de los corchetes,
un par de caracteres separados por - concuerda con cualquier caracter existente entre los dos en el
orden lexicogrfico. Por ejemplo, [AGm-p] concuerda con cualquiera de estos: A, G, m, n, o o p.
Subversion utiliza la / como el delimitador de ruta en todos los nombres de ruta internos, y todas las
concordancias de patrones se hacen contra este estilo de nombres de rutas. Si desea utilizar un delimitador
de ruta en su patrn de ignorado, asegrese de utilizar /, y no la barra invertida de Windows.
La concordancia de patrones distingue entre maysculas y minsculas, lo que puede causar problemas en
Windows. Puede forzar que no se distingan a lo bruto, emparejando los caracteres; es decir, por ejemplo,
para ignorar *.tmp sin tener en cuenta las maysculas y minsculas, puede utilizar un patrn como *.
[Tt][Mm][Pp].
Subversion utiliza esta concordancia de patrones contra cada ruta que se le presenta para la accin.
Estas rutas son generalmente relativas al directorio contra el que se realiza la importacin, aadido,
confirmacin, etc. El patrn de concordancia por lo tanto tiene que tener el cuenta el hecho de que puede
o no haber partes de ruta antes del nombre del fichero.
If directory names are present in a path, the matching algorithm will not trim them off, so pattern Fred.*
will match Fred.c but not subdir/Fred.c. This is significant if you add a folder which contains
some files that you want to be ignored, because those filenames will be preceded with the folder name
when Subversion compares them with the ignore pattern.
El carcter / no se trata de ninguna forma especial para los propsitos de concordancia de patrones, por lo
que el patrn abc*xyz concordara con abcdxyz pero tambin con abcdir/subdir/anything/
morexyz.
To ignore all CVS folders you should either specify a pattern of *CVS or better, the pair CVS */CVS.
The first option works, but would also exclude something called ThisIsNotCVS. Using */CVS alone
will not work on an immediate child CVS folder, and CVS alone will not work on sub-folders.
Si desea una definicin oficial de la expansin de comodines en los nombres de ficheros,
puede encontrarla en las especificaciones de la IEEE para el lenguaje de comandos del shell
Notacin de Patrones de Concordancia [http://www.opengroup.org/onlinepubs/009695399/utilities/
xcu_chap02.html#tag_02_13].

5.14. Eliminando, moviendo y renombrando


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.

81

Gua de uso diario

Figura 5.28. Men contextual del explorador para ficheros versionados


5.14.1. Eliminando ficheros y carpetas
Use TortoiseSVN Delete to remove files or folders from subversion.
When you TortoiseSVN Delete a file, it is removed from your working copy immediately as well
as being marked for deletion in the repository on next commit. The file's parent folder shows a deleted
icon overlay. Up until you commit the change, you can get the file back using TortoiseSVN Revert
on the parent folder.
Cuando se utiliza TortoiseSVN Eliminar sobre una carpeta, sta contina en su copia de trabajo,
pero la sobreimpresin cambia para indicarle que est marcada para ser eliminada. Hasta que confirme
el cambio, puede recuperar la carpeta utilizando TortoiseSVN Revertir sobre la propia carpeta. Esta
diferencia en el comportamiento entre ficheros y carpetas es parte de Subversion, no de TortoiseSVN.
Si desea eliminar un tem del repositorio, pero mantenerlo localmente como un fichero o carpeta no
versionados, utilice Men contextual extendido Eliminar (mantener local). Debe mantener pulsada
la tecla Mays mientras hace click con el botn derecho sobre el tem en el panel de lista de exploracin
(panel derecho) para ver esto en el men contextual extendido.
Si se borra un fichero utilizando el Explorador en vez de usar el men contextual de TortoiseSVN, el
dilogo de confirmacin le muestra esos ficheros y le deja eliminarlos del control de versiones antes
de confirmar. Sin embargo, si actualiza su copia de trabajo, Subversion se dar cuenta de que falta un
fichero y lo reemplazar con la ltima versin del repositorio. Si necesita borrar un fichero bajo control
de versiones, utilice siempre TortoiseSVN Eliminar para que Subversion no tenga que averiguar qu
es lo que realmente quiere hacer usted.
Si se borra una carpeta utilizando el Explorador en vez de utilizar el men contextual de TortoiseSVN, su
copia de trabajo se romper y no podr confirmar. Si actualiza su copia de trabajo, Subversion reemplazar

82

Gua de uso diario

la carpeta que falta con la ltima versin del repositorio, y luego podr eliminarla de la forma correcta,
utilizando TortoiseSVN Eliminar.

Recuperando un fichero o una carpeta borrados


Si ha borrado un fichero o una carpeta y ya ha confirmado esa operacin de borrado en el
repositorio, entonces un comando TortoiseSVN Revertir normal no los podr recuperar.
Pero el fichero o la carpeta borrados no estn perdidos para siempre. Si sabe la revisin en
la que se borraron el fichero o la carpeta (si no lo sabe, utilice el dilogo de registro para
averiguarlo), abra el navegador de repositorios y cambie a esa revisin. Luego seleccione
el fichero o la carpeta que ha borrado, haga click con el botn derecho y seleccione Men
Contextual Copiar a..., y como destino de esa operacin de copia seleccione la ruta
de su copia de trabajo.

5.14.2. Moviendo ficheros y carpetas


If you want to do a simple in-place rename of a file or folder, use Context Menu Rename... Enter
the new name for the item and you're done.
If you want to move files around inside your working copy, perhaps to a different sub-folder, use the
right-mouse drag-and-drop handler:
1. seleccione los ficheros o directorios que desea mover
2. arrstrelos con el botn derecho a su nuevo destino dentro de la copia de trabajo
3. suelte el botn derecho del ratn
4. en el men contextual seleccione Men contextual SVN Mover ficheros versionados aqu

Confirmar la carpeta padre


Since renames and moves are done as a delete followed by an add you must commit the
parent folder of the renamed/moved file so that the deleted part of the rename/move will
show up in the commit dialog. If you don't commit the removed part of the rename/move,
it will stay behind in the repository and when your co-workers update, the old file will not
be removed. i.e. they will have both the old and the new copies.
Usted debe confirmar un cambio de nombre de carpeta antes de cambiar cualquier fichero
dentro de la carpeta; si no, su copia de trabajo realmente puede quedar estropeada.
You can also use the repository browser to move items around. Read Seccin 5.23, El navegador de
repositorios to find out more.

No SVN Mueva externos


NO debera utilizar los comandos TortoiseSVN Mover o Renombrar en una carpeta que ha
sido creada utilizando svn:externals. Esta accin puede provocar que el tem externo
se elimine de su repositorio padre, probablemente molestando a muchas otras personas. Si
necesita mover una carpeta externa, debera moverla como lo hace con el resto de ficheros
sin versionar, y luego ajustar las propiedades svn:externals de las carpetas padres
origen y destino.

5.14.3. Cambiando las maysculas/minsculas en un nombre de fichero

83

Gua de uso diario

Hacer cambios slo en las maysculas/minsculas de un nombre de fichero es complicado en Subversion


sobre Windows, porque durante un corto periodo de tiempo durante el renombrado, ambos nombres de
fichero deben existir. Dado que Windows tiene un sistema de ficheros que no distingue maysculas y
minsculas, esto no funciona utilizando el habitual comando Renombrar.
Fortunately there are (at least) two possible methods to rename a file without losing its log history. It is
important to rename it within subversion. Just renaming in the explorer will corrupt your working copy!
Solucin A) (recomendada)
1. Confirme los cambios en su copia de trabajo.
2. Renombrar el fichero de MAYusculas a mayUSCULAS directamente en el repositorio utilizando el
Navegador de Repositorios.
3. Actualice su copia de trabajo.
Solucin B)
1. Renombre de MAYusculas a MAYusculas_ con el comando Renombrar del submen de TortoiseSVN.
2. Confirme los cambios.
3. Renombre de MAYusculas_ a mayUSCULAS.
4. Confirme los cambios.

5.14.4. Dealing with filename case conflicts


If the repository already contains two files with the same name but differing only in case (e.g. TEST.TXT
and test.txt), you will not be able to update or checkout the parent directory on a Windows client.
Whilst Subversion supports case-sensitive filenames, Windows does not.
Esto ocurre a veces cuando dos personas confirman, desde copias de trabajo separadas, ficheros tales
que tienen el mismo nombre pero con las maysculas/minsculas diferentes. Esto tambin puede ocurrir
cuando se confirman los ficheros desde un sistema con un sistema de ficheros que distingue maysculas/
minsculas, como Linux.
En ese caso, necesita decidir cul desea mantener y borrar (o renombrar) el otro en el repositorio.

Evitando dos ficheros con el mismo nombre


Hay un script gancho de servidor disponible en: http://svn.collab.net/repos/svn/trunk/
contrib/hook-scripts/ que evitar confirmaciones cuyo resultado sea dos ficheros con
conflicto en las maysculas.

5.14.5. Reparando renombrados de ficheros


A veces su amistoso IDE renombrar ficheros por usted como parte de un ejercicio de refactorizacin,
y por supuesto no se lo dir a Subversion. Si intenta confirmar sus cambios, Subversion ver el nombre
de fichero antiguo como faltante y el nuevo nombre como fichero no versionado. Podra simplemente
confirmar el nuevo nombre de fichero para aadirlo, pero entonces perdera la traza de la historia, ya que
Subversion no sabe la relacin entre los ficheros.
Una forma mejor es notificar a Subversion de que el cambio es realmente un renombrado, y puede hacer
esto dentro de los dilogos Confirmar y Comprobar modificaciones. Simplemente seleccione tanto el
nombre de fichero antiguo (faltante) como el nuevo nombre (no versionado) y utilice Men contextual
Reparar movimiento para emparejar los dos ficheros como un renombrado.

84

Gua de uso diario

5.14.6. Deleting Unversioned Files


Usually you set your ignore list such that all generated files are ignored in Subversion. But what if you
want to clear all those ignored items to produce a clean build? Usually you would set that in your makefile,
but if you are debugging the makefile, or changing the build system it is useful to have a way of clearing
the decks.
TortoiseSVN proporciona exactamente esa opcin utilizando Men contextual extendido Eliminar
tems no versionados.... Debe mantener pulsada la tecla Mays mientras hace click con el botn
derecho sobre el tem en el panel de lista de exploracin (panel derecho) para ver esto en el men
contextual extendido. Esto mostrar un dilogo que lista todos los ficheros no versionados en cualquier
lugar de su copia de trabajo. Ah podr seleccionar o deseleccionar tems para ser eliminados.
Cuando dichos tems se eliminan, se utiliza la papelera de reciclaje, por lo que si comete un error aqu y
borra un fichero que debera haber estado versionado, an puede recuperarlo.

5.15. Deshacer cambios


Si desea deshacer todos los cambios que ha hecho en un fichero desde la ltima actualizacin, necesita
seleccionar el fichero, hacer click con el botn derecho para sacar el men contextual, y luego seleccionar
el comando TortoiseSVN Revertir Aparecer un dilogo que le muestra los ficheros que ha cambiado
y que puede revertir. Seleccione los que desee revertir y pulse Aceptar.

Figura 5.29. Dilogo de Revertir


Si desea deshacer un borrado o un renombrado, necesitar utilizar Revertir en la carpeta padre dado que
el tem borrado ya no existe y no podr hacer click con el botn derecho sobre l.
If you want to undo the addition of an item, this appears in the context menu as TortoiseSVN Undo
add.... This is really a revert as well, but the name has been changed to make it more obvious.

85

Gua de uso diario

Las columnas en este dilogo pueden ser personalizadas de la misma forma que las columnas en el dilogo
Comprobar modificaciones. Para ms detalles, lea Seccin 5.7.3, Estado local y remoto.

Deshaciendo cambios que han sido confirmados


Revertir slo deshar sus cambios locales. No deshace ningn cambio que ya haya sido
confirmado. Si desea deshacer todos los cambios que se confirmaron en una revisin
en particular, lea Seccin 5.9, Dilogo de Registro de revisiones para obtener ms
informacin.

Revert is Slow
When you revert changes you may find that the operation takes a lot longer than you expect.
This is because the modified version of the file is sent to the recycle bin, so you can retrieve
your changes if you reverted by mistake. However, if your recycle bin is full, Windows takes
a long time to find a place to put the file. The solution is simple: either empty the recycle
bin or deactivate the Use recycle bin when reverting box in TortoiseSVN's settings.

5.16. Limpieza
Si un comando de Subversion no puede completarse de forma correcta, quizs por problemas en el
servidor, su copia de trabajo puede quedarse en un estado inconsistente. En ese caso deber utilizar
TortoiseSVN Limpiar en la carpeta. Es una buena idea hacerlo en la rama superior de la copia de
trabajo.
Cleanup has another useful side effect. If a file date changes but its content doesn't, Subversion cannot
tell whether it has really changed except by doing a byte-by-byte comparison with the pristine copy. If
you have a lot of files in this state it makes acquiring status very slow, which will make many dialogs
slow to respond. Executing a Cleanup on your working copy will repair these broken timestamps and
restore status checks to full speed.

Utilizar fechas de confirmacin


Algunas versiones anteriores de Subversion estaban afectadas con un error que causaba
errores en la fecha cuando obtena con la opcin Utilizar fechas de confirmacin activada.
Utilice el comando Limpieza para acelerar esas copias de trabajo.

5.17. Configuracin del proyecto

86

Gua de uso diario

Figura 5.30. Pgina de propiedades del Explorador, pestaa Subversion


A veces desea obtener informacin ms detallada sobre un fichero o directorio que la que proporcionan
los iconos sobreimpresionados. Puede obtener toda la informacin que Subversion proporciona en el
dilogo de propiedades del explorador. Simplemente seleccione el fichero o directorio y seleccione Men
de Windows Propiedades en el men contextual (atencin: sta es la entrada normal del men de
propiedades que el explorador proporciona, no la que est en el submen de TortoiseSVN!). En el cuadro
de dilogo de propiedades, TortoiseSVN ha aadido una nueva pgina de propiedades para los ficheros
y carpetas bajo control de Subversion, donde puede ver toda la informacin relevante sobre el fichero/
directorio seleccionado.

5.17.1. Propiedades de Subversion

87

Gua de uso diario

Figura 5.31. Pgina de propiedades de Subversion


You can read and set the Subversion properties from the Windows properties dialog, but also from
TortoiseSVN properties and within TortoiseSVN's status lists, from Context menu properties.
You can add your own properties, or some properties with a special meaning in Subversion. These
begin with svn:. svn:externals is such a property; see how to handle externals in Seccin 5.2.4,
Proyectos referenciados.

5.17.1.1. svn:keywords
Subversion soporta expansin de palabras clave similar a CVS, lo que puede utilizarse para introducir
el nombre del fichero y la informacin de la revisin dentro del propio fichero. Las palabras clave
actualmente soportadas son:
$Date$
Fecha de la ltima confirmacin conocida. Esto se basa en la informacin obtenida cuando actualiza
su copia de trabajo. No se contacta con el repositorio para buscar cambios ms recientes.
$Revision$
Revisin de la ltima confirmacin conocida.
$Author$
Autor que hizo la ltima confirmacin conocida.
$HeadURL$
La URL completa de este fichero en el repositorio.
$Id$
Una combinacin comprimida de las cuatro palabras clave anteriores.
To find out how to use these keywords, look at the svn:keywords section [http://svnbook.red-bean.com/
en/1.4/svn.advanced.props.special.keywords.html] in the Subversion book, which gives a full description
of these keywords and how to enable and use them.
For more information about properties in Subversion see the Special Properties [http://svnbook.redbean.com/en/1.4/svn.advanced.props.html].

88

Gua de uso diario

5.17.1.2. Aadiendo y editando propiedades

Figura 5.32. Aadiendo propiedades


Para aadir una nueva propiedad, primero pulse en Aadir.... Seleccione el nombre de la propiedad
deseado del cuadro desplegable, o escriba un nombre de su eleccin, y luego introduzca un valor en la
caja de texto que hay debajo. Para las propiedades que admiten mltiples valores, como una lista de
ignorados, stos se pueden introducir en mltiples lneas. Pulse en Aceptar para a
Si desea aplicar una propiedad a muchos tems a la vez, seleccione los ficheros/carpetas en el explorador,
y luego seleccione Men contextual propiedades
Si desea aplicar la propiedad a cada fichero y carpeta en la jerarqua 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. An as puede aplicar
dicha propiedad recursivamente a todos los ficheros en una jerarqua, pero tendr que escribir el nombre
de la propiedad usted mismo.
Si desea editar una propiedad existente, primero seleccione dicha propiedad de la lista de propiedades
existentes, y luego pulse en Editar....
Si desea eliminar una propiedad existente, seleccione dicha propiedad de la lista de propiedades
existentes, y luego pulse en Eliminar.
La propiedad svn:externals se puede utilizar para traer otros proyectos del mismo repositorio o de
otro completamente distinto. Para ms informacin, lea Seccin 5.2.4, Proyectos referenciados.

5.17.1.3. Exportando e importando propiedades


A menudo se encontrar aplicando el mismo conjunto de propiedades muchas veces, por ejemplo
bugtraq:logregex. Para simplificar el proceso de copiar propiedades de un proyecto a otro, puede
utilizar la caracterstica Exportar/Importar.
Desde el fichero o carpeta en el que las propiedades ya estn establecidas, utilice TortoiseSVN
Propiedades, seleccione las propiedades que desea exportar y haga click en Exportar.... Se le preguntar
por un nombre de fichero donde se grabarn los nombres de las propiedades y sus valores.

89

Gua de uso diario

Desde la(s) carpeta(s) donde desea aplicar estas propiedades, utilice TortoiseSVN Propiedades
y haga click en Importar.... Se le preguntar por un nombre de fichero desde el que importar, por lo
que deber navegar al lugar donde almacen el fichero exportado anteriormente y seleccionarlo. Las
propiedades se aadirn a las carpetas de forma no recursiva.
Si desea aadir las carpetas a un rbol recursivamente, siga los pasos anteriores, y luego en el dilogo de
propiedades seleccione cada propiedad por turnos, haga click en Editar..., seleccione la casilla Aplicar
propiedad recursivamentey haga click en Aceptar.
El formato del fichero de importacin es binario y propietario de TortoiseSVN. Su nico propsito es
transferir las propiedades utilizando Importar y Exportar, por lo que no hay necesidad de editar estos
ficheros.

5.17.1.4. Propiedades binarias


TortoiseSVN puede manejar valores de propiedades binarios utilizando ficheros. Para leer un valor de
propiedad binario, utilice Grabar... para almacenarlo en un fichero. Para establecer un valor binario,
utilice un editor hexadecimal u otra herramienta adecuada para crear un fichero con el contenido que
necesite, y luego utilice Cargar... para leer ese fichero.
Aunque las propiedades binarias no se utilizan a menudo, pueden ser tiles en algunas aplicaciones. Por
ejemplo, si est almacenando ficheros grficos muy grandes, o si la aplicacin que se utiliza para cargar
el fichero es pesada, puede querer guardar una pequea imagen gua como una propiedad para poder
obtener una previsualizacin rpidamente.

5.17.1.5. Establecer propiedades automticamente


You can configure Subversion and TortoiseSVN to set properties automatically on files and folders when
they are added to the repository. There are two ways of doing this.
You can edit the subversion configuration file to enable this feature on your client. The General page of
TortoiseSVN's settings dialog has an edit button to take you there directly. The config file is a simple text
file which controls some of subversion's workings. You need to change two things: firstly in the section
headed miscellany uncomment the line enable-auto-props = yes. Secondly you need to
edit the section below to define which properties you want added to which file types. This method is a
standard subversion feature and works with any subversion client. However it has to be defined on each
client individually - there is no way to propagate these settings from the repository.
An alternative method is to set the tsvn:autoprops property on folders, as described in the next
section. This method only works for TortoiseSVN clients, but it does get propagated to all working copies
on update.
Whichever method you choose, you should note that auto-props are only applied to files at the time
they are added to the repository. Auto-props will never change the properties of files which are already
versioned.
If you want to be absolutely sure that new files have the correct properties applied, you should set up a
repository pre-commit hook to reject commits where the required properties are not set.

Confirmar propiedades
Las propiedades de Subversion estn versionadas. Despus de que cambie o aada una
propiedad tiene que confirmar sus cambios.

90

Gua de uso diario

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 despus de que haya
resuelto del conflicto.

5.17.2. Propiedades de projecto TortoiseSVN


TortoiseSVN tiene unas pocas propiedades especiales para s mismo, y estas empiezan con tsvn:.
tsvn:logminsize establece la longitud mnima de un mensaje de registro para una confirmacin.
Si introduce un mensaje ms corto de lo especificado aqu, la confirmacin se deshabilita. Esta
caracterstica es muy til para que se acuerde de proporcionar un mensaje descriptivo apropiado para
cada confirmacin. Si esta propiedad no se establece, o el valor es cero, se permiten mensajes de
registro vacos.
tsvn:lockmsgminsize establece la longitud mnima para un mensaje de bloqueo. Si introduce
un mensaje ms corto de lo especificado aqu, el bloqueo se deshabilita. Esta caracterstica 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 vacos.
tsvn:logwidthmarker se utiliza con proyectos que necesitan que los mensajes de registro se
formateen con algn ancho mximo (tpicamente, 80 caracteres) antes de un salto de lnea. Al establecer
esta propiedad a un valor distinto de cero ocurren dos cosas en el dilogo de entrada de mensajes de
registro: pone un marcador para indicar el ancho mximo, y deshabilita el ajuste de lnea en la pantalla,
para que pueda ver si el texto que ha introducido es muy largo. Tenga en cuenta que esta caracterstica
slo funcionar correctamente si ha seleccionado una fuente de ancho fijo para los mensajes de registro.
tsvn:logtemplate se utiliza en proyectos que tienen reglas sobre el formateo de mensajes. Esta
propiedad alberga una cadena de texto de mltiples lneas que se insertar en el cuadro del mensaje
de confirmacin cuando inice una confirmacin. Puede editarlo para incluir la informacin necesaria.
Tenga en cuenta que si estaba utilizando tambin tsvn:logminsize, debe asegurarse de establecer
una longitud mayor que la de la plantilla o perder el mecanismo de proteccin.
Subversion allows you to set autoprops which will be applied to newly added or imported files, based
on the file extension. This depends on every client having set appropriate autoprops in their subversion
configuration file. tsvn:autoprops can be set on folders and these will be merged with the user's
local autoprops when importing or adding files. The format is the same as for subversion autoprops,
e.g. *.sh = svn:eol-style=native;svn:executable sets two properties on files with
the .sh extension.
Si hay un conflicto entre las autoprops locales y tsvn:autoprops, la configuracin del proyecto
tiene preferencia ya que son especficas para ese proyecto.
In the Commit dialog you have the option to paste in the list of changed files, including the status of
each file (added, modified, etc). tsvn:logfilelistenglish defines whether the file status is
inserted in English or in the localized language. If the property is not set, the default is true.
TortoiseSVN can use spell checker modules which are also used by OpenOffice and Mozilla. If you
have those installed this property will determine which spell checker to use, i.e. in which language
the log messages for your project should be written. tsvn:projectlanguage sets the language
module the spell checking engine should use when you enter a log message. You can find the values for
your language on this page: MSDN: Language Identifiers [http://msdn2.microsoft.com/en-us/library/
ms776260.aspx].
Puede introducir este valor en decimal, o en hexadecimal si se precede por 0x. Por ejemplo, Espaol
(Espaa, ordenacin tradicional) puede introducirse como 0x040a or 1034.

91

Gua de uso diario

La propiedad tsvn:logsummary se utiliza para extraer una porcin del mensaje de registro que
luego se muestra en el dilogo de registro como el sumario del mensaje de registro.
El valor de la propiedad tsvn:logsummary debe establecerse a una cadena de texto regex de una
lnea que contenga un grupo regex. Lo que satisfaga ese grupo se utilizar como sumario.
Por ejemplo: \[SUMARIO\]:\s+(.*) capturar todo lo que haya tras [SUMARIO] en el mensaje
de registro y lo utillizar como sumario.
Cuando quiera aadir una nueva propiedad, puede o bien elegir una desde la lista en el cuadro
desplegable, o puede introducir el nombre de propiedad que desee. Si su proyecto utiliza algunas
propiedades personalizadas, y quiere que esas propiedades aparezcan en la lista del cuadro desplegable
(para evitar errores ortogrficos cuando introduzca un nombre de propiedad), puede crear una
llista de sus propias propiedades personalizadas utilizando tsvn:userfileproperties y
tsvn:userdirproperties. Aplique estas propiedades a una carpeta. Cuando vaya a editar las
propiedades de cualquier tem hijo, sus propiedades personalizadas aparecern en la lista de nombres
de propiedades predefinidas.
Some tsvn: properties require a true/false value. TortoiseSVN also understands yes as a
synonym for true and no as a synonym for false.
TortoiseSVN can integrate with some bug tracking tools. This uses project properties that start with
bugtraq:. Read Seccin 5.27, Integracin con sistemas de control de errores / seguimiento de
incidencias for further information.
It can also integrate with some web-based repository browsers, using project properties that start with
webviewer:. Read Seccin 5.28, Integracin con visores de repositorios basados en web for further
information.

Set the project properties on folders


These special project properties must be set on folders for the system to work. When you
commit a file or folder the properties are read from that folder. If the properties are not
found there, TortoiseSVN will search upwards through the folder tree to find them until it
comes to an unversioned folder, or the tree root (eg. C:\) is found. If you can be sure that
each user checks out only from e.g trunk/ and not some sub-folder, then it is sufficient to
set the properties on trunk/. If you can't be sure, you should set the properties recursively
on each sub-folder. A property setting deeper in the project hierarchy overrides settings on
higher levels (closer to trunk/).
For project properties only you can use the Recursive checkbox to set the property to all
sub-folders in the hierarchy, without also setting it on all files.
Cuando aada nuevas subcarpetas utilizando TortoiseSVN, cualquier propiedad de proyecto presente en
la carpeta padre se aadir tambin automticamente a la nueva carpeta hija.

Atencin
Aunque las propiedades de proyecto de TortoiseSVN son extremadamente tiles, slo
funcionan con TortoiseSVN, y algunas slo funcionarn en las versiones ms recientes
de TortoiseSVN. Si la gente que trabaja en su proyecto utiliza un nmero de clientes
de Subversion diferentes, o es posible que tengan versiones antiguas de TortoiseSVN,
puede que quiera utilizar ganchos de repositorio para forzar polticas de proyectos. Las
propiedades de proyecto slo ayudan a implementar una poltica, no pueden forzarlas.

5.18. Haciendo ramas / etiquetas

92

Gua de uso diario

Una de las caractersticas de los sistemas de control de versiones es la posibilidad de aislar cambios en
una lnea separada de desarrollo. Esto se conoce como una rama. Las ramas se utilizan a menudo para
probar nuevas caractersticas sin molestar la lnea principal del desarrollo con errores de compilacin y
errores. Tan pronto como la nueva caracterstica es lo suficiente estable, la rama de desarrollo se fusiona
de nuevo en la rama principal (trunk, troncal/tronco).
Otra caracterstica de los sistemas de control de versiones es la posibilidad de marcar revisiones
particulares (por ejemplo, una versin lanzada a produccin), para que pueda en cualquier momento
recrear un cierto entorno o compilacin. Este proceso se conoce como etiquetar.
Subversion does not have special commands for branching or tagging, but uses so-called cheap copies
instead. Cheap copies are similar to hard links in Unix, which means that instead of making a complete
copy in the repository, an internal link is created, pointing to a specific tree/revision. As a result branches
and tags are very quick to create, and take up almost no extra space in the repository.

5.18.1. 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:

Figura 5.33. El dilogo 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

93

Gua de uso diario

http://svn.collab.net/repos/NombreDelProyecto/trunk
querr ahora usar algo como
http://svn.collab.net/repos/NombreDelProyecto/tags/Version_1.10
Si no puede recordar la convencin de nombres que us la ltima vez, pulse el botn 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:
Revisin HEAD en el repositorio
La nueva rama se copia directamente en el repositorio desde la revisin HEAD. No se necesita
transferir datos desde su copia de trabajo, y la rama se crea muy rpidamente.
Revisin especfica en el repositorio
La nueva rama se copia directamente en el repositorio, pero puede elegir una versin anterior. Esto
es til si se olvid de crear una etiqueta cuando lanz una versin de su proyecto la semana pasada.
Si no puede acordarse del nmero de revisin, pulse el botn a la derecha para mostrar el registro
de revisiones, y seleccione el nmero de revisin desde all. De nuevo no se transfiere datos desde
su copia de trabajo, y la rama se crea muy rpidamente.
Copia de trabajo
La nueva rama es una copia idntica de su copia de trabajo local. Si ha cambiado algunos ficheros
a una revisin 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.
Si desea que su copia de trabajo se cambie automticamente a la rama recin creada, utilice la casilla
Cambiar la copia de trabajo a la nueva rama/etiqueta. Pero si lo hace, asegrese primero de que
su copia de trabajo no contenga modificaciones. Si las tiene, esos cambios se mezclarn en la copia de
trabajo de la rama cuando se haga el cambio.
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.
Note that unless you opted to switch your working copy to the newly created branch, creating a Branch
or Tag does not affect your working copy. Even if you create the branch from your WC, those changes
are committed to the new branch, not to the trunk, so your WC may still be marked as modified with
respect to the trunk.

5.18.2. Obtener o cambiar...


...that is (not really) the question. While a checkout downloads everything from the desired branch in the
repository to your working directory, TortoiseSVN Switch... only transfers the changed data to your
working copy. Good for the network load, good for your patience. :-)
To be able to work with your freshly generated branch or tag you have several ways to handle it. You can:
TortoiseSVN Obtener para obtener una copia nueva en una carpeta vaca. 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 recin creada en el repositorio. De nuevo seleccione la
carpeta superior de su proyecto y utilice TortoiseSVN Cambiar... del men contextual.
En el siguiente dilogo, introduzca la URL de la rama que acaba de crear. Deje la opcin Revisin
HEAD activada y pulse Aceptar. Su copia de trabajo se cambia a la nueva rama/etiqueta.

94

Gua de uso diario

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 todava no se hayan confirmado se fusionarn 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 revisin ya-confirmada (tpicamente HEAD).
If you want to work on trunk and branch, but don't want the expense of a fresh checkout, you can use
Windows Explorer to make a copy of your trunk checkout in another folder, then TortoiseSVN
Switch... that copy to your new branch.

Figura 5.34. El dilogo Cambiar


Aunque Subversion por s mismo no hace ninguna distincin entre etiquetas y ramas, la forma en la que
normalmente se usan difiere un poco.
Las etiquetas se usan tpicamente para crear una copia esttica 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 razn recomendamos la estructura del repositorio /trunk /branches /tags en primer
lugar. Trabajando en una revisin etiquetada no es una buena idea, pero dado que sus ficheros locales
no estn 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 ingls), TortoiseSVN le avisar.
Puede ser que necesite hacer ms cambios a una versin que ya haba etiquetado. La forma correcta de
manejar esta situacin 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_1.0.1.
Si modifica una copia de trabajo creada desde una rama y confirma, entonces los cambios irn a la
nueva rama y no en el tronco. Slo se guardan las modificaciones. El resto contina siendo una copia
barata.

5.19. Fusionando
Mientras que las ramas se utilizan para mantener lneas de desarrollo separadas, en alguna etapa tendr
que fusionar los cambios hechos en una rama de vuelta en el tronco, o viceversa.
It is important to understand how branching and merging works in Subversion before you start using it, as
it can become quite complex. It is highly recommended that you read the chapter Branching and Merging
[http://svnbook.red-bean.com/en/1.4/svn.branchmerge.html] in the Subversion book, which gives a full
description and many examples of how it is used.

95

Gua de uso diario

El siguiente punto a tener en cuenta es que la fusin siempre tiene lugar en una copia de trabajo. Si quiere
fusionar cambios en una rama, deber tener una copia de trabajo obtenida de dicha rama, e invocar el
asistente de fusionado desde esa copia de trabajo utilizando TortoiseSVN Fusionar....
En general es una buena idea realizar fusiones en una copia de trabajo sin modificar. Si ha hecho otros
cambios en su copia de trabajo, confrmelos primero. Si la fusin 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 fusin.
There are three common use cases for merging which are handled in slightly different ways, as described
below. The first page of the merge wizard asks you to select the method you need.
Fusionando un rango de revisiones.
Este mtodo cubre el caso en el que ha hecho una o ms revisiones a una rama (o al tronco) y desea
portar estos cambios a una rama diferente.
Lo que le est pidiendo a Subversion que haga es: Calcula los cambios necesarios para ir [DESDE]
la revisin 1 de la rama A [HASTA] la revisin 7 de la rama A, y aplica esos cambios en mi copia
de trabajo (del tronco o de la rama B).
Reintegrando una rama.
This method covers the case when you have made a feature branch as discussed in the Subversion
book. All trunk changes have been ported to the feature branch, week by week, and now the feature
is complete you want to merge it back into the trunk. Because you have kept the feature branch
synchronized with the trunk, the latest versions of branch and trunk will be absolutely identical except
for your branch changes.
Este es un caso especial de la fusin de rboles describa ms abajo, y necesita slo la URL desde
la que fusionar (normalmente) su rama de desarrollo. Utiliza las caractersticas de registro de
fusiones de Subversion para calcular el rango de revisiones correcto que se debe utilizar, y realiza
comprobaciones adicionales para asegurarse de que la rama ha sido completamente actualizada con
los cambios del tronco. Esto le asegura que no va a deshacer accidentalmente el trabajo que otros
han confirmado en el tronco desde sus ltimos cambios sincronizados.
After the merge, all branch development has been completely merged back into the main
development line. The branch is now redundant and can be deleted.
Fusionando dos rboles diferentes.
This is a more general case of the reintegrate method. What you are asking Subversion to do is:
Calculate the changes necessary to get [FROM] the head revision of the trunk [TO] the head revision
of the branch, and apply those changes to my working copy (of the trunk). The net result is that
trunk now looks exactly like the branch.
If your server/repository does not support merge-tracking then this is the only way to merge a
branch back to trunk. Another use case occurs when you are using vendor branches and you need
to merge the changes following a new vendor drop into your trunk code. For more information read
the chapter on vendor branches [http://svnbook.red-bean.com/en/1.4/svn.advanced.vendorbr.html]
in the Subversion Book.

5.19.1. Fusionando un rango de revisiones

96

Gua de uso diario

Figura 5.35. El asistente de fusionado - Seleccionar el rango de revisiones


In the From: field enter the full folder URL of the branch or tag containing the changes you want to
port into your working copy. You may also click ... to browse the repository and find the desired branch.
If you have merged from this branch before, then just use the drop down list which shows a history of
previously used URLs.
En el campo Rango de revisiones a fusionar introduzca la lista de revisiones que desea fusionar. Puede
ser una nica revisin, una lista de revisiones especficas separadas por comas, un rango de revisiones
separado por un guin, o cualquier combinacin de stas.
The easiest way to select the range of revisions you need is to click on Show Log, as this will list recent
changes with their log comments. If you want to merge the changes from a single revision, just select
that revision. If you want to merge changes from several revisions, then select that range (using the usual
Shift-modifier). Click on OK and the list of revision numbers to merge will be filled in for you.
Si desea fusionar los cambios de nuevo fuera de su copia de trabajo, para revertir un cambio que ya ha
sido confirmado, seleccoine las revisiones a revertir y asegrese de que la casilla Fusin inversa est
marcada.
Si ya ha fusionado algunos cambios desde esta rama, esperemos que haya apuntado la ltima revisin
fusionada 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
fusin como punto de inicio de esta fusin. Por ejemplo, si la ltima vez fusion las revisiones de la 37
a la 39, entonces el punto de inicio de esta fusin sera la revisin 39.
Si est utilizando las caractersticas de registro de fusiones de Subversion, no necesita recordar qu
revisiones ya han sido fusionadas - Subversion lo apuntar por usted. Si deja el rango de revisiones en

97

Gua de uso diario

blanco, se incluirn todas las revisiones que no hayan sido an fusionadas. Lea Seccin 5.19.6, Registro
de fusin para saber ms.
Si hay otras personas que puedan estar confirmando cambios, entonces tenga cuidado al utilizar la revisin
HEAD. Puede que no se refiera a la revisin que usted cree si alguien ms ha hecho una confirmacin
despus de su ltima actualizacin.
Haga click en Siguiente y vaya a Seccin 5.19.4, Opciones de fusin

5.19.2. Reintegrando una rama.

Figura 5.36. El asistente de fusin - Fusionar reintegracin


To merge a feature branch back into the trunk you must start the merge wizard from within a working
copy of the trunk.
In the From URL: field enter the full folder URL of the branch that you want to merge back. You may
also click ... to browse the repository.
Hay algunas condiciones que se aplican a la fusin de reintegracin. En primer lugar, el servidor debe
soportar el registro de fusiones. La copia de trabajo debe ser de profundidad infinita (sin obtenciones
parciales), y no debe tener ninguna modificacin local, tems apuntando a otra ruta o tems que hayan
sido actualizados a otras revisiones distintas de HEAD. Todos los cambios del tronco hechos durante el
desarrollo de la rama deben haberse fusionado en la rama (o marcados como que ya han sido fusionados).
El rago de revisiones para la fusin se calcular automticamente.

5.19.3. Fusionando dos rboles diferentes

98

Gua de uso diario

Figura 5.37. El asistente de fusin - Fusin de rboles


Si est utilizando este mtodo para fusioanr una rama de caracterstica de nuevo en el tronco, necesitar
iniciar el asistente de fusin desde una copia de trabajo del tronco.
In the From: field enter the full folder URL of the trunk. This may sound wrong, but remember that the
trunk is the start point to which you want to add the branch changes. You may also click ... to browse
the repository.
In the To: field enter the full folder URL of the feature branch.
En los dos campos Desde la Revisin y Hasta la Revisin, introduzca el ltimo nmero de revisin
en el que se sincronizaron los dos rboles. Si est seguro de que nadie ms est haciendo confirmaciones
puede utilizar HEAD en ambos casos. Si hay alguna posibilidad de que alguien haya hecho una
confirmacin desde esa sincronizacin, utilice el nmero de revisin especfico para evitar perder cambios
ms recientes.
You can also use Show Log to select the revision.

5.19.4. Opciones de fusin


Esta pgina del asistente le permite especificar opciones avanzadas antes de empezar el proceso de fusin.
La mayora de las veces puede simplemente utilizar las opciones por defecto.
Puede especificar la profundidad de la fusin, es decir, cuntos niveles debe bajar la fusin en su copia
de trabajo. Los trminos de profundidad se describen en Seccin 5.3.1, Profundidad de obtencin. La
profundidad por defecto es Copia de trabajo, que utiliza la configuracin de profundidad existente, y
que casi siempre es lo que quiere hacer.

99

Gua de uso diario

Most of the time you want merge to take account of the file's history, so that changes relative to a common
ancestor are merged. Sometimes you may need to merge files which are perhaps related, but not in
your repository. For example you may have imported versions 1 and 2 of a third party library into two
separate directories. Although they are logically related, Subversion has no knowledge of this because
it only sees the tarballs you imported. If you attempt to merge the difference between these two trees
you would see a complete removal followed by a complete add. To make Subversion use only pathbased differences rather than history-based differences, check the Ignore ancestry box. Read more about
this topic in the Subversion book, Noticing or Ignoring Ancestry [http://svnbook.red-bean.com/en/1.4/
svn.branchmerge.copychanges.html#svn.branchmerge.copychanges.bestprac.ancestry]
Puede especificar la forma en la que se manejan los cambios en los finales de lnea y en los espacios en
blanco. Estas opciones se describen en Seccin 5.10.2, Opciones de fn de lnea y espacios en blanco.
El comportamiento por defecto es tratar todos los espacios en blanco y las diferencias en los finales de
lneas como cambios reales que deben fusionarse.
Si est utilizando el registro de fusiones y desea marcar una revisin como que ya se ha fusionado, sin
hacer realmente efectiva la fusin aqu, marque la casilla Slo registrar la fusin. Hay dos posibles
razones por las que puede querer hacer esto. Puede ser que la fusin es demasiado complicada para los
algoritmos de fusin, por lo que hace los cambios en el cdigo a mano, y luego marca el cambio como
fusionado para que el algoritmo de registro de fusin se de por enterado. O quizs quiera evitar que una
revisin en concreto se fusione. Marcndola como ya fusionada evitar que la fusin se produzca con los
clientes manejan la informacin de registro de fusin.
Now everything is set up, all you have to do is click on the Merge button. If you want to preview the
results Test Merge performs the merge operation, but does not modify the working copy at all. It shows
you a list of the files that will be changed by a real merge, and notes those areas where conflicts will occur.
El dilogo de progreso de fusin muestra cada etapa de la fusin, con los rangos de revisiones
involucrados. Esto puede indicar un nmero de revisin ms del que esperaba. Por ejemplo, si pidi
fusionar la revisin 123, el dilogo de progreso mostrar Fusionando de r122 a r123. Para entenderlo
debe recordar que Fusionar est ntimamente relacionado con Diferenciar. El proceso de fusin funciona
generando una lista de diferencias entre dos puntos del repositorio, y posteriormente aplicando esas
diferencias a su copia de trabajo. El dilogo de progreso est simplemente mostrando los puntos de inicio
y fin de la diferenciacin.

5.19.5. Revisando los resultados de la fusin


La fusin ya ha concludo. Es una buena idea observar la fusin y comprobar si el resultado es el esperado.
Normalmente fusionar es un proceso complicado. A menudo aparecen conflictos cuando la rama se ha
desviado mucho del tronco.
For Subversion clients and servers prior to 1.5, no merge information is stored and merged
revisions have to be tracked manually. When you have tested the changes and come to commit
this revision, your commit log message should always include the revision numbers which have
been ported in the merge. If you want to apply another merge at a later time you will need to
know what you have already merged, as you do not want to port a change more than once. For
more information about this, refer to Best Practices for Merging [http://svnbook.red-bean.com/en/1.4/
svn.branchmerge.copychanges.html#svn.branchmerge.copychanges.bestprac] in the Subversion book.
Si su servidor y todos los clientes estn ejecutando Subverison 1.5 o superior, las facilidades de registro
de fusiones apuntarn las revisiones fusionadas y evitarn que una revisin se fusione ms de una vez.
Esto le facilita mucho la vida ya que puede simplemente fusionar el rango entero de revisiones cada vez
y saber qu slo las nuevas revisiones sern realmente fusionadas.
El manejo de las ramas es importante. Si desea mantener esta rama actualizada respecto al tronco, debera
asegurarse de fusionar a menudo para que la rama y el tronco no se alejen mucho. Por supuesto, sigue
debiendo evitar fusiones repetidas de cambios, como se explic anteriormente.

100

Gua de uso diario

Sugerencia
If you have just merged a feature branch back into the trunk, the trunk now contains all the
new feature code, and the branch is obsolete. You can now delete it from the repository
if required.

Importante
Subversion can't merge a file with a folder and vice versa - only folders to folders and files
to files. If you click on a file and open up the merge dialog, then you have to give a path
to a file in that dialog. If you select a folder and bring up the dialog, then you must specify
a folder URL for the merge.

5.19.6. Registro de fusin


Subversion 1.5 introdujo facilidades para el registro de fusiones.. Cuando fusiona cambios de un rbol
en otro, los nmeros de revisin fusionados se almacenan, y esta informacin se puede utilizar para
diferentes propsitos.
Puede evitar el peligro de fusionar la misma revisin dos veces (problema de fusiones repetidas). Una
vez que una revisin se ha marcado como que ha sido fusionada, las fusiones futuras que incluyan esa
revisin en el rango la saltarn.
Cuando fusiona una rama de nuevo al tronco, el dilogo de registro le puede mostrar las confirmaciones
de la rama como parte del registro del tronco, proporcionando una mejor trazabilidad de los cambios.
Cuando muestre informacin de autora para un fichero, puede elegir mostrar el autor original de la
revisin fusionada, en vez de la persona que hizo la fusin.
Puede marcar revisiones como no fusionar si las incluye en la lista de revisiones fusionadas sin ejecutar
relamente la fusin.
Merge tracking information is stored in the svn:mergeinfo property by the client when it performs
a merge. When the merge is committed the server stores that information in a database, and when you
request merge, log or blame information, the server can respond appropriately. For the system to work
properly you must ensure that the server, the repository and all clients are upgraded. Earlier clients will
not store the svn:mergeinfo property and earlier servers will not provide the information requested
by new clients.
Find out more about merge tracking from Subversion's Merge tracking documentation [http://
subversion.tigris.org/merge-tracking/index.html].

5.19.7. Manejando conflictos durante la fusin


Merging does not always go smoothly. Sometimes there is a conflict, and if you are merging multiple
ranges, you generally want to resolve the conflict before merging of the next range starts. TortoiseSVN
helps you through this process by showing the merge conflict callback dialog.

101

Gua de uso diario

Figura 5.38. The Merge Conflict Callback Dialog


When a conflict occurs during the merge, you have three ways to handle it.
1. Puede decidir que sus cambios locales son mucho ms importantes, por lo que querr descartar la
versin del repositorio y mantener su versin local. O puede querer descartar sus cambios locales
en favor de la versin del repositorio. De cualquier forma, no se intenta fusionar los cambios simplemente elige una u otra.
2. Normalmente querr ver los conflictos y resolverlos. En ese caso, seleccione Editar conflicto, lo que
iniciar su herramienta de fusionado. Cuando est satisfecho con el resultado, pulse en Resuelto.
3. La ltima opcin es posponer la resolucin y continuar con el fusionado. Puede elegir hacerlo para el
fichero en conflicto actual, o para todos los ficheros durante el resto de la fusin. Sin embargo, si hay
ms cambios en ese fichero, no ser posible completar la fusin.

5.19.8. Merge a Completed Branch


If you want to merge all changes from a feature branch back to trunk, then you can use the TortoiseSVN
Merge reintegrate... from the extended context menu (hold down the Shift key while you right click
on the file).

Figura 5.39. The Merge reintegrate Dialog

102

Gua de uso diario

This dialog is very easy. All you have to do is set the options for the merge, as described in Seccin 5.19.4,
Opciones de fusin. The rest is done by TortoiseSVN automatically using merge tracking.

5.20. Bloqueando
Subversion generalmente trabaja mejor sin bloqueos, utilizando los mtodos Copiar-ModificarFusionar que se describieron anteriormente en el Seccin 2.2.3, La solucin copiar-modificarfusionar. Sin embargo, hay algunas pocas situaciones en las que puede querer implementar alguna forma
de poltica de bloqueo.
Est utilizando ficheros no fusionables, por ejemplo, ficheros de imagen. Si dos personas cambian
el mismo fichero, la fusin no es posible, as que alguno de ellos perder sus cambios.
Your company has always used a locking revision control system in the past and there has been a
management decision that locking is best.
Firstly you need to ensure that your Subversion server is upgraded to at least version 1.2. Earlier versions
do not support locking at all. If you are using file:// access, then of course only your client needs
to be updated.

5.20.1. Cmo trabaja el bloqueo en Subversion


Por defecto, nada se bloquea y todo el mundo que tiene acceso de confirmacin puede confirmar cambios
a cualquier fichero en cualquier momento. Los dems actualizarn sus copias de trabajo peridicamente
y los cambios en el repositorio se fusionarn con los cambios locales.
Si Obtiene un Bloqueo en un fichero, entonces slo usted puede confirmar ese fichero. Las confirmaciones
de los dems se bloquearn 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 dueo del bloqueo.
Sin embargo, los dems usuarios no necesariamente saben que usted ha obtenido un bloqueo. A menos
que ellos comprueben el estado de bloqueo regularmente, la primera vez que sabrn sobre l es cuando sus
confirmaciones fallen, lo que muchas veces no es muy til. Para hacer ms fcil 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
slo-lectura a menos que la copia de trabajo tenga un bloqueo para ese fichero. Esto acta como una
advertencia de que no debera modificar el fichero a menos que obtenga un bloqueo. Los ficheros que
estn versionados y marcados como slo-lectura se marcan con un icono de sobreimpresin 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 tambin con el propietario. Si tiene varias copias de
trabajo (en casa, en el trabajo) entonces slo puede obtener un bloqueo en una de esas copias de trabajo.
Si uno de sus compaeros de trabajo obtiene un bloqueo y luego se va de vacaciones sin quitarlo, qu
hace? Subversion proporciona un mtodo 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 compaeros 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 invlido.
El repositorio siempre es la referencia definitiva.

5.20.2. 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....

103

Gua de uso diario

Figura 5.40. El dilogo Bloquear


Aparece un dilogo, que le permite introducir un comentario, para que los dems vean por qu ha
bloqueado el fichero. El comentario es opcional, y de momento slo se utiliza con repositorios basados
en Svnserve. Si (y slo si) necesita robar el bloqueo de alguien, marque la casilla Robar bloqueo, y
luego pulse Aceptar.
If you select a folder and then use TortoiseSVN Get Lock... the lock dialog will open with every
file in every sub-folder selected for locking. If you really want to lock an entire hierarchy, that is the way
to do it, but you could become very unpopular with your co-workers if you lock them out of the whole
project. Use with care ...

5.20.3. Quitando un Bloqueo


Para asegurarse de que no se olvida de quitar un bloqueo que no necesita ms, los ficheros bloqueados
se muestran en el dilogo de confirmar y se seleccionan por defecto. Si contina con la confirmacin,
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 estn
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
ms que introducir por lo que TortoiseSVN contactar con el repositorio y quita los bloqueos. Tambin
puede utilizar este comando en una carpeta para quitar todos los bloqueos recursivamente.

104

Gua de uso diario

5.20.4. Comprobando el estado de los bloqueos

Figura 5.41. El dilogo Comprobar modificaciones


Para ver qu bloqueos tiene usted y los de los dems, 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 dems (y para ver si alguno de sus bloqueos
se han roto o han sido robados) necesita pulsar Comprobar Repositorio.
Desde el men contextual aqu, tambin puede obtener y quitar bloqueos, adems de romper y robar
bloqueos que tienen otros.

Evite romper y robar bloqueos


Si ha roto o robado el bloqueo de otro sin decrselo, puede causar una prdida potencial de
trabajo. Si est trabajando con tipos de ficheros no fusionables 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 proteccin para trabajo en equipo
que el bloqueo le proporcionaba.

5.20.5. Haciendo ficheros no-bloqueados como slo-lectura


Como se menciona arriba, la manera ms efectiva de utilizar los bloqueos es establecer la propiedad
svn:needs-lock en los ficheros. Consulte Seccin 5.17, Configuracin del proyecto para obtener
instrucciones sobre cmo establecer propiedades. Los ficheros con esta propiedad establecida siempre se
obtendrn y actualizarn con la marca de slo-lectura a menos que su copia de trabajo tenga un bloqueo.

Como recordatorio, TortoiseSVN utiliza un icono de sobreimpresin especial para indicarlo.


If you operate a policy where every file has to be locked then you may find it easier to use Subversion's
auto-props feature to set the property automatically every time you add new files. Read Seccin 5.17.1.5,
Establecer propiedades automticamente for further information.

105

Gua de uso diario

5.20.6. 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 despus de obtener un bloqueo, y antes y
despus de quitar un bloqueo.
Es una buena idea instalar un script gancho post-lock y post-unlock en el servidor que enve
un email indicando el fichero que se ha bloqueado. Poniendo este script en su sitio, todos sus usuarios
sern 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.
Tambin puede utilizar ganchos para no permitir romper o robar bloqueos, o quizs para limitarlo a
un administrador designado para ello. O quizs desea enviar un email al propietario cuando uno de sus
bloqueos se haya roto o robado.
Para ms informacin, lea la Seccin 4.3, Scripts gancho.

5.21. Creando y aplicando parches


En proyectos de cdigo abierto (como ste), todos tienen acceso de lectura al repositorio, y cualquiera
puede hacer una contribucin al proyecto. As que cmo se controlan esas contribuciones? Si cualquiera
pudiera confirmar cambios, el proyecto estara permanentemente inestable y probablemente roto de forma
permanente. En esta situacin, 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 devolvrselo al autor.
Los ficheros de parche son simplemente ficheros de diff unificados que muestran las diferencias entre
su copia de trabajo y la revisin base.

5.21.1. 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...

Figura 5.42. El dilogo Crear parche

106

Gua de uso diario

ahora puede seleccionar los ficheros que desea incluir en el parche, del mismo modo a como lo hara
con una confirmacin completa. Esto producir un nico fichero que contendr un resumen de todos
los cambios que ha hecho a los ficheros seleccionados desde la ltima vez que se actualiz desde el
repositorio.
Las columnas en este dilogo pueden ser personalizadas de la misma forma que las columnas en el dilogo
Comprobar modificaciones. Para ms detalles, lea Seccin 5.7.3, Estado local y remoto.
Puede producir parches separados que contengan cambios a diferentes conjuntos de ficheros. Por
supuesto, si crea un fichero de parche, hace algunos cambios ms a los mismos ficheros y luego crea otro
parche, el segundo fichero de parche incluir ambos conjuntos de cambios.
Simplemente grabe el fichero utilizando un nombre de fichero de su eleccin. Los ficheros de parche
pueden tener la extensin que desee, pero por convencin se suele utilizar las extensiones .patch o
.diff extension. Ya est preparado para enviar su fichero de parches.
Tambin puede almacenar el parche en el portapapeles en vez de en un fichero. Puede querer hacer esto
para poder pegarlo en un email de forma que lo revisen otros. O si tiene dos copias de trabajo en una
mquina y quiere transferir cambios de una a otra, un parche en el portapapeles es una forma cmoda
de hacerlo.

5.21.2. Aplicando un fichero parche


Patch files are applied to your working copy. This should be done from the same folder level as was used
to create the patch. If you are not sure what this is, just look at the first line of the patch file. For example,
if the first file being worked on was doc/source/english/chapter1.xml and the first line in
the patch file is Index: english/chapter1.xml then you need to apply the patch to the doc/
source/ folder. However, provided you are in the correct working copy, if you pick the wrong folder
level, TortoiseSVN will notice and suggest the correct level.
Para aplicar un fichero de parche en su copia de trabajo, necesita al menos acceso de lectura al repositorio.
La razn para esto es que el programa de fusin debe referenciar los cambios sobre la revisin contra la
que se hicieron por el desarrollador remoto.
From the context menu for that folder, click on TortoiseSVN Apply Patch... This will bring up a
file open dialog allowing you to select the patch file to apply. By default only .patch or .diff files
are shown, but you can opt for All files. If you previously saved a patch to the clipboard, you can use
Open from clipboard... in the file open dialog.
Alternativamente, si el fichero de parche tiene una extensin .patch o .diff, puede hacer click con
el botn derecho en l directamente y seleccioanr TortoiseSVN Aplicar Parche.... En este caso se
le preguntar la ruta de la copia de trabajo.
Estos dos mtodos le ofrecen formas diferentes de hacer lo mismo. Con el primer mtodo 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 fusionar los cambios del fichero de parche contra su copia de trabajo. Una pequea
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 fusionados.
El parche del desarrollador remoto ya ha sido aplicado a su copia de trabajo, por lo que necesita confirmar
para que todos los dems accedan a los cambios desde el repositorio.

5.22. Quin cambi qu lnea?

107

Gua de uso diario

A veces necesita saber no slo qu lineas han cambiado, sino tambin exactamente quin cambi lneas
especficas en un fichero. Entonces es cuando el comando TortoiseSVN Autora..., a veces conocido
como comando de anotar, tiene su utilidad.
Este comando muestra, por cada lnea en un fichero, su autor y la revisin en la que se cambi la lnea.

5.22.1. Autora de ficheros

Figura 5.43. El dilogo Anotar / Autora


Si no est interesado en cambios de revisiones anteriores puede establecer la revisin desde la cual debe
empezar la autora. Ponga este valor a 1 si desea ver la autora de cada revisin.
Por defecto, el fichero de autora se ve utilizando TortoiseBlame, que remarca las diferentes revisiones
para hacerlas ms fciles de leer. Si desea imprimir o editar el fichero de autora, seleccione Utilizar visor
de texto para ver autoras
Puede especificar la forma en la que se manejarn los cambios en los finales de lnea y en los espacios en
blanco. Estas opciones se describen en Seccin 5.10.2, Opciones de fn de lnea y espacios en blanco.
El comportamiento por defecto es tratar todas las diferencias en los espacios en blanco y en los finales
de lnea como cambios reales, pero si desea ignorar un cambio en la indentacin y encontrar al autor
original, puede elegir la opcin apropiada aqu.
Una vez que pulse Aceptar, TortoiseSVN empieza a recoger la informacin para crear el fichero de
autora. Tenga sto en cuenta: esto puede llevar varios minutos para completarse, dependiendo en cunto
haya cambiado el fichero y por supuesto de su conexin de red con el repositorio. Una vez que el proceso
de autora ha terminado, el resultado se escribe en un fichero temporal y puede ver los resultados.

108

Gua de uso diario

Figura 5.44. TortoiseBlame


TortoiseBlame, que se incluye con TortoiseSVN, hace ms fciles de leer los ficheros de autora. Cuando
pasa el ratn por encima de una lnea en la columna de informacin de autora, todas las lneas con la
misma revisin se sealan con un fondo ms oscuro. Las lneas de otras revisiones que fueron cambiadas
por el mismo autor se sealan 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 lnea, todas las lneas con la misma revisin se sealan, y las lneas de otras revisiones
del mismo autor se sealan en un color ms claro. Este sealado se mantiene, permitindole mover el
ratn sin perder los sealados. Pulse en esa revisin de nuevo para desactivar el sealado.
Los comentarios de la revisin (mensaje de registro) se muestra en un texto de ayuda cuando se pasa
el cursor sobre la columna de informacin de autora. Si quiere copiar el mensaje de registro de esa
revisin, utilice el men contextual que aparece cuando hace click con el botn derecho sobre la columna
de informacin de autora.
Puede buscar dentro del informe de Autora utilizando Edicin Buscar.... Esto le permite buscar por
nmeros de revisin, autores y por el contenido del fichero en si mismo. Los mensajes de registro no se
incluyen en la bsqueda - deber utilizar el dilogo de Mostrar Registro para buscar en ellos.
Tambin puede ir directamente a un nmero de lnea concreto utilizando Editar Ir a la lnea....
Cuando el ratn se coloca encima de las columnas de informacin de autora, tiene disponible un men
contextual que le ayuda a comparar revisiones y examinar la historia, utilizando el nmero de revisin
bajo el ratn como referencia. Men contextual Ver autora de la revisin anterior genera un
informe de autora para el mismo fichero, pero utilizando la revisin anterior como lmite superior. Esto
le da el informe de autora para el estado del fichero justo antes de que la lnea que est viendo cambiara.
Men contextual Mostrar cambios inicia su visor de diferencias, mostrndole lo que cambi en
la revisin referenciada. Men contextual Mostrar registro le muestra el dilogo de registro de
revisiones empezando en la revisin referenciada.
Si necesita un indicador visual mejor de dnde estn los cambios ms antiguos y ms nuevos, seleccione
Ver Colorear la antigedad de las lneas. Esto utilizar un gradiente de color para mostrar las

109

Gua de uso diario

lneas ms nuevas en rojo y las ms antiguas en azul. La paleta de color por defecto es bastante suave,
pero puede cambiarla utilizando la configuracin de TortoiseBlame.
Si est utilizando Registro de fusiones, cuando las lneas hayan cambiado como resultado de una fusin
desde otra ruta, TortoiseBlame le mostrar la revisin y el autor del ltimo cambio en el fichero original,
en vez de la revisin en la que se realiz la revisin. Estas lneas se muestran con la revisin y el autor
en cursiva.
If you want to see the paths involved in the merge, select View Merge paths.
The settings for TortoiseBlame can be accessed using TortoiseSVN Settings... on the TortoiseBlame
tab. Refer to Seccin 5.29.8, Configuracin de TortoiseBlame.

5.22.2. Autora de las diferencias


Una de las limitaciones del informe de Autora es que slo muestra el fichero tal y como estaba en una
revisin en concreto, y muestra la ltima persona que cambi cada lnea. A veces querr saber qu cambio
se hizo, y tambin quin lo hizo. Lo que necesita aqu es una combinacin de los informes de diferencias
y autora.
El dilogo del historial de revisiones incluye varias opciones que le permiten hacerlo.
Autora de las revisiones
En el panel superior, seleccione dos revisiones, y luego seleccione Men Contextual Ver autora
de las revisiones. Esto obtendr los datos de autora de las dos revisiones, y luego utilizar el visor
de diferencias para comparar los dos ficheros de autora.
Ver la autora de los cambios
Select one revision in the top pane, then pick one file in the bottom pane and select Context menu
Blame changes. This will fetch the blame data for the selected revision and the previous revision,
then use the diff viewer to compare the two blame files.
Comparar y ver autora con la BASE de trabajo
Muestre el registro de un nico fichero, y en el panel superior, seleccione una nica revisin, y luego
seleccione Men contextual Comparar y ver autora con la BASE de trabajo. Esto obtendr
los datos de autora de la revisin seleccionada, y tambin del fichero en la BASE de trabajo, y
utilizar el visor de diferencias para comparar los dos ficheros de autora.

5.23. El navegador de repositorios


A veces necesitar trabajar directamente en el repositorio, sin tener una copia de trabajo. sa es la razn
por la que existe el Navegador de Repositorios. Igual que el Explorador y los iconos sobreimpresionados
le permiten ver su copia de trabajo, el navegador de repositorios le permite ver la estructura y el estado
del repositorio.

110

Gua de uso diario

Figura 5.45. El navegador de repositorios


Con el navegador de repositorios puede ejecutar comandos como copiar, mover, renombrar...
directamente en el repositorio.
El navegador de repositorios se parecer al explorador de Windows, excepto que est mostrando el
contenido del repositorio en una revisin concreta en vez de los ficheros de su ordenador. En el panel
izquierdo puede ver un rbol de directorios, y en el panel derecho estn los contenidos del directorio
seleccionado. En la parte superior de la ventana del visor de repositorios puede introducir la URL del
repositorio y la revisin que desea visualizar.
Al igual que el explorador de Windows, puede pulsar sobre los encabezados de las columnas en el panel
derecho si desea establecer la ordenacin. Y como en el explorador hay mens contextuales en ambos
paneles.
El men contextual para un fichero le permite:
Abrir el fichero seleccionado, bien con el visor por defecto para ese tipo de fichero, o bien con el
programa que elija.
Save an unversioned copy of the file to your hard drive.
Mostrar el registro de las revisiones para ese fichero, o mostrar un grfico de todas las revisiones para
que pueda ver de dnde vino el fichero.
Ver la autora del fichero, para saber quin cambi qu lnea y cundo.
Eliminar o renombrar el fichero.
Hacer una copia del fichero, bien a una parte diferente del repositorio, o bien a una copia de trabajo
includa dentro del mismo repositorio.
Ver/editar las propiedades del fichero.

111

Gua de uso diario

El men contextual para una carpeta le parmite:


Mostrar el registro de revisiones para la carpeta, o mostrar un grfico de todas las revisiones para que
pueda ver de dnde vino la carpeta.
Exportar la carpeta a una copia local no versionada de su disco duro.
Obtener la carpeta para producir una copia de trabajo local en su disco duro.
Create a new folder in the repository.
Add files or folders directly to the repository.
Borrar o eliminar la carpeta.
Hacer una copia de la carpeta, bien a una parte diferente del repositorio, o bien a una copia de trabajo
dentro del mismo repositorio.
Ver/Editar las propiedades de la carpeta.
Marcar la carpeta para comparacin. La carpeta marcada se mostrar en negrita.
Compare the folder with a previously marked folder, either as a unified diff, or as a list of changed
files which can then be visually diffed using the default diff tool. This can be particularly useful for
comparing two tags, or trunk and branch to see what changed.
If you select two folders in the right pane, you can view the differences either as a unified-diff, or as a
list of files which can be visually diffed using the default diff tool.
Si selecciona mltiples carpetas en el panel derecho, puede obtenerlos todos a la vez en una carpeta padre
comn.
Si selecciona dos etiquetas que se han copiado desde la misma raz (tipicamente, /trunk/), puede
utilizar Men Contextual Mostrar Registro... para ver la lista de revisiones entre los dos puntos
etiquetados.
You can use F5 to refresh the view as usual. This will refresh everything which is currently displayed.
If you want to pre-fetch or refresh the information for nodes which have not been opened yet, use CtrlF5. After that, expanding any node will happen instantly without a network delay while the information
is fetched.
You can also use the repository browser for drag-and-drop operations. If you drag a folder from explorer
into the repo-browser, it will be imported into the repository. Note that if you drag multiple items, they
will be imported in separate commits.
If you want to move an item within the repository, just left drag it to the new location. If you want to
create a copy rather than moving the item, Ctrl-left drag instead. When copying, the cursor has a plus
symbol on it, just as it does in Explorer.
If you want to copy/move a file or folder to another location and also give it a new name at the same time,
you can right drag or Ctrl-right drag the item instead of using left drag. In that case, a rename dialog is
shown where you can enter a new name for the file or folder.
Siempre que haga cambios en el repositorio utiizando uno de estos mtodos, se le presentar un dilogo
para introducir un mensaje de registro. Si ha arrastrado algo por error, esta es su oportunidad para cancelar
la accin.
Sometimes when you try to open a path you will get an error message in place of the item details. This
might happen if you specified an invalid URL, or if you don't have access permission, or if there is some
other server problem. If you need to copy this message to include it in an email, just right click on it and
use Context Menu Copy error message to clipboard, or simply use Ctrl+C.

112

Gua de uso diario

5.24. Grficos de revisin

Figura 5.46. Un grfico de revisiones


A veces necesita saber desde qu revisin del tronco se tomaron las ramas y las etiquetas, y la forma ideal
de ver este tipo de informacin es en un grfico o una estructura de rbol. Ah es cuando necesita utilizar
TortoiseSVN Grfico 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.

Importante
In order to generate the graph, TortoiseSVN must fetch all log messages from the repository
root. Needless to say this can take several minutes even with a repository of a few thousand
revisions, depending on server speed, network bandwidth, etc. If you try this with something
like the Apache project which currently has over 500,000 revisions you could be waiting
for some time.
La buena noticia es que si est utilizando Cach de registro, slo tendr que sufrir este
retraso una vez. Despus, la informacin de registro se maneja localmente. El cach de
registro se habilita desde la configuracin de TortoiseSVN.

5.24.1. Nodos del grfico de revisin


The revision graph shows several types of node:

113

Gua de uso diario

Fichero/carpeta aadida
Los tems que se han aadido, o se crearon copindolos de otros ficheros/carpetas se muestran
utilizando un rectngulo redondeado.
Fichero/carpeta eliminada
Los tems borrados, por ejemplo una rama que no se necesita ms, se muestran utilizando un octgono
(rectngulo con las esquinas cortadas).
Revisin punta de la rama
Where a branch (or trunk or tag) has been modified since the last branch node, this is shown using
an ellipse. Shown when the Show HEAD revisions option is selected.
Fichero/carpeta normal
Todos los dems tems se muestran utilizando un rectngulo normal.
El grfico de revisiones muestra varios tipos de nodos:
<placeholder-1></placeholder-1>
Tenga en cuenta que por defecto el grfico slo muestra los puntos en los que se aadieron o borraron
tems. Mostrar cada revisin de un proyecto podra generar un grfico enorme para los casos no triviales.
Si realmente desea ver todas las revisiones en las que se hicieron cambios, hay una opcin para hacerlo
en el men Ver y en la barra de herramientas.

5.24.2. Cambiando la vista


Dado que los grficos de revisiones son a menudo complejos, hay un nmero de funcionalidades que
pueden utilizarse para ajustar la vista a lo que desea obtener. Estas opciones estn disponibles en el men
Ver y en la barra de herramientas.
Agrupar ramas
El comportamiento por defecto (sin agrupaciones) utilizar una fila por revisin y todas las filas
estarn ordenadas estrictamente por revisin. Como resultado, las ramas con una larga vida ocupan
una columna completa slo para unos pocos cambios, y el grfico resulta muy ancho.
Este modo agrupa los cambios por ramas, de forma que no hay una ordenacin global por revisiones:
las revisiones consecutivas en una rama se mostrarn (a menudo) como lneas consecutivas. Las subramas, sin embargo, se colocarn de forma que las ramas ms nuevas se muestren encima de las
ramas ms antiguas para mantener el grfico ms delgado. Como resultado, una fila cualquier puede
contener cambios de diferentes revisiones.
Ms antiguo arriba
Normalmente el grfico muestra la revisin ms antigua abajo, y el rbol crece hacia arriba. Utilice
esta opcin para hacer crecer el rbol desde arriba.
Mostrar revisiones HEAD
Esto asegura que la ltima revisin de cada rama se muestra siempre en el grfico.
Orgenes de copia exactos
Cuando se crea una rama/etiqueta, el comportamiento por defecto es mostrar la rama como si se
hubiera tomado desde el ltimo nodo donde se hizo un cambio. Estrictamente esto no es preciso,
dado que las ramas generalmente se crean desde HEAD y no desde una revisin especfica. Por lo
que es posible mostrar la revisin ms correcta (pero menos til) que se utiliz para crear la copia.
Plegar etiquetas
Si quiere ver un grfico del desarrollo de software, las versiones etiquetadas pueden tener poco
interes. Esta opcin oculta los nodos para las etiquetas y las muestra en el texto de ayuda para el
nodo desde el que se crearon. Aparecer un icono de etiqueta en la parte derecha del nodo orgen
para indicar que se crearon etiquetas desde l.
Reducir lneas cruzadas
Si la disposicin del grfico ha producido muchas lneas que se cruzan, utilice esta opcin para
limpiarlo. Esto puede provocar que las columnas del formato aparezcan en sitios menos lgicos, por

114

Gua de uso diario

ejemplo en una lnea diagonal en vez de en una columna, y puede llevar un poco de tiempo optimizar
el grfico.
Filtro
A veces los grficos de revisin contienen ms revisiones de las que desea ver. Esta opcin abre
un dilogo que le permitir restringir el rango de revisiones mostrado, y ocultar rutas concretas por
su nombre.

5.24.3. Usando el grfico


Para hacer ms fcil la navegacin en un grfico grande, utilice la ventana sobreimpresionada. En ella se
muestra el grfico completo en una pequea ventana, con la parte que se muestra actualmente iluminada.
Puede arrastrar el rea iluminada para cambiar la regin que se muestra.
La fecha de la revisin, el autor y los comentarios se muestran en una caja de ayuda cuando se mueve
el ratn encima de una caja de revisin.
If you select two revisions (Use Ctrl-left click), you can use the context menu to show the differences
between these revisions. You can choose to show differences as at the branch creation points, but usually
you will want to show the differences at the branch end points, i.e. at the HEAD revision.
Puede ver las diferencias como un fichero de Diff Unificado, que le muestra todas las diferencias en
un fichero nico con contexto mnimo. 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.
Si hace click con el botn derecho en una revisin, puede utilizar Men Contextual Mostrar registro
para ver la historia.
Tambin puede fusionar cambios en la(s) revision(es) seleccionada(s) en una copia de trabajo distinta. Un
dilogo de seleccin de carpeta le permitir elegir la copia de trabajo donde desea fusionar, pero despus
de eso no hay dilogo de confirmacin, ni oportunidad de probar la fusin sin ejecutarla realmente. Es una
buena idea fusionar en una copia de trabajo sin cambios, y as poder revertir los cambios si no funcionan!
Esta es una funcionalidad til si desea fusionar las revisiones seleccionadas de una rama a otra.

Atencin
Dado que Subversion no puede proporcionar toda la informacin necesaria, se necesita una
cierta cantidad de interpretacin, que a veces puede dar resultados estraos. En cualquier
caso, la salida para el tronco generalmente da resultados tiles.

5.24.4. Refrescando la vista


Si desea comprobar el servidor de nuevo para obtener la informacin ms reciente, puede simplemente
refrescar la vista utilizando F5. Si est utilizando la cach de registro (habilitada por defecto), esto buscar
en el repositorio las confirmaciones ms recientes y traer slo las nuevas. Si la cach de registro estaba
en modo desconectado, esto intentar volver a ponerla en lnea.
Si est utilizando la cach de registros y cree que el contenido del mensaje o el autor han podido cambiar,
debera utilizar el dilogo de registro para refrescar los mensajes que necesita. Dado que el grfico de
revisiones trabaja desde la raz del repositorio, tendramos que invlidar la cach completa de registro, y
recargarla podra llevar muchsimo tiempo.

5.25. Exportando una copia de trabajo de Subversion


Sometimes you may want a copy of your working tree without any of those .svn directories, e.g.
to create a zipped tarball of your source, or to export to a web server. Instead of making a copy and

115

Gua de uso diario

then deleting all those .svn directories manually, TortoiseSVN offers the command TortoiseSVN
Export.... Exporting from a URL and exporting from a working copy are treated slightly differently.

Figura 5.47. The Export-from-URL Dialog


Si ejecuta este comando sobre una carpeta sin versionar, TortoiseSVN asumir que la carpeta de destino
es el objetivo, y abrir un dilogo para que introduzca la URL y la revisin desde la que desea realizar la
exportacin. Este dilogo tiene opciones para exportar slo la carpeta de ms alto nivel, para omitir las
referencias externas, y para obligar un estilo de fin de lnea concreto en aquellos ficheros que tuvieran
establecida la propiedad svn:eol-style.
Of course you can export directly from the repository too. Use the Repository Browser to navigate to the
relevant subtree in your repository, then use Context Menu Export. You will get the Export from
URL dialog described above.
If you execute this command on your working copy you'll be asked for a place to save the clean working
copy without the .svn folders. By default, only the versioned files are exported, but you can use the
Export unversioned files too checkbox to include any other unversioned files which exist in your WC
and not in the repository. External references using svn:externals can be omitted if required.
Another way to export from a working copy is to right drag the working copy folder to another location
and choose Context Menu SVN Export here or Context Menu SVN Export all here. The
second option includes the unversioned files as well.
When exporting from a working copy, if the target folder already contains a folder of the same name as
the one you are exporting, you will be given the option to overwrite the existing content, or to create a
new folder with an automatically generated name, eg. Target (1).

5.25.1. Removing a working copy from version control


A veces tiene una copia de trabajo que desea reconvertir en una carpeta normal sin los directorios .svn.
Lo que realmente necesita es un comando exportar-en-el-sitio, que simplemente elimine las carpetas de
control, en vez de generar un nuevo rbol limpio.

116

Gua de uso diario

La respuesta es sorprendentemente sencilla - exporte el rbol en si mismo! TortoiseSVN detecta este


caso especial y le pregunta si quiere convertir su copia de trabajo en no-versionada. Si responde s, los
directorios de control se eliminan y tendr un simple rbol sin directorios de control.

5.26. Relocalizando una copia de trabajo

Figura 5.48. El dilogo Relocalizar


If your repository has for some reason changed it's location (IP/URL). Maybe you're even stuck and can't
commit and you don't want to checkout your working copy again from the new location and to move all
your changed data back into the new working copy, TortoiseSVN Relocate is the command you are
looking for. It basically does very little: it scans all entries files in the .svn folder and changes the
URL of the entries to the new value.

Aviso
Esta es una operacin que se utiliza realmente poco. El comando relocalizar se utiliza slo
si la URL de la raiz del repositorio ha cambiado. Estas son algunas posibles razones:
La direccin IP del servidor ha cambiado.
El protocolo ha cambiado (por ejemplo, de http:// a https://).
La ruta raz del repositorio ha cambiado en la configuracin del servidor.
De otra forma, necesita relocalizar cuando su copia de trabajo se refiere al mismo lugar en
el mismo repositorio, pero es el propio repositorio el que se ha movido.
Esto no se aplica si:
Quiere moverse a un repositorio de Subversion diferente. En ese caso debera realizar
una obtencin limpia desde la nueva localizacin del repositorio.
Quiere cambiar a una rama o a un directorio diferente dentro del mismo repositorio.
Para hacer eso debera utilizar TortoiseSVN Cambiar.... Para ms informacin, lea
Seccin 5.18.2, Obtener o cambiar....
Si utiliza relocalizar en alguno de los casos anteriores, corromper su copia de trabajo y
obtendr muchos mensajes de error inexplicables cuando actualice, confirme, etc. Una vez
que sto ha ocurrido, el nico arreglo es hacer una obtencin limpia.

5.27. Integracin con sistemas de control de errores /


seguimiento de incidencias

117

Gua de uso diario

Es muy comn en el Desarrollo de Software que los cambios se refieran a un ID de error o incidencia
especfico. A los usuarios de los sistemas de control de errores (seguimiento de incidencias) les gustara
asociar los cambios que hacen en Subversion con un ID especfico en su programa de seguimiento de
incidencias. La mayora de programas de seguimiento de incidencias proporcionan un script gancho precommit que parsea el mensaje de log para encontrar el ID del error con el que se asocia la confirmacin.
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 aadirse una lnea bien definida incluyendo
el nmero de incidencia asociada a la confirmacin. Esto reduce el riesgo de que el usuario introduzca
el nmero 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.

5.27.1. Adding Issue Numbers to Log Messages


You can integrate a bug tracking tool of your choice in TortoiseSVN. To do this, you have to define some
properties, which start with bugtraq:. They must be set on Folders: (Seccin 5.17, Configuracin
del proyecto)
There are two ways to integrate TortoiseSVN with issue trackers. One is based on simple strings, the
other is based on regular expressions. The properties used by both approaches are:
bugtraq:url
Set this property to the URL of your bug tracking tool. It must be properly URI encoded and it
has to contain %BUGID%. %BUGID% is replaced with the Issue number you entered. This allows
TortoiseSVN to display a link in the log dialog, so when you are looking at the revision log you
can jump directly to your bug tracking tool. You do not have to provide this property, but then
TortoiseSVN shows only the issue number and not the link to it. e.g the TortoiseSVN project is using
http://issues.tortoisesvn.net/?do=details&id=%BUGID%
You can also use relative URLs instead of absolute ones. This is useful when your issue tracker is on
the same domain/server as your source repository. In case the domain name ever changes, you don't
have to adjust the bugtraq:url property. There are two ways to specify a relative URL:
Si empieza con la cadena ^/ se asume que es relativa a la raz del repositorio. Por ejemplo,
^/../?do=details&id=%BUGID% se resolver como http://tortoisesvn.net/?
do=details&id=%BUGID% si su repositorio est en http://tortoisesvn.net/svn/
trunk/.
Una URL que comience con la cadena / se asume que es relativo al nombre del servidor. Por
ejemplo, /?do=details&id=%BUGID% se resolver como http://tortoisesvn.net/?
do=details&id=%BUGID% si su repositorio est localizado en cualquier parte de http://
tortoisesvn.net.
bugtraq:warnifnoissue
Set this to true, if you want TortoiseSVN to warn you because of an empty issue-number text field.
Valid values are true/false. If not defined, false is assumed.

5.27.1.1. Issue Number in Text Box


En el caso simple, TortoiseSVN muestra al usuario un campo de entrada separado donde se puede
introducir un ID del error. En ese caso se aade una lnea adicional al final o al principio del mensaje
de registro que el usuario introduce.

118

Gua de uso diario

bugtraq:message
This property activates the bug tracking system in Input field mode. If this property is set, then
TortoiseSVN will prompt you to enter an issue number when you commit your changes. It's used
to add a line at the end of the log message. It must contain %BUGID%, which is replaced with the
issue number on commit. This ensures that your commit log contains a reference to the issue number
which is always in a consistent format and can be parsed by your bug tracking tool to associate the
issue number with a particular commit. As an example you might use Issue : %BUGID%, but
this depends on your Tool.
bugtraq:append
Esta propiedad define si el ID del error se aade (true) al final del mensaje de registro o se inserta
(false) al inicio del mensaje de registro. Los valores vlidos son true/false. Si no se define, se
asume true, para que los proyectos ya existentes no se rompan.
bugtraq:label
This text is shown by TortoiseSVN on the commit dialog to label the edit box where you enter the
issue number. If it's not set, Bug-ID / Issue-Nr: will be displayed. Keep in mind though that
the window will not be resized to fit this label, so keep the size of the label below 20-25 characters.
bugtraq:number
If set to true only numbers are allowed in the issue-number text field. An exception is the comma,
so you can comma separate several numbers. Valid values are true/false. If not defined, true
is assumed.

5.27.1.2. Issue Numbers Using Regular Expressions


In the approach with regular expressions, TortoiseSVN doesn't show a separate input field but marks the
part of the log message the user enters which is recognized by the issue tracker. This is done while the
user writes the log message. This also means that the bug ID can be anywhere inside a log message! This
method is much more flexible, and is the one used by the TortoiseSVN project itself.
bugtraq:logregex
This property activates the bug tracking system in Regex mode. It contains either a single regular
expressions, or two regular expressions separated by a newline.
Si se dan dos expresiones, la primera expresin se utiliza como un pre-filtro para encontrar
expresiones que contengan identificadores de incidencias. La segunda expresin se utiliza para
extraer los identificadores individuales desde los resultados de la primera expresin regular. Esto
le permite utilizar una lista de identificadores de incidencias y expresiones en lenguaje natural si lo
desea, por ejemplo puede arreglar varias incidencias e incluir una cadena como esta: Este cambio
resuelve las incidencias #23, #24 y #25
Si desea capturar identificadores de incidencias utilizados como se muestran anteriormente dentro de
un mensaje de registro, puede utilizar las siguientes cadenas de expresiones regulares, que son las que
se utilizan en el proyecto TortoiseSVN (traducidas al ingls): [Ii]ncidencias?:?(\s*(,|
y)?\s*#\d+)+ y (\d+)
La primera expresin extrae incidencias #23, #24 y #25 de entre el resto del mensaje de registro.
La segunda expresin regular extrae los nmeros decimales individuales desde la salida de la primera
expresin regular, por lo que devolver 23, 24 y 25 para utilizarlos como identificadores de
incidencias.
Profundizando en la primera expresin regular un poco, debe empezar con la palabra incidencia,
posiblemente empezando por mayscula. Opcionalmente puede ir seguida de una s (ms de una
incidencia) y opcionalmente dos puntos. A esto le sigue uno o ms grupos, cada uno empezando por
cero o ms espacios en blanco, una coma opcional o y y ms espacios opcionales. Finalmente, hay
un # obligatorio y un nmero decimal obligatorio.
Si slo se establece una expresin, entonces los identificadores individuales de incidencias deben
concordar con los grupos de la expresin regular. Por ejemplo: [Ii]ncidencia(?:s)? #?(\d

119

Gua de uso diario

+) Este mtodo se necesita por algunos gestores de incidencias, por ejemplo trac, pero la expresin
regular es ms dificil de construir. Le recomendamos que slo utilice este mtodo si la documentacin
de su gestor de incidencias se lo indica.
If you are unfamiliar with regular expressions, take a look at the introduction at http://
en.wikipedia.org/wiki/Regular_expression, and the online documentation and tutorial at http://
www.regular-expressions.info/.
Si se establecen las dos propiedades bugtraq:message y bugtraq:logregex, logregex tiene
preferencia.

Sugerencia
Incluso si no tiene un programa de seguimiento de incidencias con un gancho pre-commit
parseando sus mensajes de log, puede seguir utilizando sto para convertir las incidencias
mencionadas en su mensajes de registro en vnculos!
And even if you don't need the links, the issue numbers show up as a separate column in
the log dialog, making it easier to find the changes which relate to a particular issue.
Some tsvn: properties require a true/false value. TortoiseSVN also understands yes as a
synonym for true and no as a synonym for false.

Estableciendo las propiedades en las carpetas


These properties must be set on folders for the system to work. When you commit a file
or folder the properties are read from that folder. If the properties are not found there,
TortoiseSVN will search upwards through the folder tree to find them until it comes to an
unversioned folder, or the tree root (eg. C:\) is found. If you can be sure that each user
checks out only from e.g trunk/ and not some sub-folder, then it's enough if you set the
properties on trunk/. If you can't be sure, you should set the properties recursively on
each sub-folder. A property setting deeper in the project hierarchy overrides settings on
higher levels (closer to trunk/).
For tsvn: properties only you can use the Recursive checkbox to set the property to all
sub-folders in the hierarchy, without also setting it on all files.
This issue tracker integration is not restricted to TortoiseSVN; it can be used with any Subversion client.
For more information, read the full Issue Tracker Integration Specification [http://tortoisesvn.tigris.org/
svn/tortoisesvn/trunk/doc/issuetrackers.txt].

5.27.2. Getting Information from the Issue Tracker


The previous section deals with adding issue information to the log messages. But what if you need to
get information from the issue tracker? The commit dialog has a Windows COM interface which allows
integration an external program that can talk to your tracker. Typically you might want to query the
tracker to get a list of open issues assigned to you, so that you can pick the issues that are being addressed
in this commit.
Any such interface is of course highly specific to your system, so we cannot provide this part, and
describing how to create such a program is beyond the scope of this manual. The interface definition and
sample programs can be obtained from the contrib folder in the in the TortoiseSVN repository [http://
tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/issue-tracker-plugins].
For illustration purposes, let's suppose that your system administrator has provided you with an issue
tracker plugin which you have installed, and that you have set up some of your working copies to use
the plugin in TortoiseSVN's settings dialog. When you open the commit dialog from a working copy to
which the plugin has been assigned, you will see a new button at the top of the dialog.

120

Gua de uso diario

Figura 5.49. Example issue tracker query dialog


In this example you can select one or more open issues. The plugin can then generate specially formatted
text which it adds to your log message.

5.28. Integracin con visores de repositorios basados en web


Hay varios visores de repositorios basados en web disponibles para utilizarlos con Subversion
como ViewVC [http://www.viewvc.org/] y WebSVN [http://websvn.tigris.org/]. TortoiseSVN dispone de
medios para enlazarse con estos visores.
You can integrate a repo viewer of your choice in TortoiseSVN. To do this, you have to define some
properties which define the linkage. They must be set on Folders: (Seccin 5.17, Configuracin del
proyecto)
webviewer:revision
Set this property to the URL of your repo viewer to view all changes in a specific revision. It must
be properly URI encoded and it has to contain %REVISION%. %REVISION% is replaced with the
revision number in question. This allows TortoiseSVN to display a context menu entry in the log
dialog Context Menu View revision in webviewer
webviewer:pathrevision
Set this property to the URL of your repo viewer to view changes to a specific file in a specific
revision. It must be properly URI encoded and it has to contain %REVISION% and %PATH%. %PATH
% is replaced with the path relative to the repository root. This allows TortoiseSVN to display a

121

Gua de uso diario

context menu entry in the log dialog Context Menu View revision and path in webviewer For
example, if you right-click in the log dialog bottom pane on a file entry /trunk/src/file then
the %PATH% in the URL will be replaced with /trunk/src/file.
Tambin puede utilizar URLs relativas en vez de absolutas. Esto es til en caso de que su control
de incidencias est en el mismo dominio/servidor que su repositorio. En caso de que el nombre
de dominio cambie alguna vez, no tendr que ajustar las propiedades webviewer:revision y
webviewer:pathrevision. El formato es el mismo que el de la propiedad bugtraq:url. Vea
Seccin 5.27, Integracin con sistemas de control de errores / seguimiento de incidencias.

Estableciendo las propiedades en las carpetas


These properties must be set on folders for the system to work. When you commit a file
or folder the properties are read from that folder. If the properties are not found there,
TortoiseSVN will search upwards through the folder tree to find them until it comes to an
unversioned folder, or the tree root (eg. C:\) is found. If you can be sure that each user
checks out only from e.g trunk/ and not some sub-folder, then it's enough if you set the
properties on trunk/. If you can't be sure, you should set the properties recursively on
each sub-folder. A property setting deeper in the project hierarchy overrides settings on
higher levels (closer to trunk/).
For tsvn: properties only you can use the Recursive checkbox to set the property to all
sub-folders in the hierarchy, without also setting it on all files.

5.29. Configuracin de TortoiseSVN


Para averiguar para qu sirven cada una de las diferentes opciones, deje el puntero del ratn un segundo
sobre el cuadro de texto/casilla... y aparecer un til texto de ayuda.

5.29.1. Configuracin general

Figura 5.50. El dilogo de Configuracin, pgina General

122

Gua de uso diario

Este dilogo le permite especificar su idioma preferido, y las configuraciones especficas de Subversion.
Idioma
Selecciona el idioma del interfaz de usuario. Qu otra cosa esperabas?
Comprobar automticamente si hay nuevas versiones todas las semanas
Si se marca, TortoiseSVN contactar su sitio de descarga una vez a la semana para ver si hay
disponible una versin ms reciente del programa. Utilice el botn Comprobar ahora si desea una
respuesta inmediata. No se descargar la versin ms reciente; simplemente recibir un dilogo de
informacin dicindole que hay una versin nueva disponible.
Sonidos del sistema
TortoiseSVN tiene tres sonidos personalizados que se instalan por defecto.
Error
Informacin
Atencin
Puede seleccionar sonidos diferentes (o quitarlos completamente) utilizando el Panel de Control de
Windows. Configurar es un acceso directo al Panel de Control.
Patrn global de ignorar

Global ignore patterns are used to prevent unversioned files from showing up e.g. in the commit
dialog. Files matching the patterns are also ignored by an import. Ignore files or directories by typing
in the names or extensions. Patterns are separated by spaces e.g. */bin */obj *.bak *.~??
*.jar *.[Tt]mp. Remember that these patterns may be used against paths which include N
levels of parent directory. Setting ignore patterns for anything other than simple file extensions is
not as trivial as it first appears, so be sure to read Seccin 5.13.1, Pattern Matching in Ignore Lists
for more information on the pattern-matching syntax, and how paths are checked.
Tenga en cuenta que los patrones de ignorar que especifique aqu tambin afectarn a otros clientes
de Subversion que se ejecuten en su PC, incluyendo el cliente de lnea de comandos.

Atencin
Si utiliza el fichero de configuracin de Subversion para establecer un patrn
global-ignores, prevalecer sobre las configuraciones que haga aqu. El fichero
de configuracin de Subversion se accede utilizando Editar como se describe a
continuacin.
Este patrn de ignorar afectar a todos sus proyectos. No se versiona, por lo que no afectar a
otros usuarios. En el lado opuesto, puede utilizar tambin la propiedad versionada svn:ignore
para excluir ficheros o directorios del control de versiones. Para ms informacin, lea Seccin 5.13,
Ignorando ficheros y directorios.
Set file dates to the last commit time
This option tells TortoiseSVN to set the file dates to the last commit time when doing a checkout
or an update. Otherwise TortoiseSVN will use the current date. If you are developing software it
is generally best to use the current date because build systems normally look at the date stamps to
decide which files need compiling. If you use last commit time and revert to an older file revision,
your project may not compile as you expect it to.
Fichero de configuracin de Subversion
Use Edit to edit the Subversion configuration file directly. Some settings cannot
be modified directly by TortoiseSVN, and need to be set here instead. For more

123

Gua de uso diario

information about the Subversion config file see the Runtime Configuration Area [http://
svnbook.red-bean.com/en/1.4/svn.advanced.confarea.html]. The section on Automatic Property
Setting [http://svnbook.red-bean.com/en/1.4/svn.advanced.props.html#svn.advanced.props.auto] is
of particular interest, and that is configured here. Note that Subversion can read
configuration information from several places, and you need to know which one takes
priority. Refer to Configuration and the Windows Registry [http://svnbook.red-bean.com/en/1.4/
svn.advanced.confarea.html#svn.advanced.confarea.windows-registry] to find out more.
Use _svn instead of .svn directories
VS.NET cuando se utiliza con proyectos web no puede manejar las carpetas .svn que Subversion
utiliza para almacenar su informacin interna. Esto no es un error de Subversion. El error est en
VS.NET y las extensiones de Frontpage que utiliza. Lea Seccin 5.29.10, Carpetas de trabajo de
Subversion para averiguar ms sobre este problema.
Si desea cambiar el comportamiento de Subversion y TortoiseSVN, puede utilizar esta casilla para
establecer la variable de entorno que lo controla.
Debera tener en cuenta que cambiar esta opcin no convertir automticamente sus copias de trabajo
para que usen ese nuevo directorio administrativo. Deber hacerlo utilizando un script (vea nuestro
FAQ) o simplemente obteniendo una copia de trabajo nueva.

5.29.1.1. Configuracin del men contextual

Figura 5.51. El dilogo Configuracin, pgina de Men contextual


Esta pgina le permite especificar qu entradas del men contextual de TortoiseSVN se mostrarn en el
men contextual principal, y cuales aparecern en el submen TortoiseSVN. Por defecto, la mayora de
los tems estn desmarcados y aparecen en el submen.
Hay un caso especial para Obtener bloqueo. Por supuesto puede promocionarlo al nivel superior
utilizando la lista anterior, pero como la mayora de ficheros no necesitan bloqueos esto molestara. Sin
embargo, un fichero con la propiedad svn:needs-lock necesita esta accin cada vez que se modifica,
por lo que en ese caso sera til tener la opcin en el nivel superior. Activando esta casilla hace que cuando
se selecciona un fichero que tenga establecida la propiedad svn:needs-lock, Obtener bloqueo se
mostrar siempre en el nivel superior.

124

Gua de uso diario

5.29.1.2. Configuracin de dilogos de TortoiseSVN 1

Figura 5.52. El dilogo Configuracin, pgina de Dilogos 1


Este dilogo le permite configurar a su gusto algunos de los dilogos de TortoiseSVN.
Nmero por defecto de mensajes de registro
Limits the number of log messages that TortoiseSVN fetches when you first select TortoiseSVN
Show Log Useful for slow server connections. You can always use Show All or Next 100 to
get more messages.
Fuente para los mensajes de registro
Selecciona la fuente y el tamao de la letra que se utiliza para mostrar el propio mensaje de registro
en el panel del medio del dilogo Registro de Revisiones, y cuando se componen los mensajes de
registro en el dilogo Confirmar.
Formato abreviado de fecha/hora en los mensajes de registro
Si los mensajes estndar largos toman mucho espacio en la pantalla utilice la forma corta.
Dilogo de progreso
TortoiseSVN puede cerrar automticamente todos los dilogos de progreso cuando la accin se
termina sin error. Esta configuracin le permite seleccionar las condiciones para el cierre de dilogos.
La configuracin por defecto (recomendada) es Cerrar manualmente que le permite 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 dilogo se cierre automticamente si no hay cambios crticos.
Auto-cerrar si no hay fusiones, adiciones o eliminaciones significa que el dilogo de progreso
se cerrar si ha habido actualizaciones simples, pero si algn cambio del repositorio se ha fusionado
con los suyos, o si se aadi o borr algn fichero, el dilogo seguir abierto. Tambin seguir abierto
si hubo algn conflicto o error durante la operacin.
Auto-cerrar si no hay fusiones, adiciones o eliminaciones para operaciones locales significa
que el dilogo de progreso se cerrar igual que para Auto-cerrar si no hay fusiones, adiciones
o eliminaciones, pero slo para operaciones locales como aadir ficheros o revertir cambios. Para
las operaciones remotas el dilogo seguir abierto.

125

Gua de uso diario

Auto-cerrar si no hay conflictos relaja el criterio y cerrar el dilogo incluso si ha habido fusiones,
adiciones o borrados. Sin embargo, si hay algn conflicto o error, el dilogo continuar abierto.
Auto-cerrar si no hay errores siempre cierra el dilogo, incluso si hay conflictos. La nica
condicin que deja el dilogo abierto es una condicin de error, que ocurre cuando Subversion no
puede terminar una tarea. Por ejemplo, una actualizacin falla si el servidor es inaccesible, o una
confirmacin falla cuando la copia de trabajo no est actualizada.
Use URL of WC as the default From: URL
En el dilogo de fusin, el comportamiento por defecto es que la URL Desde: se mantenga entre
fusiones. Sin embargo, algunas personas quieren realizar fusiones desde diferentes puntos en su
jerarqua, y les resulta ms cmodo empezar con la URl de la copia de trabajo actual. Esto puede
luego cambiarse para referirse a una ruta paralela en otra rama.
Ruta de obtencin por defecto
Puede especificar la ruta por defecto para las obtenciones. Si mantiene todas sus obtenciones en un
mismo lugar, es til tener la unidad y la carpeta pre-rellenados para que as slo tenga que aadir
el nombre de la nueva carpeta al final.
URL de obtencin por defecto
Tambin puede especificar la URL por defecto para las obtenciones. Si obtiene a menudo
subprojectos de un projecto muy grante, puede ser til tener la URL pre-rellenada de forma que slo
tenga que aadir el nombre del subprojecto al final.

5.29.1.3. Configuracin de dilogos de TortoiseSVN 2

Figura 5.53. El dilogo Configuracin, pgina de Dilogos 2


Recursividad en carpetas no versionadas
Si se marca esta casilla (por defecto est marcada), entonces siempre que se muestre el estado de
una carpeta sin versionar en los dilogos de Aadir, Confirmar o Comprobar Modificaciones, se
muestran tambin sus ficheros y carpetas hijos. Si desmarca esta casilla, slo se muestra la carpeta
padre sin versionar, lo que reduce el desorden en esos dilogos. En ese caso, si selecciona una carpeta
sin versionar para Aadir, se aadir recursivamente.

126

Gua de uso diario

Use auto-completion of file paths and keywords


The commit dialog includes a facility to parse the list of filenames being committed. When you type
the first 3 letters of an item in the list, the auto-completion box pops up, and you can press Enter to
complete the filename. Check the box to enable this feature.
Timeout in seconds to stop the auto-completion parsing
The auto-completion parser can be quite slow if there are a lot of large files to check. This timeout
stops the commit dialog being held up for too long. If you are missing important auto-completion
information, you can extend the timeout.
Only use spellchecker when tsvn:projectlanguage is set
Si no desea utilizar el corrector ortogrfico para todas las confirmaciones, marque esta casilla. Aun
as, el corrector ortogrfico se activar cuando las propiedades del proyecto as lo indiquen.
Nmero mximo de tems para mantener en el historial de mensajes de registro.
TortoiseSVN almacena los ltimos 25 mensajes de registro que haya introducido para cada
repositorio. Aqu puede parametrizar la cantidad. Si tiene muchos repositorios diferentes, puede
querer reducirlo para evitar llenar su registro.
Re-open commit and branch/tag dialog after a commit failed
Cuando una confirmacin falla por alguna razn (la copia de trabajo necesita actualizarse, un gancho
pre-confirmacin rechaza la confirmacin, error de red, etc), puede seleccionar esta opcin para
mantener el dilogo de confirmacin abierto y listo para intentarlo de nuevo. Sin embargo, debe tener
en cuenta de que estoy puede provocar problemas. Si el fallo significa que debe actualizar su copia
de trabajo, y esa actualizacin conlleva conflictos, deber resolver esos conflictos primero.
Select items automatically
El comportamiento normal en el dilogo de confirmacin es que todos los tems (versionados)
modificados se seleccionen automticamente para la confirmacin. Si prefiere empezar sin nada
seleccionado y seleccionar los ficheros para la confirmacin manualmente, desmarque esta casilla.
Contactar con el repositorio al iniciar
El dilogo Comprobar Modificaciones comprueba la copia de trabajo por defecto, y slo contacta
con el repositorio cuando pulse el botn Comprobar repositorio. Si siempre quiere comprobar el
repositorios, puede utilizar esta opcin para que esa accin siempre ocurra automticamente.
Mostrar el dilogo Bloquear antes de bloquear ficheros
Cuando selecciona uno o ms ficheros y utiliza TortoiseSVN Bloquear para obtener un bloqueo
en esos ficheros, en algunos projectos es costumbre escribir un mensaje de bloqueo explicando por
qu ha bloqueado esos ficheros. Si no utiliza mensajes de bloqueo, puede desmarcar esta casilla para
saltar este dilogo y bloquear los ficheros inmediatamente.
Si utiliza el comando bloquear en una carpeta, siempre se le mostrar el dilogo de bloqueo ya que
tambin le ofrece la posibilidad de seleccionar qu ficheros bloquear.
Si su proyecto utiliza la propiedad tsvn:lockmsgminsize, ver el dilogo de bloqueo sin tener
en cuenta esta opcin ya que el proyecto necesita mensajes de bloqueo.

127

Gua de uso diario

5.29.1.4. Configuracin de colores de TortoiseSVN

Figura 5.54. El dilogo Configuracin, pgina de Colores


Este dilogo le permite configurar a su gusto los colores de los textos utilizados en los dilogos de
TortoiseSVN.
Conflicto posible o real / obstrudo
Ha ocurrido un conflicto durante la actualizacin, o puede ocurrir durante la fusin. La actualizacin
est obstruida por una carpeta o un fichero sin versionar que ya existe en su copia de trabajo, y tiene
el mismo nombre que uno versionado.
Este color se utiliza tambin para los mensajes de error en los dilogos de progreso.
Ficheros aadidos
tems aadidos al repositorio.
Faltante / borrado / reemplazado
tems borrados del repositorio, faltantes en la copia de trabajo, o borrados de la copia de trabajo y
reemplazados con otro fichero del mismo nombre.
Fusionado
Cambios del repositorio que se han fusionado satisfactoriamente con su copia de trabajo sin crear
ningn conflicto.
Modificado / copiado
Aadido con historia, o rutas copiadas en el repositorio. Tambin se utiliza en el dilogo de registro
para las entradas que incluyen tems copiados.
Nodo eliminado
Un tem que ha sido eliminado del repositorio.
Nodo aadido
Un tem que ha sido aadido al repositorio, mediante una operacin aadir, copiar o mover.
Nodo renombrado
Un tem que ha sido renombrado dentro del repositorio.

128

Gua de uso diario

Nodo reemplazado
El tem original ha sido borrado y un nuevo tem con el mismo nombre le reemplaza.

5.29.2. Configuracin de los iconos sobreimpresionados

Figura 5.55. El dilogo Configuracin, pgina de Sobreimpresin de iconos


This page allows you to choose the items for which TortoiseSVN will display icon overlays.
By default, overlay icons and context menus will appear in all open/save dialogs as well as in Windows
Explorer. If you want them to appear only in Windows Explorer, check the Show overlays and context
menu only in explorer box.
Los tems ignorados y no versionados normalmente no tienen una sobreimpresin. Si desea mostrar una
sobreimpresin en estos casos, simplemente marque las casillas.
You can also choose to mark folders as modified if they contain unversioned items. This could be useful
for reminding you that you have created new files which are not yet versioned. This option is only
available when you use the default status cache option (see below).
Since it takes quite a while to fetch the status of a working copy, TortoiseSVN uses a cache to store the
status so the explorer doesn't get hogged too much when showing the overlays. You can choose which
type of cache TortoiseSVN should use according to your system and working copy size here:
Por defecto
Caches all status information in a separate process (TSVNCache.exe). That process watches all
drives for changes and fetches the status again if files inside a working copy get modified. The process
runs with the least possible priority so other programs don't get hogged because of it. That also means
that the status information is not real time but it can take a few seconds for the overlays to change.
Advantage: the overlays show the status recursively, i.e. if a file deep inside a working copy is
modified, all folders up to the working copy root will also show the modified overlay. And since the
process can send notifications to the shell, the overlays on the left tree view usually change too.
Desventaja: el proceso se ejecuta constantemente, incluso si no est trabajando en sus proyectos.
Adems utiliza alrededor de 10-50 MB de RAM dependiendo del nmero y tamao de sus copias
de trabajo.

129

Gua de uso diario

Shell
El cacheo se realiza directamente dentro de la dll de la extensin del shell, pero slo para la carpeta
actualmente visible. Cada vez que navega a otra carpeta, se obtiene de nuevo la informacin de
estado.
Advantage: needs only very little memory (around 1 MB of RAM) and can show the status in real
time.
Desventaja: Dado que slo se hace cach de una carpeta, las sobreimpresiones no muestran el estado
recursivamente. Para copias de trabajo grandes, mostrar una carpeta en el explorador puede llevar
ms tiempo que con la cach por defecto. Adems, la columna tipo-mime no est disponible.
Ninguno
Con esta configuracin, TortoiseSVN no obtiene ningn estado en el Explorador. Por esa causa,
los ficheros no tendrn sobreimpresiones y las carpetas slo tendrn una sobreimpresin 'normal' si
estn versionadas. No se mostrar ninguna otra sobreimpresin, y tampoco estarn disponibles las
columnas extra.
Ventaja: no utiliza memoria adicional en absoluto y no ralentiza de ninguna forma el Explorador
mientras se navega.
Disadvantage: Status information of files and folders is not shown in Explorer. To see if your working
copies are modified, you have to use the Check for modifications dialog.
The next group allows you to select which classes of storage should show overlays. By default, only hard
drives are selected. You can even disable all icon overlays, but where's the fun in that?
Las unidades de red pueden ser muy lentas, as que por defecto no se muestran los iconos para las copias
de trabajo que se encuentren en unidades de red.
Las unidades USB Flash parecen ser un caso especial en el que el tipo de unidad lo identifica el propio
dispositivo. Algunas aparecen como discos duros, y otros como discos extrables.
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 libreras que no cambian en absoluto y por tanto no necesitan las sobreimpresiones. Por
ejemplo:
f:\desarrollo\SVN\Subversion desabilitar las sobreimpresiones slo en esa ruta concreta.
Todava 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 ningn fichero y carpetas debajo de esa ruta.
Lo mismo se aplica a Incluir rutas. Excepto que para esas rutas las sobreimpresiones se muestran incluso
si estn deshabilitadas para ese tipo de unidad en concreto, o por una ruta de exclusin especificada ms
arriba.
Los usuarios a veces preguntan cmo funcionan estas tres configuraciones, y la respuesta definitiva es:

si (la ruta est en la lista de inclusin)


mostrar sobreimpresiones
si (la ruta est en un tipo de unidad permitido) Y (la ruta no est en la lista de
mostrar sobreimpresiones
La lista de includos siempre hace que las sobreimpresiones se muestren. En otro caso, las
sobreimpresiones se muestran para todos los tipos de unidad marcados excepto si la ruta se ha excluido.
TSVNCache.exe tambin utiliza estas rutas para restringir su escaneo. Si desea que slo mire
en determinadas carpetas, deshabilite todos los tipos de unidades e incluya slo las carpetas que
especficamente quiere que sean escaneadas.

130

Gua de uso diario

Excluir unidades SUBST


A menudo es conveniente utilizar una unidad SUBST para acceder a sus copias de trabajo,
por ejemplo utilizando el comando

subst T: C:\TortoiseSVN\trunk\doc
Sin embargo esto puede ocasionar que las sobreimpresiones no se actualicen, ya
que TSVNCache slo recibir una notificacin cuando cambie un fichero, y eso es
normalmente para la ruta original. Esto significa que sus sobreimpresiones sobre rutas
subst puede que nunca se actualicen.
Una forma fcil de evitar esto es excluir de las sobreimpresiones la ruta original, de forma
que las sobreimpresiones aparezcan ahora en la ruta subst.
A veces excluir areas que contienen copias de trabajo, lo que evita que TSVNCache las escanee y
monitorice los cambios, pero an querr una indicacin visual de que dichas carpetas estn versionadas.
La casilla Mostrar carpetas excluidas como normales le permite hacer esto. Con esta opcin, las
carpetas versionadas en cualquier rea excluda (tipo de unidad no marcada, o excluda explcitamente)
se mostrarn como normal y como actualizadas, con una marca verde. Esto le recuerda que est viendo
una copia de trabajo, incluso aunque las sobreimpresiones de las carpetas no sean correctas. Los ficheros
no tendrn ninguna sobreimpresin. Tenga en cuenta que los mens contextuales seguirn funcionando,
incluso aunque las sobreimpresiones no se muestren.
Como una excepcin especial a esto, las unidades A: y B: nunca se consideran para la opcin Mostrar
carpetas excluidas como normales. El motivo es que Windows se ve obligado a mirar en la unidad,
lo que puede resultar en un retraso de varios segundos cuando se inicia el Explorador, incluso si su PC
no tiene una unidad de disquete.

5.29.2.1. Seleccin del conjunto de iconos

Figura 5.56. El dilogo Configuracin, pgina de Conjunto de iconos

131

Gua de uso diario

Tambin puede cambiar el conjunto de iconos de sobreimpresin al que ms le guste. Tenga en cuenta
que si cambia el conjunto de sobreimpresiones, puede tener que reiniciar su ordenador para que estos
cambios surtan efecto.

5.29.3. Configuracin de red

Figura 5.57. El dilogo Configuracin, pgina de Red


Aqu puede configurar su servidor proxy, si necesita uno para atravesar el cortafuegos de su compaa.
If you need to set up per-repository proxy settings, you will need to use the Subversion servers file to
configure this. Use Edit to get there directly. Consult the Runtime Configuration Area [http://svnbook.redbean.com/en/1.4/svn.advanced.confarea.html] for details on how to use this file.
Tambin puede especificar qu programa debe utilizar TortoiseSVN para establecer una conexin segura
a un repositorio svn+ssh. Le recomendamos que utilice TortoisePlink.exe. sta es una versin del popular
programa Plink, y se incluye con TortoiseSVN, pero est compilado como una aplicacin sin ventanas,
por lo que no ver una ventana DOS molestando cada vez que se autentifica.
Debe especificar la ruta completa al ejecutable. En el caso de TortoisePlink.exe, esta es la carpeta bin
estndar de TortoiseSVN. Utilice el botn Explorar para ayudarle a encontrarla.
Un efecto colateral de no tener una ventana es que no hay sitio para que vayan los mensajes de error,
por lo que si la autentificacin falla smplemente obtendr un mensaje diciendo algo como Unable to
write to standard output (No se puede escribir en la salida estndar). Por esta razn le recomendamos
que primero pruebe su configuracin con el Plink estndar. Cuando todo funcione, puede utilizar
TortoisePlink con exctamente los mismos parmetros.
TortoisePlink no tiene ninguna documentacin propia porque es una variante menor de Plink. Averigue
los parmetros de lnea de comando desde el sitio web de PuTTY [http://www.chiark.greenend.org.uk/
~sgtatham/putty/]
Para evitar ser preguntado por una contrasea repetidamente, puede considerar utilizar una herramienta
de cach de contraseas como Pageant. Tambin est disponible desde el sitio web de PuTTY.

132

Gua de uso diario

Finalmente, configurar SSH en el servidor y los clientes en un proceso no-trivial que est fuera del alcance
de este fichero de ayuda. Sin embargo, puede encontrar una gua en el FAQ de TortoiseSVN mostrado
como Subversion/TortoiseSVN SSH How-To [http://tortoisesvn.net/ssh_howto].

5.29.4. Configuracin de programas externos

Figura 5.58. El dilogo Configuracin, pgina de Visor de diferencias


Aqu puede definir sus propios programas de diferencias/fusin que TortoiseSVN debera utilizar. La
configuracin bsica es utilizar TortoiseMerge que se instala junto con TortoiseSVN.
En Seccin 5.10.5, Herramientas externas de diferencias/fusin encontrar una lista de algunos de los
programas externos de diferencias / fusin que la gente est utilizando con TortoiseSVN.

5.29.4.1. 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 lnea de comando, junto con otras
opciones de la lnea de comandos. TortoiseSVN usa sustitucin de parmetros con prefijo %. Cuando se
encuentra uno de estos se sustituir por el valor apropiado. El orden de los parmetros depender del
programa de Diferencias que utilice.
%base
El fichero original sin sus cambios
%bname
La ventana de ttulo para el fichero base
%mine
Su propio fichero, con sus cambios
%yname
El ttulo de la ventana para su fichero
Los ttulos de las ventanas no son nombres de ficheros puros. TortoiseSVN lo trata como un nombre para
mostrar y crea los nombres segn eso. Por ejemplo, si est haciendo diferencias entre un fichero en la
revisin 123 y un fichero en su copia de trabajo, los nombres pueden ser nombre-de-fichero :
revision 123 y nombre-de-fichero : copia de trabajo

133

Gua de uso diario

For example, with ExamDiff Pro:


C:\Path-To\ExamDiff.exe %base %mine
or with KDiff3:
C:\Path-To\kdiff3.exe %base %mine --L1 %bname --L2 %yname
or with WinMerge:
C:\Path-To\WinMerge.exe -e -ub -dl %bname -dr %yname %base %mine
or with Araxis:
C:\Path-To\compare.exe /max /wait /title1:%bname /title2:%yname
%base %mine
If you use the svn:keywords property to expand keywords, and in particular the revision of a file, then
there may be a difference between files which is purely due to the current value of the keyword. Also if
you use svn:eol-style = native the BASE file will have pure LF line endings whereas your file
will have CR-LF line endings. TortoiseSVN will normally hide these differences automatically by first
parsing the BASE file to expand keywords and line endings before doing the diff operation. However,
this can take a long time with large files. If Convert files when diffing against BASE is unchecked
then TortoiseSVN will skip pre-processing the files.
Tambin puede especificar una herramienta distinta de diferencias para utilizarla en las propiedades de
Subversion. Dado que estas tienden a ser cadenas cortas de texto simple, puede que desee utilizar un
visor ms compacto.
If you have configured an alternate diff tool, you can access TortoiseMerge and the third party tool from
the context menus. Context menu Diff uses the primary diff tool, and Shift+ Context menu Diff
uses the secondary diff tool.

5.29.4.2. Herramienta de fusin


Un programa de fusin externo que se utiliza para resolver ficheros en conflicto. La sustitucin de
parmetros se utiliza de la misma forma que el Programa de Diferencias.
%base
El fichero original sin ningn cambio, ni suyo ni de otros
%bname
La ventana de ttulo para el fichero base
%mine
Su propio fichero, con sus cambios
%yname
El ttulo de la ventana para su fichero
%theirs
El fichero tal cual estaba en el repositorio
%tname
El ttulo de la ventana del fichero en el repositorio
%merged
El fichero en conflicto, el resultado de la operacin de fusin

134

Gua de uso diario

%mname
El ttulo de la ventana para el fichero fusionado
For example, with Perforce Merge:
C:\Path-To\P4Merge.exe %base %theirs %mine %merged
or with KDiff3:
C:\Path-To\kdiff3.exe %base %mine %theirs -o %merged
--L1 %bname --L2 %yname --L3 %tname
or with Araxis:
C:\Path-To\compare.exe /max /wait /3 /title1:%tname /title2:%bname
/title3:%yname %theirs %base %mine %merged /a2
or with WinMerge (2.8 or later):
C:\Path-To\WinMerge.exe %merged

5.29.4.3. Configuracin avanzada de diferencias / fusiones

Figura 5.59. El dilogo Configuracin, dilogo de Diferencias/Fusin avanzadas


In the advanced settings, you can define a different diff and merge program for every file extension. For
instance you could associate Photoshop as the Diff Program for .jpg files :-) You can also associate
the svn:mime-type property with a diff or merge program.
To associate using a file extension, you need to specify the extension. Use .bmp to describe Windows
bitmap files. To associate using the svn:mime-type property, specify the mime type, including a
slash, for example text/xml.

135

Gua de uso diario

5.29.4.4. Visor para ficheros de diff unificado


Un programa visor de ficheros diff unificado (ficheros de parche). No se necesitan parmetros. La opcin
Por defecto es para buscar un programa asociado a los ficheros .diff, y si no, para ficheros .txt. Si
no tiene un visor para los ficheros .diff, seguramente obtendr el Bloc de notas.
El programa Bloc de notas original de Windows no se comporta bien con los ficheros que no tienen
terminaciones de lneas CR-LF estndar. Dado que la mayora de ficheros diff unificados tienen
terminaciones de lneas LF puras, no se ven bien en el Bloc de Notas. Sin embargo, puede descargar un
reemplazo del Bloc de Notas Notepad2 [http://www.flos-freeware.ch/notepad2.html] que no slo ensea
las terminaciones de lneas correctamente, sino que tambin aade cdigo de colores a las lneas aadidas
y eliminadas.

5.29.5. Datos de configuracin almacenados

Figura 5.60. El dilogo Configuracin, pgina de Datos almacenados


Por su comodidad, TortoiseSVN almacena muchas de las opciones que utiliza, y recuerda dnde ha estado
ltimamente. Si desea limpiar esa cach de datos, puede hacerlo aqu.
Historia de URL
Siempre que obtiene una copia de trabajo, fusione cambios o utilice el navegador de repositorios,
TortoiseSVN guarda un registro de las ltimas URLs utilizadas y las ofrece en una caja desplegable.
A veces esa lista se llena de URLs desfasadas por lo que puede ser util limpiarla peridicamente.
If you want to remove a single item from one of the combo boxes you can do that in-place. Just
click on the arrow to drop the combo box down, move the mouse over the item you want to remove
and type Shift+Del.
Log messages (Input dialog)
TortoiseSVN almacena los mensajes de registro de confirmacin que introduce. Estos se almacenan
por cada repositorio, por lo que si accede a muchos repositorios la lista puede crecer bastante.
Mensajes de registro (dilogo Mostrar registro)
TortoiseSVN almacena en cach los mensajes de registro obtenidos por el dilogo Mostrar registro
para ahorrar tiempo cuando muestre el registro la siguiente vez. Si alguien edita un mensaje de

136

Gua de uso diario

registro que ya estuviera en su cach, no ver el cambio hasta que limpie la cach. La cach de
mensajes de registro se habilita en la pestaa Dilogos 1.
Tamaos y posiciones de los dilogos
Muchos dilogos almacenan el tamao y la posicin en pantalla que tenan la ltima vez.
Datos de autentificacin
Cuando se autentifica con un servidor de Subversion, el usuario y la contrasea se cachean localmente
para que no tenga que seguir introducindolos. Puede querer limpiar esto por razones de seguridad,
o porque quiere acceder al repositorio bajo un nombre de usuario diferente ... sabe John que est
utilizando su PC?
If you want to clear authentication data for one particular server only, read Seccin 5.1.5,
Autentificacin for instructions on how to find the cached data.
Action log
TortoiseSVN keeps a log of everything written to its progress dialogs. This can be useful when, for
example, you want to check what happened in a recent update command.
The log file is limited in length and when it grows too big the oldest content is discarded. By default
4000 lines are kept, but you can customize that number.
From here you can view the log file content, and also clear it.

5.29.6. Cach de registro

Figura 5.61. The Settings Dialog, Log Cache Page


Este dilogo le permite configurar la caracterstica de cach de registro de TortoiseSVN, que retiene
una copia local de los mensajes de registro y rutas cambiadas para evitar descargas desde el servidor
que llevan tiempo. Al utilizar la cach de registro acelerar dramticamente el dilogo de registro y el
dilogo de revisiones. Otra caracterstica til es que los mensajes de registro sern accesibles cuando
est desconectado.

137

Gua de uso diario

Habilitar la cach de registro


Habilita la cach de registro siempre que se pidan datos de registro. Si se marca, los datos se
recuperarn de la cach cuando estn disponibles all, y cualquier mensaje que no est en la cach
se recuperar del servidor y se aadir a la cach.
Si la cach se deshabilita, los datos siempre se recuperarn directamente del servidor y no se
almacenarn localmente.
If the repository cannot be contacted
Si est trabajando sin conexin, o si el servidor del repositorio est cado, la cach de registro an
puede utilizarse para suministrar mensajes de registro que estn ya almacenados en la cach. Por
supuesto la cach puede no estar actualizada, por lo que hay opciones que le permiten seleccionar
cundo debera utilizarse esta caracterstica.
Cuando los datos de registro se toman de la cach sin contactar con el servidor, el dilogo que utiliza
dichos mensajes mostrar el estado desconectado en su barra de ttulo.
Tiempo lmite antes de actualizar la revisin HEAD
Cuando invoca al dilogo de registro normalmente querr contactar con el servidor para comprobar
si hay mensajes de registro nuevos. Si el tiempo lmite establecido aqu es distinto de cero, slo se
contactar con el servidor cuando el tiempo lmite haya pasado desde el ltimo contacto. Esto puede
reducir los viajes al servidor si abre el dilogo de registro frecuentemente y el servidor es lento, pero
los datos mostrados pueden no estar completamente actualizados. Si desea utilizar esta caracterstica
le sugerimos un valor de compromiso de 300 (5 minutos).
Debajo de las configuraciones puede ver una lista de repositorios que estn almacenados en la cach
local, y el espacio utilizado para la cach. Si selecciona uno de los repositorios podr utilizar los botones
inferiores.

138

Gua de uso diario

5.29.6.1. Log Cache Statistics

Figura 5.62. The Settings Dialog, Log Cache Statistics


Pulse en el botn Detalles para ver estadsticas detalladas de una cach en concreto. Muchos de los
campos mostrados aqu son de inters principalmente para los desarrolladores de TortoiseSVN, as que
no se describen todos en detalle aqu.
RAM
La cantidad de memoria necesaria para dar servicio a esta cach.
Disco
El espacio de disco utilizado para la cach. Los datos estn comprimidos, as que el uso de disco
generalmente es bastante modesto.
Conexin
Muestra si el repositorio estaba disponible la ltima vez que se utiliz la cach.
ltima actualizacin
The last time the cache content was changed.
ltima actualizacin head
La ltima vez que se pidi la revisin HEAD al servidor.
Autores
El nmero de diferentes autores con mensajes almacenados en la cach.
Rutas
El nmero de rutas mostradas, como las vera utilizando svn log -v.

139

Gua de uso diario

Saltar rangos
El nmero de rangos de revisiones que no se han obtenido, simplemente por no han sido pedidos.
Esta es una medida del nmero de huecos en la cach.
Revisin mx
El nmero de revisin ms alto almacenado en la cach.
Cuenta de revisiones
El nmero de revisiones almacenados en la cach. Esta es otra medida de la completitud de la cach.
Pulse en Actualizar para refrescar completamente la cach y rellenar cualquier hueco. Para un repositorio
grande esto puede llevar mucho tiempo, pero es til si va a desconectarse y quiere tener la mejor cach
disponible.
Pulse en Exportar para exportar la cach completa como un conjunto de ficheros CSV. Esto puede ser
til si desea procesar los datos de registro utilizando un programa externo, aunque es til principalmente
para los desarrolladores.
Pulse en Eliminar para eliminar todos los datos de la cach de los repositorios seleccionados. Esto no
deshabilita la cach para el repositorio, por lo que la prxima vez que pida datos de registro se crear
una nueva cach.

5.29.7. Scripts gancho del lado del cliente

Figura 5.63. El dilogo Configuracin, pgina de scripts gancho


This dialog allows you to set up hook scripts which will be executed automatically when certain
Subversion actions are performed. As opposed to the hook scripts explained in Seccin 4.3, Scripts
gancho, these scripts are executed locally on the client.
Una aplicacin para este tipo de ganchos podra ser una llamada a un programa como SubWCRev.exe
para actualizar los nmeros de versin tras una confirmacin, y quizs para provocar una recompilacin.
Por varios motivos de seguridad e implementacin, los scripts gancho se definen localmente en la
mquina, en vez de ser propiedades de proyecto. As define lo que ocurre, sin importar lo que otros

140

Gua de uso diario

confirmen en el repositorio. Por supuesto siempre puede elegir llamar a un script que ya est bajo control
de versiones.

Figura 5.64. El dilogo Configuracin, configurar scripts gancho


Para aadir un nuevo script gancho, simplemente pulse Aadir y rellene los detalles.
Actualmente hay seis tipos de scripts ganchos disponibles
Inicio-confirmacin
Called before the commit dialog is shown. You might want to use this if the hook modifies a versioned
file and affects the list of files that need to be committed and/or commit message.
Pre-confirmacin
Llamado despus de que el usuario hace click en el botn Aceptar en el dilogo de confirmacin,
y antes de que comience el proceso de confirmacin.
Post-confirmacin
Llamado antes de que termine la confirmacin (sea satisfactoria o no).
Inicio-actualizacin
Llamado antes de que se muestre el dilogo actualizar-a-la-revisin.
Pre-actualizacin
Llamado antes de que comience la actualizacin de Subversion.
Post-actualizacin
Llamado despus de que termine la actualizacin (sea satisfactoria o no).
Un gancho se define para una ruta de copia de trabajo en particular. Slo necesita especificar la ruta de
ms alto nivel; si realiza una operacin en una subcarpeta, TortoiseSVN automticamente buscar hacia
arriba una ruta que concuerde.
Despus debe especificar la lnea de comandos a ejecutar, comenzando con la ruta del script gancho o el
ejecutable. Esto puede ser un fichero batch, un fichero ejecutable o cualquier otro fichero que tenga una
asociacin de fichero de Windows vlida, como por ejemplo un script Perl.
The command line includes several parameters which get filled in by TortoiseSVN. The parameters
available depend upon which hook is called. Each hook has its own parameters which are passed in the
following order:
Inicio-confirmacin
PATHMESSAGEFILECWD
Pre-confirmacin
PATHDEPTHMESSAGEFILECWD

141

Gua de uso diario

Post-confirmacin
PATHDEPTHMESSAGEFILEREVISIONERRORCWD
Inicio-actualizacin
PATHCWD
Pre-actualizacin
PATHDEPTHREVISIONCWD
Post-actualizacin
PATHDEPTHREVISIONERRORCWD
The meaning of each of these parameters is described here:
PATH
Una ruta a un fichero temporal que contiene todas las rutas para la operacin que se ha iniciado.
Cada ruta aparece en una lnea distinta en el fichero temporal.
DEPTH
La profundidad a la que se realiza la confirmacin o actualizacin.
Los valores posibles son:
-2
svn_depth_unknown
-1
svn_depth_exclude
0
svn_depth_empty
1
svn_depth_files
2
svn_depth_immediates
3
svn_depth_infinity
MESSAGEFILE
Ruta a un fichero que contiene el mensaje de registro de la confirmacin. El fichero contiene el
texto con la codificacin UTF-8. Tras la ejecucin con xito del gancho start-commit, el mensaje de
registro se vuelve a leer, dndole al gancho una oportunidad para modificarlo.
REVISION
The repository revision to which the update should be done or after a commit completes.
ERROR
Ruta a un fichero que contiene el mensaje de error. Si no hubo error, el fichero estar vaco.
CWD
El directorio de trabajo actual desde el que se ejecuta el script. Este directorio se establece al
directorio raz comn de todas las rutas afectadas.
Si quiere que la operacin de Subversion espere a que el gancho termine, marque Esperar a que el
script termine.
Normally you will want to hide ugly DOS boxes when the script runs, so Hide the script while running
is checked by default.

142

Gua de uso diario

5.29.7.1. Issue Tracker Integration


TortoiseSVN can use a COM plugin to query issue trackers when in the commit dialog. The use of such
plugins is described in Seccin 5.27.2, Getting Information from the Issue Tracker. If your system
administrator has provided you with a plugin, which you have already installed and registered, this is the
place to specify how it integrates with your working copy.

Figura 5.65. The Settings Dialog, Issue Tracker Integration Page


Click on Add... to use the plugin with a particular working copy. Here you can specify the working copy
path, choose which plugin to use from a drop down list of all registered issue tracker plugins, and any
parameters to pass. The parameters will be specific to the plugin, but might include your user name on
the issue tracker so that the plugin can query for issues which are assigned to you.

5.29.8. Configuracin de TortoiseBlame

Figura 5.66. The Settings Dialog, TortoiseBlame Page


Las configuraciones utilizadas por TortoiseBlame se controlan desde el men contextual principal, no
directamente con el propio TortoiseBlame.

143

Gua de uso diario

Colores
TortoiseBlame puede utilizar el color de fondo para indicar la antiguedad de las lneas en un fichero.
Proponga los colores de los extremos especificando los colores para la revisin ms nueva y ms
antigua, y TortoiseBlame utiliza una interpolacin lineal entre esos colores de acuerdo a la revisin
del repositorio indicada en cada lnea.
Fuente
Puede seleccionar la fuente utilizada para mostrar el texto, y el tamao de punto a utilizar. Esto se
aplica tanto al contenido del fichero como al autor y la informacin de la revisin mostrados en el
panel izquierdo.
Tabulaciones
Define cuntos espacios se utilizarn para la expansin cuando se encuentre un carcter de tabulacin
en el contenido del fichero.

5.29.9. Configuraciones del registro


Hay algunas configuraciones poco utilizadas que estn disponibles nicamente editando directamente el
registro.
Configuracin
Puede especificar un lugar diferente para el fichero de configuracin de Subversion utilizando
la clave del registro HKCU\Software\TortoiseSVN\ConfigDir. Esto afectar a todas las
operaciones de TortoiseSVN.
Icono de la bandeja de la cach
Para aadir en la barra de tareas un icono de la cach para el programa TSVNCache, cree una entrada
DWORD con valor 1 en HKCU\Software\TortoiseSVN\CacheTrayIcon. Esto realmente
slo es til para desarrolladores dado que le permite terminar el programa de forma normal.
Nombres de fichero sin extensiones en la lista de auto-completar
La lista de auto-completar mostrada en el editor de mensajes de confirmacin muestra los nombres
de los ficheros que se proponen para confirmar. Para incluir tambin esos nombres sin sus
extensiones, cree una clave DWORD con un valor de 1 en HKCU\Software\TortoiseSVN
\AutocompleteRemovesExtensions.
Columnas del explorador en todo lugar
Las columnas extra que TortoiseSVN aade a la vista Detalle en el Explorador de Windows
normalmente slo se activan en una copia de trabajo. Si desea que estn accesibles en cualquier lugar,
no slo en las copias de trabajo, cree una clave DWORD con un valor de 1 en HKCU\Software
\TortoiseSVN\ColumnsEveryWhere.
Separador de registro de fusin
Cuando fusiona revisiones desde otra rama, y hay informacin de registro de fusin disponible, los
mensajes de las revisiones que fusiona se reunirn para crear un mensaje de registro de confirmacin.
Se utilizar una cadena de texto predefinida para separar los mensajes de registro individuales de las
revisiones fusionadas. Si lo desea, puede crear una clave SZ en HKCU\Software\TortoiseSVN
\MergeLogSeparator que contenga una cadena de separacin de su eleccin.
Ver siempre la autora de los cambios con TortoiseMerge
TortoiseSVN le permite asignar visores de diferencias externos. La mayora de estos visores,
sin embargo, no estn preparados para ver la autora de los cambios (Seccin 5.22.2, Autora
de las diferencias), por lo que quizs desee volver a utilizar TortoiseMerge en este caso.
Para hacerlo, cree una clave DWORD con un valor de 1 en HKCU\Software\TortoiseSVN
\DiffBlamesWithTortoiseMerge.

5.29.10. Carpetas de trabajo de Subversion

144

Gua de uso diario

VS.NET 2003 when used with web projects can't handle the .svn folders that Subversion uses to store
its internal information. This is not a bug in Subversion. The bug is in VS.NET 2003 and the frontpage
extensions it uses.

Tenga en cuenta que el bug est solucionado en VS2005 y versiones posteriores.


As of Version 1.3.0 of Subversion and TortoiseSVN, you can set the environment variable
SVN_ASP_DOT_NET_HACK. If that variable is set, then Subversion will use _svn folders instead of
.svn folders. You must restart your shell for that environment variable to take effect. Normally that
means rebooting your PC. To make this easier, you can now do this from the general settings page using
a simple checkbox - refer to Seccin 5.29.1, Configuracin general.
For more information, and other ways to avoid this problem in the first place, check out the article about
this in our FAQ [http://tortoisesvn.net/aspdotnethack].

5.30. ltimo paso


Donar!
Incluso aunque TortoiseSVN y TortoiseMerge son gratuitos, puede ayudar a los desarrolladores
envindoles parches y tomando un rol activo en el desarrollo. Tambin puede ayudar a alegrarnos
las horas interminables que gastamos delante de nuestros ordenadores.
While working on TortoiseSVN we love to listen to music. And since we spend many hours on
the project we need a lot of music. Therefore we have set up some wish-lists with our favourite
music CDs and DVDs: http://tortoisesvn.tigris.org/donate.html Please also have a look at the list
of people who contributed to the project by sending in patches or translations.

145

Captulo 6. El programa SubWCRev


SubWCRev es un programa de consola para Windows que puede utilizarse para leer el estado de una
copia de trabajo local y opcionalmente realizar sustituciones de palabras clave en un fichero plantilla.
A menudo se utiliza como parte del proceso de compilacin como una forma de incorporar informacin
de la copia de trabajo en el objeto que est construyendo. Tpicamente, se puede utilizar para incluir el
nmero de revisin en un dilogo Acerca de.

6.1. La lnea de comandos de SubWCRev


SubWCRev lee el estado de Subversion de todos los ficheros en una copia de trabajo, excluyendo los
externos por defecto. Apunta el nmero de revisin de confirmacin ms alto que encuentra, y la fecha
de esa confirmacin. Tambin apunta si hay modificaciones locales en la copia de trabajo, o revisiones
de actualizacin mezcladas. El nmero de revisin, el rango de revisiones de actualizacin y el estado de
las modificaciones se muestra por la salida estandar stdout.
SubWCRev.exe se llama desde la lnea de comandos o desde un script, y se controla utilizando parmetros
de la lnea de comandos.

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]


WorkingCopyPath es la ruta a la copia de trabajo que se va a comprobar. Slo puede utilizar
SubWCRev en copias de trabajo, no directamente en el repositorio. La ruta puede ser absoluta o relativa
al directorio actual.
Si quiere que SubWCRev realice sustituciones de palabras clave, para que se graben los campos como
la revisin del repositorio y la URL a un fichero de texto, debe proporcionar un fichero plantilla
SrcVersionFile y un fichero de salida DstVersionFile que contendr la versin sustituida de
la plantilla.
Hay un nmero de modificadores opcionales que afectan la forma en la que SubWCRev trabaja. Si utiliza
ms de una, debe especificarlos como un nico grupo, por ejemplo, -nm y no -n -m.
Cambiar

Descripcin

-n

Si se especifica esta opcin, SubWCRev terminar con ERRORLEVEL 7 si la


copia de trabajo tiene modificaciones locales. Esto puede utilizarse para evitar
compilaciones cuando hay presentes cambios sin confirmar.

-m

Si se especifica esta opcin, SubWCRev terminar con ERRORLEVEL 8 si la


copia de trabajo contiene revisiones mezcladas. Esto puede utilizarse para evitar
compilaciones de una copia de trabajo parcialmente actualizada.

-d

Si se especifica esta opcin, SubWCRev terminar con ERRORLEVEL 9 si el fichero


de destino ya existe.

-f

Si se especifica esta opcin, SubWCRev incluir la revisin del ltimo cambio de las
carpetas. El comportamiento por defecto es utilizar nicamente los ficheros cuando
se obtienen los nmeros de revisin.

-e

Si se especifica esta opcin, SubWCRev examinar los directorios que se han includo
con svn:externals, pero slo si son del mismo repositorio. El comportamiento
por defecto es ignorar los externos.

-x

Si se especifica esta opcin, SubWCRev mostrar los nmeros de revisin en HEX.

-X

Si se especifica esta opcin, SubWCRev mostrar los nmeros de revisin en HEX,


anteponiendo '0X'.

Tabla 6.1. Lista de opciones de lnea de comandos disponible

146

El programa SubWCRev

6.2. Sustitucin de palabras clave


Si se especifican ficheros de origen y destino, SubWCRev copia el fichero origen al destino, realizando
las siguientes sustituciones de palabras clave:
Palabra clave

Descripcin

$WCREV$

Se reemplaza con la revisin de confirmacin ms alta de la copia de


trabajo.

$WCDATE$

Reemplazado con la fecha/hora de confirmacin de la revisin de


confirmacin ms alta. Por defecto, se utiliza el formato internacional:
yyyy-mm-dd hh:mm:ss. Alternativamente, puede especificar un
formato propio que se utilizar con strftime(), por ejemplo:
$WCDATE=%a %b %d %I:%M:%S %p$. Para obtener una lista de los
caracteres de formateo disponibles, mire en referencia en lnea [http://
www.cppreference.com/stddate/strftime.html].

$WCNOW$

Reemplazado por la fecha/hora actual del sistema. Esto puede utilizarse


para indicar la fecha de compilacin. El formato del tiempo es el
descrito ms arriba.

$WCRANGE$

Se reemplaza con el rango de revisiones de actualizacin de la copia


de trabajo. Si la copia de trabajo est en un estado consistente, esto
ser una nica revisin. Si la copia de trabajo contiene revisiones
mezcladas, bien por estar desactualizada, o bien porque se ha realizado
deliberadamente una actualizacin a una revisin concreta, se mostrar
el rango de la forma 100:200.

$WCMIXED$

$WCMIXED?TextoSI:TextoNO$ se reemplaza por TextoSI si


hay revisiones de actualizacin mezcladas, o por TextoNO si no es as.

$WCMODS$

$WCMODS?TextoSI:TextoNO$ se reemplaza por TextoSI si hay


modificaciones locales, o por TextoNO si no es as.

$WCURL$

Se reemplaza con la URL del repositorio de la copia de trabajo pasada


a SubWCRev.

$WCNOW$

Reemplazado con la fecha y hora actual

$WCNOW=

Reemplazado con la fecha y hora actual en formato estndar

$WCINSVN$

$WCINSVN?TextoSI:TextoNO$ se reemplaza por TextoSI si la


entrada est versionada, o por TextoNO si no es as.

$WCNEEDSLOCK$

$WCNEEDSLOCK?TextoSI:TextoNO$ is replaced with TextoSI


if the entry has the svn:needs-lock property set, or TextoNO if
not.

$WCISLOCKED$

$WCISLOCKED?TextoSI:TextoNO$ se reemplaza por TextoSI


si la entrada est bloqueada, o por TextoNO si no es as.

$WCLOCKDATE$

Reemplazado por la fecha del bloqueo

$WCLOCKOWNER$

Reemplazado con el nombre del propietario del bloqueo

$WCLOCKCOMMENT$

Reemplazado por el comentario del bloqueo

Tabla 6.2. Lista de opciones de lnea de comandos disponible

6.3. Ejemplo de palabras clave


El siguiente ejemplo le muestra cmo se sustituyen las palabras clave de un fichero plantilla en el fichero
resultado.

147

El programa SubWCRev

// Fichero de prueba para SubWCRev: fichprueba.tmpl


char
char
char
char
char
char

*Revision
*Modified
*Date
*Range
*Mixed
*URL

=
=
=
=
=
=

"$WCREV$";
"$WCMODS?Modificado:No modificado$";
"$WCDATE$";
"$WCRANGE$";
"$WCMIXED?Copia de trabajo con revisiones mezcladas:No mezcladas$
"$WCURL$";

#if $WCMODS?1:0$
#error El origen ha sido modificado
#endif
// Fin de fichero
Despus de ejecutar SubWCRev.exe ruta\a\la\copia\de\trabajo fichprueba.tmpl
fichprueba.txt, el fichero de salida fichprueba.txt se parecera a esto:

// Test file for SubWCRev: testfile.txt


char *Revision = "3701";
char *Modified = "Modified";
char *Date
= "2005/06/15 11:15:12";
char *Range
= "3699:3701";
char *Mixed
= "Mixed revision WC";
char *URL
= "http://tortoisesvn.tigris.org/svn/tortoisesvn/...
trunk/src/SubWCRev";
#if 1
#error Source is modified
#endif
// End of file

Sugerencia
Un fichero como este se incluir en la compilacin por lo que puede esperar que est
versionado. Asegrese de que versiona el fichero de plantilla, no el fichero generado, porque
si no cada vez que regenere el fichero de versin deber confirmar el cambio, lo que a su
vez significara que el fichero de versin necesita ser actualizado.

6.4. interfaz COM


If you need to access Subversion revision information from other programs, you can use the COM
interface of SubWCRev. The object to create is SubWCRev.object, and the following methods are
supported:
Mtodo

Descripcin

.GetWCInfo

Este mtodo atraviesa la copia de trabajo obteniendo la informacin de


revisin. Naturalmente debe llamarlo antes de que pueda acceder a la
informacin utilizando los mtodos restantes. El primer parmetro es la
ruta. El segundo parmetro debe ser true si desea incluir las revisiones
de las carpetas; equivalente al parmetro de la lnea de comandos f. El tercer parmetro debera ser true si desea incluir svn:externals;
equivalente al parmetro de la lnea de comandos -e.

148

El programa SubWCRev

Mtodo

Descripcin

.Revision

La revisin de confirmacin ms alta de la copia de trabajo. Equivalente


a $WCREV$

.Date

La fecha/hora de la revisin de confirmacin ms alta. Equivalente a


$WCDATE$

.Author

El autor de la revisin de confirmacin ms alta, esto es, la ltima


persona que confirm cambios en la copia de trabajo.

.MinRev

La revisin mnima de actualizacin, como se muestra en $WCRANGE$

.MaxRev

La revisin mxima de actualizacin, como se muestra en $WCRANGE$

.HasModifications

True si hay modificaciones locales

.Url

Replaced with the repository URL of the working copy path used in
GetWCInfo. Equivalent to $WCURL$

Tabla 6.3. mtodos de automatizacin/COM soportados


El siguiente ejemplo muestra cmo se podra usar el interfaz.

// testCOM.js - javascript file


// test script for the SubWCRev COM/Automation-object
filesystem = new ActiveXObject("Scripting.FileSystemObject");
SubWCRev1 = new ActiveXObject("SubWCRev.object");
SubWCRev2 = new ActiveXObject("SubWCRev.object");
SubWCRev3 = new ActiveXObject("SubWCRev.object");
SubWCRev1.GetWCInfo(filesystem.GetAbsolutePathName("."), 0, 0);
SubWCRev2.GetWCInfo(filesystem.GetAbsolutePathName(".."), 1, 1);
SubWCRev3.GetWCInfo(filesystem.GetAbsolutePathName("SubWCRev.cpp"),
0, 0);
sInfo1 = "Revision = " + SubWCRev1.Revision +
"\nMin Revision = " + SubWCRev1.MinRev +
"\nMax Revision = " + SubWCRev1.MaxRev +
"\nDate = " + SubWCRev1.Date +
"\nURL = " + SubWCRev1.Url +
"\nAuthor = " + SubWCRev1.Author +
"\nHasMods = " + SubWCRev1.HasModifications;
sInfo2 = "Revision = " + SubWCRev2.Revision +
"\nMin Revision = " + SubWCRev2.MinRev +
"\nMax Revision = " + SubWCRev2.MaxRev +
"\nDate = " + SubWCRev2.Date +
"\nURL = " + SubWCRev2.Url +
"\nAuthor = " + SubWCRev2.Author +
"\nHasMods = " + SubWCRev2.HasModifications;
sInfo3 = "Revision = " + SubWCRev3.Revision +
"\nMin Revision = " + SubWCRev3.MinRev +
"\nMax Revision = " + SubWCRev3.MaxRev +
"\nDate = " + SubWCRev3.Date +
"\nURL = " + SubWCRev3.Url +
"\nAuthor = " + SubWCRev3.Author +
"\nHasMods = " + SubWCRev3.HasModifications;
WScript.Echo(sInfo1);

149

El programa SubWCRev

WScript.Echo(sInfo2);
WScript.Echo(sInfo3);

150

Apndice A. Preguntas ms
frecuentes (FAQ)
Because TortoiseSVN is being developed all the time it is sometimes hard to keep the documentation
completely up to date. We maintain an online FAQ [http://tortoisesvn.tigris.org/faq.html] which
contains a selection of the questions we are asked the most on the TortoiseSVN mailing lists
<dev@tortoisesvn.tigris.org> and <users@tortoisesvn.tigris.org>.
We also maintain a project Issue Tracker [http://issues.tortoisesvn.net] which tells you about some of the
things we have on our To-Do list, and bugs which have already been fixed. If you think you have found
a bug, or want to request a new feature, check here first to see if someone else got there before you.
Si tiene una pregunta que no est contestada en ningn otro lugar, el mejor lugar para preguntar es en
una de las listas de correo. <users@tortoisesvn.tigris.org> es la que debe utilizar si tiene
preguntas acerca del uso de TortoiseSVN. Si desea ayudar con el desarrollo de TortoiseSVN, entonces
debera tomar parte en las discusiones de <dev@tortoisesvn.tigris.org>.

151

Apndice B. Cmo...?
Este apndice contiene soluciones a los problemas o preguntas que puede tener mientras utiliza
TortoiseSVN.

B.1. Mover/copiar muchos ficheros de golpe


Se pueden mover/copiar ficheros de uno en uno utilizando TortoiseSVN Renombrar.... Pero si desea
mover/copiar muchos ficheros, esta forma es muy lenta y trabajosa.
The recommended way is by right-dragging the files to the new location. Simply right-click on the files
you want to move/copy without releasing the mouse button. Then drag the files to the new location and
release the mouse button. A context menu will appear where you can either choose Context Menu
SVN Copy versioned files here. or Context Menu SVN Move versioned files here.

B.2. Obligar a los usuarios a introducir un mensaje de registro


Hay dos formas de evitar que los usuarios puedan confirmar con un mensaje de registro vaco. Uno es
especfico de TortoiseSVN, el otro funciona con todos los clientes de Subversion, pero necesita acceso
directo al servidor.

B.2.1. Script gancho en el servidor


Si tiene acceso directo al servidor del repositorio, puede instalar un script gancho pre-commit que rechace
todas las confirmaciones con mensajes de registro cortos o vacos.
In the repository folder on the server, there's a sub-folder hooks which contains some example hook
scripts you can use. The file pre-commit.tmpl contains a sample script which will reject commits
if no log message is supplied, or the message is too short. The file also contains comments on how to
install/use this script. Just follow the instructions in that file.
Este mtodo es la forma recomendada si sus usuarios tambin utilizan otros clientes de Subversion adems
de TortoiseSVN. La parte negativa es que la confirmacin se rechaza por el servidor, y por tanto los
usuarios obtendrn un mensaje de error. El cliente no puede saber antes de realizar la confirmacin que
se rechazar. Si desea que TortoiseSVN deshabilite el botn Aceptar mientras el mensaje de registro sea
demasiado corto, utilice el mtodo descrito a continuacin.

B.2.2. Propiedades del proyecto


TortoiseSVN utiliza propiedades para controlar algunas de sus funciones. Una de esas propiedades es la
propiedad tsvn:logminsize.
Si establece esa propiedad en una carpeta, TortoiseSVN deshabilitar el botn Aceptar en todos los
dilogos de confirmacin hasta que el usuario introduzca un mensaje de registro con al menos la longitud
especificada en la propiedad.
Para obtener informacin ms detallada sobre esas propiedades de proyectos, por favor lea Seccin 5.17,
Configuracin del proyecto

B.3. Actualizar los ficheros seleccionados desde el repositorio

152

Cmo...?

Normalmente actualizar su copia de trabajo utilizando TortoiseSVN Actualizar. Pero si slo desea
obtener algunos ficheros nuevos que un colega ha aadido sin fusionar ningn cambio en los dems
ficheros a la vez, necesitar otra forma de actuacin.
Utilice TortoiseSVN Comprobar Modificaciones. y pulse en Comprobar repositorio para ver lo
que se cambi en el repositorio. Seleccione los ficheros que desea actualizar localmente, y utilice el men
contextual para actualizar slo esos ficheros.

B.4. Roll back (Undo) revisions in the repository


B.4.1. Utilice el dilogo Registro de revisiones
La manera ms fcil de revertir los cambios de una revisin en concreto, o de un rango de revisiones,
es utilizar el dilogo de registro de revisiones. Este es tambin el mtodo a utilizar si desea descartar
cambios recientes y hacer que una revisin antigua se convierta en la nueva HEAD.
1. Seleccione el fichero o la carpeta en la que desea revertir los cambios. Si desea revertir todos los
cambios, esta debera ser la carpeta ms alta.
2. Select TortoiseSVN Show Log to display a list of revisions. You may need to use Show All or
Next 100 to show the revision(s) you are interested in.
3. Select the revision you wish to revert. If you want to undo a range of revisions, select the first one
and hold the Shift key while selecting the last one. Note that for multiple revisions, the range must be
unbroken with no gaps. Right click on the selected revision(s), then select Context Menu Revert
changes from this revision.
4. Or if you want to make an earlier revision the new HEAD revision, right click on the selected revision,
then select Context Menu Revert to this revision. This will discard all changes after the selected
revision.
Ha revertido los cambios dentro de su copia de trabajo. Compruebe los resultados, y luego confirme los
cambios.

B.4.2. Utilice el dilogo Fusionar


Para deshacer un rango grande de revisiones, puede utilizar el dilogo Fusionar. El mtodo anterior utiliza
la fusin por detrs; este mtodo la utiliza explcitamente.
1. En su copia de trabajo seleccione TortoiseSVN Fusionar.
2. In the From: field enter the full folder URL of the branch or tag containing the changes you want to
revert in your working copy. This should come up as the default URL.
3. En el campo Desde la Revisin introduzca el nmero de revisin en la que est actualmente. Si est
seguro de que nadie ms est haciendo cambios, puede utilizar la revisin HEAD.
4. Asegrese de que la casilla Usar la URL "Desde:" est marcada.
5. In the To Revision field enter the revision number that you want to revert to, namely the one before
the first revision to be reverted.
6. Pulse Aceptar para completar la fusin.
Ha revertido los cambios dentro de su copia de trabajo. Compruebe los resultados, y luego confirme los
cambios.

153

Cmo...?

B.4.3. Utilice svndumpfilter


Dado que TortoiseSVN nunca pierde datos, sus revisiones deshechas an existen como revisiones
intermedias en el repositorio. Slo se ha cambiado la revisin HEAD a su estado previo. Si desea hacer
que las revisiones desaparezcan completamente de su repositorio, borrando toda traza de que alguna vez
existieran, deber utilizar medidas ms extremas. A menos de que haya una buena razn para hacer esto,
no se recomienda. Una razn posible sera que alguien haya confirmado un documento confidencial en
un repositorio pblico.
The only way to remove data from the repository is to use the Subversion command line tool svnadmin.
You can find a description of how this works in the Repository Maintenance [http://svnbook.redbean.com/en/1.4/svn.reposadmin.maint.html].

B.5. Comparar dos revisiones de un fichero


Si desea comparar dos revisiones en la historia de un fichero, por ejemplo las revisiones 100 y 200
del mismo fichero, utilice TortoiseSVN Mostrar Registro para ver la historia de revisiones de
ese fichero. Seleccione las dos revisiones que desea comparar y luego utilice Men Contextual
Comparar Revisiones.
Si desea comparar el mismo fichero en dos rboles diferentes, por ejemplo el tronco y una rama, puede
utilizar el navegador de repositorios para abrir ambas ramas, seleccionar el fichero en ambos lugares, y
utilizar Men Contextual Comparar Revisiones.
Si desea comparar dos rboles para ver lo que ha cambiado, por ejemplo el tronco y una versin
etiquetada, puede utilizar TortoiseSVN Grfico de Revisiones Seleccione los dos nodos a comparar,
y luego utilice Men Contextual Comparar Revisiones HEAD. Esto le mostrar una lista de los
ficheros cambiados, y luego podr seleccionar los ficheros individuales para ver los cambios en detalle.
Alternativamente, puede utilizar Men Contextual Diff Unificado de las Revisiones HEAD para
ver un sumario de todas las diferencias, con un contexto mnimo.

B.6. Incluir un sub-proyecto comn


A veces querr incluir otro proyecto en su copia de trabajo, quizs el cdigo de alguna librera. No quiere
hacer un duplicado de ese cdigo en su repositorio, porque perdera la conexin con el cdigo original (y
mantenido). O quizs tiene varios proyectos que comparten el ncleo de cdigo. Hay al menos 3 formas
de lidiar con esto.

B.6.1. Utilice svn:externals


Set the svn:externals property for a folder in your project. This property consists of one or more
lines; each line has the name of a sub-folder which you want to use as the checkout folder for common
code, and the repository URL that you want to be checked out there. For full details refer to Seccin 5.2.4,
Proyectos referenciados.
Commit the new folder. Now when you update, Subversion will pull a copy of that project from its
repository into your working copy. The sub-folders will be created automatically if required. Each time
you update your main working copy, you will also receive the latest version of all external projects.
Si los proyectos externos estn en el mismo repositorio, cualquier cambio que haga all se incluir en la
lista de confirmacin cuando confirme su proyecto principal.
Si los proyectos externos estn en repositorios diferentes, cualquier cambio que haga en el proyecto
externo se notificar cuando cnofirme el proyecto principal, pero tendr que confirmar esos cambios
externos de forma separada.

154

Cmo...?

De los tres mtodos descritos, ste es el nico que no necesita preparacin en el lado del cliente. Una
vez que los externos se especifican en las propiedades de la carpeta, todos los clientes obtendrn carpetas
rellenas cuando se actualicen.

B.6.2. Utilice una copia de trabajo anidada


Cree una nueva carpeta dentro de su proyecto para contener el cdigo comn, pero no la aada a
Subversion
Seleccione TortoiseSVN Obtener en la nueva carpeta, y obtenga una copia del cdigo comn en
ella. Ahora tiene anidada una copia de trabajo separada dentro de su copia de trabajo principal.
Las dos copias de trabajo son independientes. Cuando confirme los cambios de la padre, los cambios en
la copia de trabajo anidada se ignoran. De la misma forma, cuando actualice el padre, la copia de trabajo
anidada no se actualiza.

B.6.3. Utilice una ruta relativa


Si utiliza el mismo cdigo principal comn en varios proyectos, y no quiere tener varias copias de trabajo
de l en cada proyecto que lo utilice, puede obtenerlo en un lugar separado que se relacione con todos
los otros proyectos que lo utilicen. Por ejemplo:

C:\Proyectos\Proy1
C:\Proyectos\Proy2
C:\Proyectos\Proy3
C:\Proyectos\Comun
y refirase al cdigo comn con una ruta relativa, por ejemplo ..\..\Comun\DSPcore.
Si sus proyectos estn dispersos en lugares sin relacin entre s puede utilizar una variante de esto, que es
poner el cdigo comn en un lugar y utilizar la sustitucin de letras de unidades para mapear esa ruta a
algo que puede codificar en sus proyectos, por ejemplo, obtenga el cdigo comn en D:\Documentos
\Framework o C:\Documents and Settings\{login}\Mis Documentos\framework
y luego utilice

SUBST X: "D:\Documentos\framework"
para crear el mapeo de unidades utilizado en su cdigo fuente. Su cdigo puede entonces utilizar rutas
absolutas.

#include "X:\superio\superio.h"
Este mtodo slo funcionar en un entorno de todo-PCs, y necesitar documentar los mapeos de unidades
requeridos para que su equipo sepa dnde estn esos ficheros misteriosos. Este mtodo debera utilizarse
estrictamente en entornos de desarrollo cerrados, y no se recomienda para su uso generalizado.

B.7. Crear un acceso directo a un repositorio


If you frequently need to open the repository browser at a particular location, you can create a desktop
shortcut using the automation interface to TortoiseProc. Just create a new shortcut and set the target to:

TortoiseProc.exe /command:repobrowser /path:"url/to/repository"


Of course you need to include the real repository URL.

155

Cmo...?

B.8. Ignorar ficheros que ya estn versionados


Si accidentalmente aadi algunos ficheros que deberan haber sido ignorados, cmo puede sacarlos del
control de versiones sin perderlos? Quizs tiene su propio fichero de configuracin IDE que no es parte
del proyecto, pero que le cost bastante tiempo ajustar a su gusto.
Si an no ha confirmado los ficheros aadidos, todo lo que debe hacer es utilizar TortoiseSVN
Revertir... para deshacer la operacin. Entonces debera aadir los ficheros a la lista de ignorados para
que no se aadan de nuevo por error.
Si los ficheros ya estn en el repositorio, tendr que trabajar un poco ms.
1. Hold the Shift key to get the extended context menu and use TortoiseSVN Delete (keep local)
to mark the file/folder for deletion from the repository without losing the local copy.
2. TortoiseSVN Commit the parent folder.
3. Add the file/folder to the ignore list so you don't get into the same trouble again.

B.9. Desversionar una copia de trabajo


If you have a working copy which you want to convert back to a plain folder tree without the .svn
directories, you can simply export it to itself. Read Seccin 5.25.1, Removing a working copy from
version control to find out how.

B.10. Eliminar una copia de trabajo


Si tiene una copia de trabajo que ya no necesita, cmo puede eliminarla limpiamente? Fcil simplemente elimnela en el Explorador de Windows! Las copias de trabajo son entidades locales, y son
auto-contenidas.

156

Apndice C. Useful Tips For


Administrators
Este apndice contiene soluciones a los problemas o preguntas que pueda tener cuando es reponsable de
distribuir TortoiseSVN a mltiples ordenadores clientes.

C.1. Instalar TortoiseSVN utilizando polticas de grupo


The TortoiseSVN installer comes as an MSI file, which means you should have no problems adding that
MSI file to the group policies of your domain controller.
A good walk-through on how to do that can be found in the knowledge base article 314934 from
Microsoft: http://support.microsoft.com/?kbid=314934.
Versions 1.3.0 and later of TortoiseSVN must be installed under Computer Configuration and not under
User Configuration. This is because those versions need the new CRT and MFC DLLs, which can only
be deployed per computer and not per user. If you really must install TortoiseSVN on a per user basis,
then you must first install the MFC and CRT package version 8 from Microsoft on each computer you
want to install TortoiseSVN as per user.

C.2. Redirigir la comprobacin de actualizacin


TortoiseSVN comprueba si hay una nueva versin disponible cada pocos das. Si hay una nueva versin
disponible, aparece un dilogo informando al usuario sobre ello.

Figura C.1. El dilogo de Actualizacin


Si es responsable de muchos usuarios en su dominio, puede querer que sus usuarios utilicen slo versiones
que haya aprobado y que no siempre se instalen la ltima versin. Probablemente no querr que aparezca
el dilogo de actualizacin para que sus usuarios no vayan y se actualicen inmediatamente.
Versions 1.4.0 and later of TortoiseSVN allow you to redirect that upgrade check to your intranet server.
You can set the registry key HKCU\Software\TortoiseSVN\UpdateCheckURL (string value)
to an URL pointing to a text file in your intranet. That text file must have the following format:

1.4.1.6000
A new version of TortoiseSVN is available for you to download!

157

Useful Tips For Administrators

http://192.168.2.1/downloads/TortoiseSVN-1.4.1.6000-svn-1.4.0.msi
The first line in that file is the version string. You must make sure that it matches the exact version string
of the TortoiseSVN installation package. The second line is a custom text, shown in the upgrade dialog.
You can write there whatever you want. Just note that the space in the upgrade dialog is limited. Too
long messages will get truncated! The third line is the URL to the new installation package. This URL is
opened when the user clicks on the custom message label in the upgrade dialog. You can also just point
the user to a web page instead of the MSI file directly. The URL is opened with the default web browser,
so if you specify a web page, that page is opened and shown to the user. If you specify the MSI package,
the browser will ask the user to save the MSI file locally.

C.3. Setting the SVN_ASP_DOT_NET_HACK environment variable


As of version 1.4.0 and later, the TortoiseSVN installer doesn't provide the user with the option to set
the SVN_ASP_DOT_NET_HACK environment variable anymore, since that caused many problems and
confusions with users which always install everything no matter if they know what it is for.
But that option is only hidden for the user. You still can force the TortoiseSVN installer to set that
environment variable by setting the ASPDOTNETHACK property to TRUE. For example, you can start
the installer like this:

msiexec /i TortoiseSVN-1.4.0.msi ASPDOTNETHACK=TRUE

C.4. Deshabilitar entradas del men contextual


Empezando en la versin 1.5.0, TortoiseSVN le permite deshabilitar (realmente, ocultar) entradas del
men contextual. Dado que esta caracterstica no debera usarse a la ligera sino nicamente cuando hay
una razn necesaria, no hay interfaz de usuario para hacerlo y debe modificarse directamente el registro
de Windows. Esto puede utilizarse para deshabilitar ciertos comandos que los usuarios no deberan usar.
Pero por favor tenga en cuenta que slo se ocultan las entradas del men contextual en el Explorador,
pero los comandos an estn disponibles por otros medios, por ejemplo la lnea de comandos o incluso
mediante otros dilogos en el propio TortoiseSVN!
Las claves de registro que almacenan la informacon sobre qu mens contextuales mostrar
son HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskLow y
HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskHigh.
Cada una de estas entradas de registro es un valor DWORD, en el que cada bit corresponde a una entrada
de men especfica. Un bit a 1 significa que la entrada de men correspondiente se desactiva.
Valor

Entrada de men

0x0000000000000001

Obtener

0x0000000000000002

Actualizar

0x0000000000000004

Confirmar

0x0000000000000008

Aadir

0x0000000000000010

Revertir

0x0000000000000020

Limpieza

0x0000000000000040

Resolver

0x0000000000000080

Cambiar

0x0000000000000100

Importar

0x0000000000000200

Exportar

158

Useful Tips For Administrators

Valor

Entrada de men

0x0000000000000400

Crear repositorio aqu

0x0000000000000800

Ramas / Etiqueta

0x0000000000001000

Fusionar

0x0000000000002000

Eliminar

0x0000000000004000

Renombrar

0x0000000000008000

Actualizar a la revisin

0x0000000000010000

Diff

0x0000000000020000

Mostrar registro

0x0000000000040000

Editar conflictos

0x0000000000080000

Relocalizar

0x0000000000100000

Comprobar modificaciones

0x0000000000200000

Ignorar

0x0000000000400000

Navegador de repositorios

0x0000000000800000

Autora

0x0000000001000000

Crear parche

0x0000000002000000

Aplicar parche

0x0000000004000000

Grfico de revisiones

0x0000000008000000

Bloqueo

0x0000000010000000

Eliminar bloqueo

0x0000000020000000

Propiedades

0x0000000040000000

Diferenciar con URL

0x0000000080000000

Eliminar tems no versionados

0x2000000000000000

Configuracin

0x4000000000000000

Ayuda

0x8000000000000000

Acerca de

Tabla C.1. Entradas de men y sus valores


Ejemplo: para deshabilitar las entradas de men Relocalizar, Eliminar tems no versionados y
Configuracin, aada los valores asignados a estas entradas como se muestra:

0x0000000000080000
+ 0x0000000080000000
+ 0x2000000000000000
= 0x2000000080080000
El valor DWORD inferior (0x80080000) debe almacenarse en HKEY_CURRENT_USER
\Software\TortoiseSVN\ContextMenuEntriesMaskLow, mientras que el valor DWORD
(0x20000000) superior se guarda en HKEY_CURRENT_USER\Software\TortoiseSVN
\ContextMenuEntriesMaskHigh.
Para habilitar las entradas de men de nuevo, simplemente elimine las dos entradas del registro.

159

Apndice D. Automatizando
TortoiseSVN
Dado que todos los comandos de TortoiseSVN se controlan a travs de parmetros de lnea de comandos,
puede automatizarlo con scripts batch o iniciando comandos y dilogos especficos desde otros programas
(por ejemplo, desde su editor de textos favorito).

Importante
Recuerde que TortoiseSVN es un cliente GUI, y esta gua de automatizacin le muestra
cmo conseguir que aparezcan los dilogos de TortoiseSVN para recolectar informacin
del usuario. Si desea escribir un script que no requiera entradas del usuario, debera utilizar
el cliente de lnea de comandos oficial de Subversion.

D.1. Comandos de TortoiseSVN


El programa de interfaz grfico de TortoiseSVN se llama TortoiseProc.exe. Todos los comandos
se especifican con el parmetro /command:abcd donde abcd es el nombre obligatorio del comando.
La mayora de estos comando necesitan al menos un argumento de ruta, que se proporciona con /
path:"alguna\ruta". En la siguiente tabla el comando se refiere al parmetro /command:abcd
y la ruta se refiere al parmetro /path:"alguna\ruta".
Como algunos comandos pueden tomar una lista de rutas de destino (por ejemplo, si se confirman varios
ficheros especficos) el parmetro /path puede admitir varias rutas, separadas con un caracter *.
TortoiseSVN utiliza ficheros temporales para pasar mltiples argumentos entre la extensin del shell y
el programa principal. Desde TortoiseSVN 1.5.0 en adelante, el parmetro /notempfile es obsoleto
y ya no hay necesidad de aadirlo.
The progress dialog which is used for commits, updates and many more commands usually stays open
after the command has finished until the user presses the OK button. This can be changed by checking
the corresponding option in the settings dialog. But using that setting will close the progress dialog, no
matter if you start the command from your batch file or from the TortoiseSVN context menu.
To specify a different location of the configuration file, use the parameter /configdir:"path\to
\config\directory". This will override the default path, including any registry setting.
Para cerrar el dilogo de progreso al final de un comando automticamente sin utilizar la configuracin
permanente, puede pasar el parmetro /closeonend.
/closeonend:0 no cierra el dilogo automticamente
/closeonend:1 auto cerrar si no hay errores
/closeonend:2 cierra automticamente si no hay errores ni conflictos
/closeonend:3 cierra automticamente si no hay errores, conflictos ni fusiones
/closeonend:4 cierra automticamente si no hay errores, conflictos ni fusiones para operaciones
locales
La siguiente tabla lista todos los comandos a los que se puede acceder utilizando la lnea de comando de
TortoiseProc.exe. Como se describe ms arriba, se deben utilizar en la forma /command:abcd. En la
tabla, el prefijo /command se omite para ahorrar espacio.

160

Automatizando TortoiseSVN

Comando

Descripcin

:about

Muestra el dilogo Acerca de. Tambin se muestra si no se pasa ningn


comando.

:log

Opens the log dialog. The /path specifies the file or folder for which the log
should be shown. Three additional options can be set: /startrev:xxx,
/endrev:xxx and /strict

:checkout

Abre el dilogo de obtener. /path especifica el directorio de destino y /


url especifica la URL desde la que obtener.

:import

Opens the import dialog. The /path specifies the directory with the data
to import.

:update

Actualiza la copia de trabajo en /path hasta HEAD. Si se especifica


la opcin /rev se muestra un dilogo para preguntar al usuario a qu
revisin debe actualizarse. Para evitar el dilogo especifique un nmero
de revisin /rev:1234. Otras opciones son /nonrecursive y /
ignoreexternals.

:commit

Opens the commit dialog. The /path specifies the target directory or the
list of files to commit. You can also specify the /logmsg switch to pass a
predefined log message to the commit dialog. Or, if you don't want to pass
the log message on the command line, use /logmsgfile:ruta, where
ruta points to a file containing the log message. To pre-fill the bug ID box
(in case you've set up integration with bug trackers properly), you can use
the /bugid:"el ID del error aqu" to do that.

:add

Aade los ficheros en /path al control de versiones.

:revert

Revierte las modificaciones locales de una copia de trabajo. La /path dice


qu items deben revertirse.

:cleanup

Hace limpieza tras operaciones interrumpidas o abortadas, y desbloquea la


copia de trabajo en /path.

:resolve

Marca un fichero en conflicto especificado en /path como resuelto. Si se


especifica /noquestion, la resolucin se realiza sin preguntar al usuario
primero si realmente debe hacerse.

:repocreate

Crea un repositorio en /path

:switch

Opens the switch dialog. The /path specifies the target directory.

:export

Exports the working copy in /path to another directory. If the /path


points to an unversioned directory, a dialog will ask for an URL to export
to the directory in /path.

:merge

Opens the merge dialog. The /path specifies the target directory. Three
additional options can be set: /mergefrom:xxx, /mergeto:xxx and /
fromurl:URL. These pre-fill the relevant fields in the merge dialog.

:mergeall

Abre el dilogo fusionar todo. /path especifica el directorio de destino.

:copy

Brings up the branch/tag dialog. The /path is the working copy to branch/
tag from. And the /url is the target URL. You can also specify the /
logmsg switch to pass a predefined log message to the branch/tag dialog.
Or, if you don't want to pass the log message on the command line, use
/logmsgfile:ruta, where ruta points to a file containing the log
message.

:settings

Abre el dilogo de configuracin.

:remove

Elimina el/los fichero/s en /path del control de versiones.

161

Automatizando TortoiseSVN

Comando

Descripcin

:rename

Renombra el fichero en /path. El nuevo nombre del fichero se pregunta


con un dilogo. Para evitar la pregunta sobre renombrar ficheros similares
en un paso, utilice /noquestion.

:diff

Inicia el programa externo de diferencias especificado en la configuracin


de TortoiseSVN. /path especifica el primer fichero. Si se establece la
opcin /path2, se inicia el programa de diferencias con esos dos ficheros.
Si se omite /path2, se hace la comparacin entre el fichero de /path y
su BASE. Para establecer explcitamente los nmeros de revisin utilice /
startrev:xxx y /endrev:xxx. Si /blame se establece y /path2
no se establece, entonces la comparacin se efecta tras realizar la autora
de los ficheros entre las revisiones dadas.

:showcompare

Dependiendo de las URLs y las revisiones a comparar, esto o bien muestra


un diff unificado (si la opcin unified est establecida), o un dilogo con
una lista de ficheros que han cambiado o, en el caso de que las URLs apunten
a ficheros, inicia el visor de diferencias para esos dos ficheros.
Las opciones url1, url2, revision1 y revision2 deben
especificarse. Las opciones pegrevision, ignoreancestry, blame
y unified son opcionales.

:conflicteditor

Starts the conflict editor specified in the TortoiseSVN settings with the
correct files for the conflicted file in /path.

:relocate

Abre el dilogo relocalizar. /path especifica la ruta de la copia de trabajo


a relocalizar.

:help

Abre el fichero de ayuda.

:repostatus

Abre el dilogo Comprobar modificaciones. La /path especifica el


directorio de la copia de trabajo.

:repobrowser

Inicia el dilogo del navegador de repositorios, apuntando a la URL


de la copia de trabajo dada en /path o /path apunta directamente
a una URL. Puede utilizarse una opcin adicional /rev:xxx para
especificar la revisin que el navegador de repositorios debe mostrar. Si
se omite /rev:xxx, se supone HEAD. Si /path apunta a una URL, el
/projectpropertiespath:ruta/a/copia/trabajo especifica
la ruta desde donde hay que leer y utilizar las propiedades del proyecto.

:ignore

Aade todos los objetivos en /path a la lista de ignorados, es decir, aade


la propiedad svn:ignore a esos ficheros.

:blame

Abre el dilogo de autora para el fichero especificado en /path.


Si las opciones /startrev y /endrev se establecen, entonces el dilogo
preguntando por el rango de la autora no se muestra y se utilizan los valores
de revisin especificados.
Si la opcin /line:nnn se establece, TortoiseBlame se abrir mostrando
el nmero de lnea especificado.
Las opciones /ignoreeol, /ignorespaces y /ignoreallspaces
tambin se soportan.

:cat

Graba un fichero de una URL o una copia de trabajo dada en /path al lugar
dado en /savepath:ruta. La revisin se da en /revision:xxx. Esto
puede utilizarse para obtener un fichero cno una revisin concreta.

:createpatch

Crea un fichero de parte para la ruta dada en /path.

:revisiongraph

Muestra el grfico de revisiones para la ruta dada en /path.

162

Automatizando TortoiseSVN

Comando

Descripcin

:lock

Bloquea un fichero o todos los ficheros en un directorio dado en /path.


Se muestra el dilogo Bloquear para que el usuario pueda introducir un
comentario para el bloqueo.

:unlock

Desbloquea un fichero o todos los ficheros en un directorio dado en /path.

:rebuildiconcache

Reconstruye la cach de iconos de Windows. Utilice esto slo en el caso de


que los iconos de Windows se hayan corrompido. Un efecto secundario de
esto (y no puede evitarse) es que los iconos del escritorio se recolocan. Para
eliminar el mensaje de advertencia, pase /noquestion.

:properties

Muestra el dilogo de propiedades para la ruta dada en /path.

Tabla D.1. Lista de comandos y opciones disponibles


Ejemplos (que deben introducirse en una nica lnea):

TortoiseProc.exe /command:commit
/path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
/logmsg:"mensaje de registro de prueba" /closeonend
TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend
TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
/startrev:50 /endrev:60 /closeonend

D.2. Comandos de TortoiseIDiff


La herramienta de diferencia de imgenes tiene algunas pocas opciones de comando que puede utilizar
para controlar cmo se inicia la herramienta. El programa se llama TortoiseIDiff.exe.
La siguiente tabla contiene todas las opciones que pueden pasarse a la herramienta de diferencia de
imgenes por la lnea de comandos.
Opcin

Descripcin

:left

Ruta al fichero mostrado a la izquierda.

:lefttitle

Una cadena de ttulo. Esta cadena se utiliza en el ttulo de la vista de la imagen


en lugar de la ruta completa al fichero de la imagen.

:right

Ruta al fichero mostrado a la derecha.

:righttitle

Una cadena de ttulo. Esta cadena se utiliza en el ttulo de la vista de la imagen


en lugar de la ruta completa al fichero de la imagen.

:overlay

Si se especifica, la herramienta de diferencias de imgenes cambia al modo


de sobreimpresin (fundido alpha).

:fit

Si se especifica, la herramienta de diferencias de imgenes ajusta ambas


imgenes juntas.

:showinfo

Muestra la caja de informacin de imgen.

Tabla D.2. Lista de las opciones disponibles


Ejemplo (que debera introducirse como una nica lnea):

TortoiseIDiff.exe /left:"c:\images\img1.jpg" /lefttitle:"imgen 1"

163

Automatizando TortoiseSVN

/right:"c:\images\img2.jpg" /righttitle:"imgen 2"


/fit /overlay

164

Apndice E. Referencia cruzada del


interface de lnea de comandos
A veces este manual hace referencia a la documentacin principal de Subversion, que describe Subversion
en trminos del Interfaz de Lnea de Comandos (CLI). Para ayudarle a entener lo que TortoiseSVN hace
tras el escenario, hemos compilado una lista mostrando los comandos CLI equivalentes a cada operacin
en la Interfaz de Usuario de TortoiseSVN.

Nota
Incluso aunque hay equivalentes en CLI para lo que TortoiseSVN hace, recuerde que
TortoiseSVN no llama al CLI sino que utiliza la librera de Subversion directamente.
Si cree que ha encontrado un error en TortoiseSVN, puede que le pidamos que intente reproducirlo
utilizando el CLI, para que podamos distinguir los problemas de TortoiseSVN de los problemas de
Subversion. Esta referencia le dice qu comando debe probar.

E.1. Convenciones y reglas bsicas


In the descriptions which follow, the URL for a repository location is shown simply as URL, and
an example might be http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk. The
working copy path is shown simply as PATH, and an example might be C:\TortoiseSVN\trunk.

Importante
Dado que TortoiseSVN es una Extensin del Shell de Windows, no es capaz de utilizar
la nocin de directorio de trabajo actua. Todas las rutas de las copias de trabajo se deben
especificar con rutas absolutas, no relativas.
Algunos tems son opcionales, y a menudo se controlan con casillas o botones de opciones en
TortoiseSVN. Estas opciones se muestran [entre corchetes] en las definiciones de la lnea de comandos.

E.2. Comandos de TortoiseSVN


E.2.1. Obtener
svn checkout [-N] [--ignore-externals] [-r rev] URL RUTA
Si se marca Slo obtener la carpeta superior, utilice la opcin -N.
Si se marca Omitir externos, utilice la opcin --ignore-externals.
Si est obteniendo una revisin en concreto, especifquela detrs de la URL utilizando la opcin -r.

E.2.2. Actualizar
svn info URL_de_la_copia_de_trabajo
svn update [-r rev] RUTA
A da de hoy, la actualizacin no es una operacin atmica en Subversion. Por tanto, TortoiseSVN primero
encuentra la revisin HEAD del repositorio, y luego actualiza todos los tems a ese nmero de revisin
en concreto, evitando crear as una copia de trabajo mezclada.

165

Referencia cruzada del


interface de lnea de comandos
Si slo se selecciona un nico tem para actualizar, o si los tems seleccionados no son todos del mismo
repositorio, TortoiseSVN simplemente actualiza hasta HEAD.
Aqu no se utilizan opciones en la lnea de comandos. Actualizar a la Revisin tambin implementa el
comando actualizar, pero ofrece ms opciones.

E.2.3. Actualizar a la revisin


svn info URL_de_la_copia_de_trabajo
svn update [-r rev] [-N] [--ignore-externals] RUTA
Si se marca Slo obtener la carpeta superior, utilice la opcin -N.
Si se marca Omitir externos, utilice la opcin --ignore-externals.

E.2.4. Confirmar
En TortoiseSVN, el dilogo de confirmacin utiliza varios comandos Subversion. La primera fase es una
comprobacin del estado que determina los tems de su copia de trabajo que potencialmente pueden ser
confirmados. Puede revisar la lista, comparar los ficheros contra BASE y seleccionar los tems que desea
incluir en la confirmacin.

svn status -v RUTA


Si se marca Mostrar archivos no versionados, TortoiseSVN le mostrar tambin todos los ficheros y
carpetas no versionados en su jerarqua de la copia de trabajo, teniendo en cuenta las reglas de ignorar.
Esta caracterstica en concreto no tiene equivalente directo en Subversion, ya que el comando svn
status no entra en carpetas no versionadas.
Si selecciona cualquier fichero o carpeta no versionado, esos tems primero se aadirn a su copia de
trabajo.

svn add RUTA...


Cuando pulsa Aceptar, tiene lugar la confirmacin en Subversion. Si ha dejado todas las casillas de
seleccin de ficheros sin tocar tal y como aparecieron, TortoiseSVN utilizar una nica confirmacin
recursiva en la copia de trabajo. Si ha deseleccionado algn fichero, entonces se debe utilizar una
confirmacin no-recursiva (-N), y se debe especificar individualmente cada ruta en la lnea de comandos
de la confirmacin.

svn commit -m "Mensaje de registro" [-N] [--no-unlock] RUTA...


Mensaje de registro aqu representa los contenidos del cuadro de texto Mensaje de Registro.
Puede estar vaco.
Si se marca Mantener Bloqueos, utilice la opcin --no-unlock.

E.2.5. Diff
svn diff RUTA
Si utiliza Diff desde el men contextual principal, est comparando un fichero modificado contra su
revisin BASE. La salida del comando CLI anterior tambin hace sto y produce la salida en formato
diff unificado. Sin embargo, esto no es lo que TortoiseSVN utiliza. TortoiseSVN utiliza TortoiseMerge

166

Referencia cruzada del


interface de lnea de comandos
(o un programa de comparacin de su eleccin) para mostrar las diferencias visualmente entre ficheros
de texto completos, por lo que no hay equivalente directo en el CLI.
Tambin puede comparar 2 ficheros cualquiera utilizando TortoiseSVN, estn o no bajo el control de
versiones. TortoiseSVN simplemente alimenta con los dos ficheros al programa de diferencias y le deja
que l encuentre dnde estn las diferencias.

E.2.6. Mostrar registro


svn log -v -r 0:N --limit 100 [--stop-on-copy] RUTA
o
svn log -v -r M:N [--stop-on-copy] RUTA
Por defecto, TortoiseSVN intenta recoger 100 mensajes de registro utilizando el mtodo --limit. Si la
configuracin establece que utilice las APIs antiguas, se usa la segunda forma para obtener los mensajes
de registro de 100 revisiones del repositorio.
Si se marca Parar en copia/renombrado, utilice la opcin --stop-on-copy.

E.2.7. Comprobar modificaciones


svn status -v RUTA
o
svn status -u -v RUTA
La comprobacin de estado inicialmente slo muestra su copia de trabajo. Si pulsa en Comprobar
repositorio, se comprueba tambin el repositorio para ver qu ficheros cambiaran tras una actualizacin,
lo que necesita la opcin -u.
Si se marca Mostrar archivos no versionados, TortoiseSVN le mostrar tambin todos los ficheros y
carpetas no versionados en su jerarqua de la copia de trabajo, teniendo en cuenta las reglas de ignorar.
Esta caracterstica en concreto no tiene equivalente directo en Subversion, ya que el comando svn
status no entra en carpetas no versionadas.

E.2.8. Grfico de revisin


El grfico de revisiones es una caracterstica nica de TortoiseSVN. No hay equivalente en el cliente de
lnea de comandos.
Lo que hace TortoiseSVN es

svn info URL_de_la_copia_de_trabajo


svn log -v URL
donde URL es la raz del repositorio, y luego analiza los datos devueltos.

E.2.9. Navegador de repositorios


svn info URL_de_la_copia_de_trabajo
svn list [-r rev] -v URL
Puede utilizar svn info para determinar la raz del repositorio, que es el nivel superior mostrado en
el navegador de repositorios. No puede navegar ms arriba de ese nivel. Adems, este comando
devuelve toda la informacin sobre bloqueos que se muestra en el navegador de repositorios.
La llamada svn list le mostrar los contenidos de un directorio, cuando se proporciona una URL
y una revisin.

167

Referencia cruzada del


interface de lnea de comandos

E.2.10. Editar conflictos


Este comando no tiene equivalente CLI. Invoca TortoiseMerge o una herramienta externa de fusin/
comparacin en 3 paneles para mirar los ficheros en conflictos y ver qu lneas hay que utilizar.

E.2.11. Resuelto
svn resolved RUTA

E.2.12. Renombrar
svn rename RUTA_ACTUAL NUEVA_RUTA

E.2.13. Eliminar
svn delete RUTA

E.2.14. Revertir
svn status -v RUTA
La primera fase es una comprobacin del estado que determina los tems en su copia de trabajo que pueden
ser revertidos potencialmente. Puede revisar la lista, comparar los ficheros contra BASE y seleccionar
los tems que desea incluir en la operacin de revertir.
Cuando pulsa Aceptar, tiene lugar la operacin de revertir en Subversion. Si ha dejado todas las casillas
de seleccin de ficheros sin tocar tal y como aparecieron, TortoiseSVN utilizar una nica operacin
revertir recursivamente (-R) en la copia de trabajo. Si ha deseleccionado algn fichero, entonces se debe
especificar individualmente cada ruta en la lnea de comandos de la operacin de revertir.

svn revert [-R] RUTA...

E.2.15. Limpieza
svn cleanup RUTA

E.2.16. Obtener bloqueo


svn status -v RUTA
La primera fase es una comprobacin del estado que determina los ficheros en su copia de trabajo que
pueden ser potencialmente bloqueados. Puede seleccionar los tems que desea bloquear.

svn lock -m "Mensaje de bloqueo" [--force] RUTA...


Mensaje de bloqueo aqu representa los contenidos del cuadro de texto Mensaje de bloqueo. Puede
estar vaco.
Si se marca Robar los bloqueos, utilice la opcin --force.

E.2.17. Quitar bloqueo

168

Referencia cruzada del


interface de lnea de comandos
svn unlock RUTA

E.2.18. Ramas / Etiqueta


svn copy -m "Mensaje de registro" URL URL
o
svn copy -m "Mensaje de registro" URL@rev URL@rev
o
svn copy -m "Mensaje de registro" RUTA URL
El dilogo Rama/Etiqueta hace una copia en el repositorio. Hay 3 botones de opciones:
Revisin HEAD en el repositorio
Revisin especfica en el repositorio
Copia de trabajo
que corresponden a las 3 variantes de lnea de comandos anteriores.
Mensaje de registro aqu representa los contenidos del cuadro de texto Mensaje de Registro.
Puede estar vaco.

E.2.19. Cambiar
svn info URL_de_la_COPIA_DE_TRABAJO
svn switch [-r rev] URL RUTA

E.2.20. Fusionar
svn merge [--dry-run] --force URL_Origen@revN URL_Destino@revM RUTA
Simular hace la misma fusin con la opcin --dry-run.

svn diff URL_Origen@revN URL_Destino@revM


Diff unificado muestra la operacin de diferenciacin que se utilizar para hacer la fusin.

E.2.21. Exportar
svn export [-r rev] [--ignore-externals] URL RUTA_Exportacin
Esta forma se utiliza cuando se accede desde una carpeta sin versionar, y la carpeta se utiliza como el
destino.
La exportacin de una copia de trabajo a otro lugar se hace sin utilizar las bibliotecas de Subversion, por
lo que no hay lnea de comandos equivalente.
Lo que TortoiseSVN hace es copiar todos los ficheros al nuevo destino mientras le muestra el progreso
de la operacin. Opcionalmente, pueden exportarse tambin los ficheros y/o carpetas sin versionar.
En ambos casos, si se marca Omitir externos, utilice la opcin --ignore-externals.

E.2.22. Relocalizar

169

Referencia cruzada del


interface de lnea de comandos
svn switch --relocate URL_Origen URL_Destino

E.2.23. Crear repositorio aqu


svnadmin create --fs-type fsfs RUTA
o
svnadmin create --fs-type bdb RUTA

E.2.24. Aadir
svn add RUTA...
Si haba seleccionado una carpeta, en primer lugar TortoiseSVN la escanea recursivamente en busca de
tems que puedan ser aadidos.

E.2.25. Importar
svn import -m "Mensaje de registro" RUTA URL
Mensaje de registro aqu representa los contenidos del cuadro de texto Mensaje de Registro.
Puede estar vaco.

E.2.26. Autora
svn blame -r N:M -v RUTA
svn log -r N:M RUTA
Si utiliza TortoiseBlame para ver la informacin de autora, se necesita tambin el fichero de registro
para mostrar los mensajes de registro en un texto de ayuda. Si visualiza la autora como un fichero de
texto, no se necesita esta informacin.

E.2.27. Aadir a la lista de ignorados


svn propget svn:ignore RUTA > ficherotemporal
{editar los nuevos tems a ignorar en el fichero ficherotemporal}
svn propset svn:ignore -F ficherotemporal RUTA
Because the svn:ignore property is often a multi-line value, it is shown here as being changed via a
text file rather than directly on the command line.

E.2.28. Crear parche


svn diff RUTA > fichero-parche
TortoiseSVN crea un fichero de parche en formato diff unificado comparando la copia de trabajo con
su versin BASE.

E.2.29. Aplicar parche


Aplicar parches es un trabajo complicado a no ser que el parche y la copia de trabajo estn en la misma
revisin. Afortunadamente, puede utilizar TortoiseMerge, que no tiene equivalente directo en Subversion.

170

Apndice F. Detalles de
implementacion
Este apndice contiene una discusin ms detallada sobre la implementacin de algunas de las
caractersticas de TortoiseSVN.

F.1. Iconos sobreimpresionados


Cada fichero y carpeta tiene un valor del estado de Subversion tal y como lo devuelve la librera de
Subversion. En el cliente de lnea de comandos, estos valores se representan por cdigos de una nica
letra, pero en TortoiseSVN se muestran grficamente utilizando los iconos sobreimpresionados. Dado que
el nmero de sobreimpresiones es muy limitado, cada sobreimpresin puede representar uno de varios
valores de estado.

La sobreimpresin En conflicto se utiliza para representar el estado en conflicto, donde una


actualizacin o un cambio han resultado en conflictos entre los cambios locales y los cambios descargados
desde el repositorio. Tambin se utiliza para indicar el estado obstrudo, que puede ocurrir cuando
una operacin no puede terminar.

La sobreimpresin Modificado representa el estado modificado, donde ha hecho modificaciones


locales; el estado fusionado, donde los cambios del repositorio se han fusionado con sus cambios
locales; y el estado reemplazado, donde un fichero ha sido eliminado y reemplazado por otro diferente
con el mismo nombre.

La sobreimpresin Eliminado representa el estado eliminado, donde un tem est marcado para su
eliminacin; o el estado faltante, donde un tem no est presente. Naturalmente un tem que est
faltante no puede tener una sobreimpresin sobre si mismo, pero la carpeta padre puede marcarse si uno
de sus tems hijo falta.

La sobreimpresin Aadido se utiliza simplemente para representar el estado aadido cuando un tem
ha sido aadido al control de versiones.

La sobreimpresin En Subversion se utiliza para representar un tem que est en el estado normal, o
un tem versionado cuyo estado an se desconoce. dado que TortoiseSVN utiliza un proceso de cach
en segundo plano para obtener los estados, puede llevar unos pocos segundos antes deque se actualice
la sobreimpresin.

La sobreimpresin Necesita bloqueo se utiliza para indicar cundo un fichero tiene la establecida la
propiedad svn:needs-lock. Para las copias de trabajo que fueron creadas utilizando Subversion 1.4.0
y posteriores, el estado svn:needs-lock se guarda en la cach local por Subversion y se utiliza para
determinar cundo mostrar esta sobreimpresin. Para copias de trabajo que estn en formato pre-1.4.x,

171

Detalles de implementacion

TortoiseSVN muestra esta sobreimpresin cuando el fichero tiene el estado de slo-lectura. Tenga en
cuenta que Subversion automticamente actualiza las copias de trabajo cuando las actualiza, aunque el
almacenamiento en cach de la propiedad svn:needs-lock puede no realizarse hasta que el propio
fichero se actualice.

La sobreimpresin Bloqueado se utiliza cuando la copia de trabajo local contiene un bloqueo para ese
fichero.

La sobreimpresin Ignorado se utiliza para representar un tem que est en el estado ignorado, bien por
un patrn global de ignorado, o por la propiedad svn:ignore de la carpeta padre. Esta sobreimpresin
es opcional.

La sobreimpresin No versionado se utiliza para representar a un tem que est en el estado no


versionado. Este es un tem dentro de una carpeta versionada, pero que l mismo no est bajo el
control de versiones. Esta sobreimpresin es opcional.
Si un tem tiene el estado de Subversion ninguno (el tem no est dentro de una copia de trabajo),
entonces no se mostrar ninguna sobreimpresin. Si ha escogido deshabilitar las sobreimpresiones
Ignorado y Sin versionar entonces tampoco se mostrarn las sobreimpresiones para estos ficheros.
Un tem slo puede tener un valor de estado de Subversion. Por ejemplo un fichero puede estar modificado
localmente y puede estar marcado para su eliminacin al mismo tiempo. Subversion devuelve un nico
valor de estado - en este caso eliminado. Estas prioridades estn definidas en el propio Subversion.
Cuando TortoiseSVN muestra el estado recursivamente (la configuracin por defecto), cada carpeta
muestra una sobreimpresin reflejando su propio estado y el estado de todos sus hijos. Para mostrar una
nica sobreimpresin resumen, utilizamos el orden de prioridad mostrado arriba para determinar qu
sobreimpresin utilizar, tomando la sobreimpresin En conflicto como la que tiene mayor prioridad.
De hecho, puede que se encuentre con que no todos estos iconos se utilizan en su sistema. Esto se debe
a que el nmero 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 no hay suficientes espacios para
sobreimpresiones disponibles, 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 estn visibles.
Borrado se carga si es posible, pero se cambia por Modificado si no hay suficientes huecos.
Slo-lectura se carga si es posible, pero se cambia por Normal si no hay suficientes huecos.
Bloqueado se carga slo si hay menos de 13 sobreimpresiones ya cargadas. Se cambia por Normal si
no hay suficientes huecos.
Aadido se carga slo si hay menos de 14 sobreimpresiones ya cargadas. Se cambia por Modificado
si no hay suficientes huecos.

172

Apndice G. Asegurando Svnserve


utilizando SSH
Esta seccin proporciona una gua paso-a-paso para configurar Subversion y TortoiseSVN para utilizar
el protocolo svn+ssh. Si ya est utilizando conexiones SSH autenticadas para identificarse en su
servidor, entonces esto ya lo tiene hecho y puede encontrar ms detalles en el libro de Subversion. Si
no est utilizando SSH pero le gustara hacerlo para proteger su instalacin de Subversion, esta gua le
proporciona un mtodo simple con el que no necesita crear una cuenta de usuario SSH diferente en el
servidor para cada usuario de Subversion.
En esta implementacin creamos una nica cuenta de usuario SSH para todos los usuarios de Subversion,
y utilizamos diferentes claves de autenticacin para diferenciar entre los usuarios reales de Subversion.
En este apndice asumimos que ya tiene las herramientas de Subversion instaladas, y que ha creado un
repositorio tal y como se describe en alguna seccin de este manual. Tenga en cuenta que no debera
iniciar svnserve como un servicio o demonio cuando se utilice con SSH.
Mucha de esta informacin viene de un tutorial proporcionado por Marc Logemann, que puede
encontrarse en www.logemann.org [http://www.logemann.org/2007/03/13/subversion-tortoisesvn-sshhowto/] Thorsten Mller ha proporcionado informacin adicional sobre cmo configurar un servidor
Windows. Gracias tos!

G.1. Preparando un servidor Linux


Necesita tener SSH habilitado en el servidor, y aqu asumimos que utilizar OpenSSH. En la mayora de
distribuciones ya lo tendr instalado. Para averiguarlo, escriba:

ps xa | grep sshd
y busque trabajos de ssh.
Un punto a tener en cuenta es que si compila Subversion desde el cdigo fuente y no proporciona ningn
argumento a ./configure, Subversion crea un directorio bin bajo /usr/local y pone sus binarios
ah. Si desea utilizar el modo tnel con SSH, debe asegurarse de que el usuario que haga login via SSH
necesita ejecutar el programa svnserve y algunos otros binarios. Por esta razn, o bien ponga /usr/
local/bin en la variable PATH, cree enlaces simblicos de sus binarios en el directorio /usr/sbin
o en cualquier otro directorio que est incluido en el PATH.
Para comprobar que todo est bien, haga login como el usuario de destino con SSH y escriba:

which svnserve
Este comando le dir si se puede alcanzar svnserve.
Cree un nuevo usuario que utilizaremos para acceder al repositorio svn:

useradd -m svnuser
Asegrese de otorgar a este usuario todos los derechos de acceso al repositorio.

G.2. Preparando un servidor Windows


Instale el demonio Cygwin SSH como se describe aqu: http://pigtail.net/LRP/printsrv/cygwin-sshd.html

173

Asegurando Svnserve utilizando SSH

Cree una nueva cuenta de usuario de Windows svnuser que utilizaremos para acceder al repositorio.
Asegrese de otorgar a este usuario todos los derechos de acceso al repositorio.
Si an no hay fichero de contraseas, cree uno desde la consola Cygwin utilizando:

mkpasswd -l > /etc/passwd

G.3. Herramientas de cliente SSH para utilizar con TortoiseSVN


Obtenga las herramientas que necesitamos para utilizar SSH desde el cliente Windows desde este
sitio: http://www.chiark.greenend.org.uk/~sgtatham/putty/ Simplemente vaya a la seccin de descargas
y obtenga Putty, Plink, Pageant y Puttygen.

G.4. Creando certificados OpenSSH


El siguiente paso es crear un par de claves para la autenticacin. Hay dos formas posibles para crear las
claves. La primera es crear las claves con PuTTYgen en el cliente, subir la clave pblica a su servidor
y utilizar la clave privada con PuTTY. La otra es crear el par de claves con la herramienta de OpenSSH
ssh-keygen, descargar la clave privada a su cliente y convertir esa clave privada en una clave privada
al estilo de PuTTY.

G.4.1. Crear claves utilizando ssh-keygen


Haga login en el servidor como root o svnusery escriba:

ssh-keygen -b 1024 -t dsa -N contrasea -f ficherodeclave


utilizando una frase-clave real (y que nadie ms conozca) y un nombre de fichero de clave. Acabamos
de crear una clave SSH2 DSA con una frase-clave de 1024 bit. Si escribe

ls -l ficherodeclave*
ver dos ficheros, ficherodeclave y ficherodeclave.pub. Como puede suponer, el fichero
.pub es el fichero de la clave pblica, y el otro es el de la clave privada.
Aada la clave pblica a las que ya estn en la carpeta .ssh dentro del directorio home del usuario
svnuser:

cat ficherodeclave.pub >> /home/svnuser/.ssh/authorized_keys


Para utilizar la clave privada que hemos generado, tenemos que convertirla a un formato PuTTY, ya que
el formato del fichero de clave privada no est especificado por un cuerpo estndar. Tras descargar el
fichero de clave privada a su PC cliente, inicie PuTTYgen y utilice Conversiones Importar clave.
Navegue a su fichero ficherodeclave que ha obtenido desde el servidor e introduzca la frase-clave
que utiliz cuando cre la clave. Finalmente pulse en Guardar clave privada y guarde el fichero como
ficherodeclave.PPK.

G.4.2. Crear claves utilizando PuTTYgen


Utilice PuTTYgen para generar un par de clave pblica/clave privada y guardarla. Copie la clave pblica
al servidor y adala a las que ya estn en la carpeta .ssh del directorio home del usuario svnuser:

cat ficherodeclave.pub >> /home/svnuser/.ssh/authorized_keys

174

Asegurando Svnserve utilizando SSH

G.5. Comprobacin utilizando PuTTY


To test the connection we will use PuTTY. Start the program and on the Session tab set the hostname to
the name or IP address of your server, the protocol to SSH and save the session as SvnConnection or
whatever name you prefer. On the SSH tab set the preferred SSH protocol version to 2 and from Auth
set the full path to the .PPK private key file you converted earlier. Go back to the Sessions tab and hit
the Save button. You will now see SvnConnection in the list of saved sessions.
Pulse en Abrir y debera ver un prompt de login al estilo telnet. Utilice svnuser como el nombre de
usuario y si todo va bien debera conectarse directamente sin que se le pregunte por una contrasea.
Puede que necesite editar /etc/sshd_config en el servidor. Cambie las lineas como sigue y despus
reinicie el servicio SSH.

PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

G.6. Comprobando SSH con TortoiseSVN


Por ahora slo hemos comprobado que puede hacer login utilizando SSH. Ahora debemos asegurarnos
de que la conexin SSH realmente puede ejecutar svnserve. En el servidor modifique /home/
svnuser/.ssh/authorized_keys para permitir que varios autores de Subversion utilicen la
misma cuenta del sistema, svnuser. Tenga en cuenta que cada autor de Subversion utiliza el mismo
login pero una clave de autenticacin diferente, por lo tanto deber aadir una lnea por cada autor.
Nota: Todo esto es una nica lnea muy larga.

command="svnserve -t -r <RutaRaizRepositorios> --tunnel-user=<autor>",


no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
no-pty ssh-rsa <ClavePublica> <Comentario>
Hay varios valores que necesitar establecer de acuerdo a su configuracin.
<RutaRaizRepositorios> debera reemplazarse con la ruta al directorio que contiene sus
repositorios. Esto evita que tenga que especificar las rutas completas del servidor dentro de las URLs.
Tenga en cuenta que debe utilizar barras de dividir incluso en servidores Windows, por ejemplo, c:/
svn/raizrepo. En los ejemplos siguientes asumiremos que tiene una carpeta de repositorio dentro de
la raz de repositorios llamada repos.
<autor> debera reemplazarse con el autor SVN que desea que se almacene en la confirmacin. Esto
tambin permite que svnserve utilice sus derechos de acceso dentro de svnserve.conf.
<ClavePublica> debera reemplazarse con la clave pblica que gener anteriormente.
<Comentario> puede ser cualquier comentario que desee, aunque es til para asociar un nombre de
autor SVN con el nombre real de la persona.
Haga click con el botn derecho sobre cualquier carpeta en el Explorador de Windows y seleccione
TortoiseSVN Navegador de repositorios. Se le pedir introducir una URL, as que introduzca una
de esta forma:

svn+ssh://svnuser@ConexionSvn/repos
Qu significa esa URL? El nombre de esquema es svn+ssh lo que indica a TortoiseSVN cmo manejar
las peticiones al servidor. Despus de la doble barra, especifica el usuario con el que conectarse al

175

Asegurando Svnserve utilizando SSH

servidor, en nuestro caso svnuser. Despus de la @ proporcionamos nuestro nombre de sesin PuTTY.
Este nombre de sesin contiene todos los detalles como dnde encontrar la clave privada y la direccin
IP o DNS del servidor. Por ltimo debemos proporcionar la ruta al repositorio, relativa a la raz del
repositorio en el servidor, como se especifica en el fichero authorized_keys.
Pulse en Aceptar y debera ser capaz de navegar por el contenido del repositorio. Si es as, ahora tiene
ejecutndose un tnel SSH con TortoiseSVN.
Tenga en cuenta que por defecto TortoiseSVN utiliza su propia versin de Plink para conectarse. Esto
evita que aparezca una ventana de consla para cada intento de autenticacin, pero tambin significa que
no hay ningn lugar donde aparezcan los mensajes de error. Si recibe el error No es posible escribir
en la salida estndar, puede intentar especificar Plink como el cliente en la configuracin de red de
TortoiseSVN. Esto le permitir ver el mensajes de error real generado por Plink.

G.7. Variantes de configuracin SSH


Una forma de simplificar la URL en TortoiseSVN es almacenar el usuario dentro de la sesin PuTTY.
Para esto deber cargar su sesin ya definida ConexionSvn en PuTTY y en la pestaa Conexin
establezca Usuario para auto login con el nombre de usuario, por ejemplo svnuser. Guarde su sesin
PuTTY como antes e intente la siguiente URL dentro de TortoiseSVN:

svn+ssh://ConexionSvn/repos
Esta vez slo proporcionamos el nombre de la sesin PuTTY ConexionSvn al cliente SSH que utiliza
TortoiseSVN (TortoisePlink.exe). Este cliente buscar en la sesin todos los detalles necesarios.
At the time of writing PuTTY does not check all saved configurations, so if you have multiple
configurations with the same server name, it will pick the first one which matches. Also, if you edit the
default configuration and save it, the auto login user name is not saved.
A mucha gente le gusta utilizar Pageant para almacenar todas sus claves. Dado que una sesin PuTTY
puede almacenar una clave, no siempre necesitar Pageant. Pero imagine que quiere almacenar claves
para diferentes servidores; en este caso necesitara editar todas las sesiones PuTTY una y otra vez,
dependiendo del servidor al que se intente conectar. En esta situacin utilizar Pageant tiene sentido,
porque cuando PuTTY, Plink, TortoisePlink o cualquier otra herramienta basada en PuTTY intente
conectarse a un servidor SSH, comprueba todas las claves privadas que Pageant mantiene para iniciar
la conxin.
Para esta tarea, simplemente ejecute Pageant y aada la clave privada. Debe ser la misma clave privada
que defini en la sesin PuTTY anteriormente. Si utiliza Pageant para el almacenamiento de claves
privadas, puede eliminar la referencia al fichero de clave privada en su sesin PuTTY almacenada. Por
supuesto que puede aadir ms claves para otros servidores, o para otros usuarios.
Si no quiere repetir este procedimiento tras cada reinicio de su cliente, entonces debera colocar Pageant
en el grupo de auto-inicio de su instalacin de Windows. Puede aadir las claves con las rutas completas
como argumentos de lnea de comandos de Pageant.exe
La ltima forma de conectarse con un servidor SSH es simplemente utilizando esta URL dentro de
TortoiseSVN:

svn+ssh://svnuser@100.101.102.103/repos
svn+ssh://svnuser@midominio.com/repos
Como puede ver, no utilizamos una sesin almacenada PuTTY sino una direccin IP (o nombre de
dominio) como objetivo de la conexin. Tambin proporcionamos el usuario, pero puede que se pregunte
cmo se encontrar el fichero de clave privada. Dado que TortoisePlink.exe es simplemente una versin
modificada de la herramienta estndar Plink dentro del conjunto de utilidades de PuTTY, TortoiseSVN
tambin intentar utilizar todas las claves almacenadas en Pageant.

176

Glosario
Actualizar

Este comando de Subversion incorpora los ltimos cambios del


repositorio a su copia de trabajo, fusionando cualquier cambio hecho
por otros con los cambios locales en la copia de trabajo.

Aadir

Un comando de Subversion que se utiliza para aadir un fichero o


un directorio a su copia de trabajo. Los nuevos tems se aaden al
repositorio cuando confirme.

Autora

Este comando es slo para ficheros de texto, y anota cada lnea para
mostrar la revisin del repositorio en la que se cambi por ltima
vez, y el autor que hizo ese cambio. Nuestra implementacin GUI
se llama TortoiseBlame y tambin le muestra la fecha y hora de la
confirmacin y ell mensaje de registro cuando mueve el ratn por
encima del nmero de revisin.

BDB

Base de datos Berkeley. Un soporte de base de datos muy


probado para los repositorios, que no puede utilizarse en unidades
compartidas de red. Por defecto para repositorios anteriores a la
versin 1.2.

Bloqueo

When you take out a lock on a versioned item, you mark it in the
repository as non-committable, except from the working copy where
the lock was taken out.

Cambiar

De la misma forma que Actualizar-a-la-revisin cambia la ventana


temporal de una copia de trabajo para que quede como estuvo en un
punto diferente de su historia, Cambiar cambia la ventana espacial
de una copia de trabajo para que apunte a una parte diferente del
repositorio. Es particularmente til cuando est trabajando en troncos
y ramas en los que slo hay unos pocos ficheros diferentes. Puede
cambiar su copia de trabajo entre los dos y slo se transferirn los
ficheros cambiados.

Confirmar

Este comando de Subversion se utiliza para pasar los cambios desde


su copia de trabajo local al repositorio, creando una nueva revisin
en el repositorio.

Conflicto

Cuando los cambios desde el repositorio se mezclan con los cambios


locales, a veces esos cambios ocurren en las mismas lneas. En
este caso Subversion no puede decidir automticamente qu versin
utilizar, y se dice que el fichero est en conflicto. Tiene que editar
el fichero manualmente y resolver el conflicto antes de que pueda
confirmar ms cambios.

Copia de trabajo

Esta es su caja de arena local, el rea donde trabaja con los ficheros
versionados, y normalmente se encuentra en su disco duro local.
Puede crear una copia de trabajo al Obtener desde un repositorio,
y devolver sus cambios al repositorio utilizando Confirmar.

Copiar

En un repositorio de Subversion puede crear una copia de un nico


fichero o un rbol completo. Estos se implementan como copias
baratas que actan un poco como un enlace al original en el sentido
de que casi no ocupan espacio. Haciendo una copia preserva la
historia del tem en la copia, por lo que puede rastrear los cambios
que se hicieron antes de que ocurriera la copia.

177

Glosario

Diff

Abreviatura de Mostrar diferencias. Muy til cuando desea ver


exactamente qu cambios se han hecho.

Eliminar

When you delete a versioned item (and commit the change) the item
no longer exists in the repository after the committed revision. But
of course it still exists in earlier repository revisions, so you can still
access it. If necessary, you can copy a deleted item and resurrect
it complete with history.

Exportar

Este comando produce una copia de una carpeta versionada, igual


que una copia de trabajo pero sin los directorios locales .svn.

FSFS

A proprietary Subversion filesystem backend for repositories. Can


be used on network shares. Default for 1.2 and newer repositories.

Fusionar

El proceso por el cual los cambios del repositorio se aaden a su


copia de trabajo sin interrumpir cualquier cambio que haya realizado
ya localmente. A veces estos cambios no se pueden reconciliar
automticamente, y se dice que la copia de trabajo est en conflicto.
Las fusiones ocurren automticamente cuando actualiza su copia de
trabajo. Tambin puede fusionar cambios especficos desde otras
ramas utilizando el comando Fusionar de TortoiseSVN.

GPO

Objeto de poltica de grupo

Historial

Muestra la historia de las revisiones de un fichero o carpeta. Tambin


se conoce como Registro.

Importar

Comando de Subversion para importar una jerarqua de carpetas


completa en el repositorio en una nica revisin.

Limpieza

Citando el libro de Subversion: Limpia recursivamente la copia de


trabajo, eliminando los bloqueos y continuando las operaciones sin
terminar. Si alguna vez obtiene un error copia de trabajo
bloqueada, ejecute este comando para eliminar los bloqueos y
conseguir que su copia de trabajo vuelva a un estado usable de
nuevo. Tenga en cuenta que en este contexto bloqueado se refiere
a un bloqueo del sistema de ficheros local, no a bloqueos del
repositorio.

Obtener

Un comando de Subversion que crea una copia local de trabajo en


un directorio vaco al descargar los ficheros versionados desde el
repositorio.

Parche

Si una copia de trabajo tiene cambios nicamente en ficheros de


texto, es posible utilizar el comando Diff de Subversion para generar
un nico fichero con el resmen de esos cambios en el formato
de Diff unificado. Un fichero de este tipo a menudo se denomina
Parche, y puede ser enviado por email a otro (o a una lista de
correo) y apllicado en otra copia de trabajo. Alguien sin acceso de
confirmacin puede hacer cambios y enviar un fichero de parche para
que lo aplique un confirmador autorizado. O si no est seguro de un
cambio, puede enviar el parche a otros para que lo revisen.

Propiedad

Adems de versionar sus directorios y ficheros, Subversion


le permite aadir metainformacin versionada - llamadas
propiedades para cada uno de sus directorios y ficheros
versionados. Cada propiedad tiene un nombre y un valor, como
un entrada del registro. Subversion tiene algunas propiedades

178

Glosario

especiales que utiliza internamente, como svn:eol-style.


TortoiseSVN tambitsvn:logminsize. Puede a
Propiedad de revisin (revprop)

Al igual que los ficheros pueden tener propiedades, las revisiones


del repositorio tambin. Algunas revprops especiales se aaden
automticamente cuando se crea la revisin; son: svn:date
svn:author
svn:log que representan la fecha/hora de
la confirmacin, el confirmador y el mensaje de registro,
respectivamente. Estas propiedades pueden editarse, pero no estn
versionadas, por lo que cualquier cambio es permanente y no puede
deshacerse.

Rama

A term frequently used in revision control systems to describe what


happens when development forks at a particular point and follows 2
separate paths. You can create a branch off the main development
line so as to develop a new feature without rendering the main line
unstable. Or you can branch a stable release to which you make only
bug fixes, while new developments take place on the unstable trunk.
In Subversion a branch is implemented as a cheap copy.

Registro

Muestra la historia de las revisiones de un fichero o carpeta. Tambin


se conoce como Historial.

Relocalizar

Si su repositorio se mueve, quizs porque lo ha movido a un


directorio diferente en su servidor, o el nombre de dominio del
servidor ha cambiado, necesitar relocalizar su copia de trabajo
para que sus URLs de repositorio apunten al nuevo lugar.
Nota: slo debera utilizar este comando si su copia de trabajo apunta
al mismo lugar en el mismo repositorio, pero es el propio repositorio
el que se ha movido. En cualquier otra circunstancia probablemente
necesita el comando Cambiar en su lugar.

repositorio

Un repositorio es un lugar central donde se almacenan y mantienen


los datos. Un repositorio puede ser un lugar donde se encuentran
mltiples bases de datos o ficheros para distribuirlos en una red, o un
repositorio puede ser un lugar directamente accesible por el usuario
sin tener que viajar por una red.

Resolver

Cuando los ficheros en una copia de trabajo se quedan en un estado


de conflicto tras una fusin, estos conflictos deben arreglarse por
un humano utilizando un editor (o quizs TortoiseMerge). Este
proceso se denomina Resolviendo conflictos. Cuando finalice,
marque los ficheros con conflictos como resueltos, y eso le permitir
confirmarlos.

Revertir

Subversion maniene una copia local prstina de cada fichero tal y


como estaban cuando actualiz su copia de trabajo por ltima vez.
Si ha hecho cambios y decide que quiere deshacelros, puede utilizar
el comando revertir para volver a la copia prstina.

Revisin

Cada vez que confirma un conjunto de cambios, crea una nueva


revisin en el repositorio. Cada revisin representa el estado del
rbol del repositorio en un cierto punto de su historia. Si desea volver
en el tiempo para examinar el repositorio tal y como estaba en la
revisin N.
En otro sentido, una revisin puede referirse al conjunto de cambios
que se hicieron cuando esa revisin se cre.

179

Glosario

revisin BASE

La revisin base actual de un fichero o una carpeta en su copia de


trabajo. Esta es la revisin en la que estaba el fichero o la carpeta
cuando se hizo la ltima operacin de obtener, actualizar o confirmar.
La revisin BASE normalmente no equivale a la revisin HEAD.

revisin HEAD

La ltima revisin de un fichero o una carpeta en el repositorio.

SVN

Una abreviatura muy usada para Subversion.


El nombre del protocolo personalizado de Subversion que utiliza el
servidor de repositorios svnserve.

180

ndice
Smbolos
'copia de trabajo' no versionada, 115

A
Acceso, 33
acceso directo, 155
acciones en el lado del servidor, 110
actualizar, 53, 152
add files to repository, 42
alabanza, 107
aadir, 77
anotar, 107
Apache, 16
arrastrar con el botn derecho, 40
arrastrar-y-soltar, 40
autentificacin, 41
Autentificacin mltiple, 22
auto-props, 90
automatizacin, 160, 163
autora, 107
Autorizacin, 20

B
bloqueando, 103

C
cach de registro, 137
cambiar, 94
cambios, 154
carpeta .svn, 144
carpeta _svn, 144
case change, 83
changelist, 61
CLI,
click con el botn derecho, 38
cliente de lnea de comandos,
Columnas del explorador, 58
COM,
comparar, 73
comparar ficheros, 154
comparar revisiones, 74
comprobacin de actualizacin, 157
comprobar nueva versin, 157
concordancia de patrones, 80
configuracin, 122
confirmar, 49, 49
conflicto, 9, 55
conflictos de fusin, 101
control de errores, 117
control de versiones,
controlador de dominio, 21, 157
copia de seguridad, 35
copia de trabajo, 10
copiar, 92, 110

copiar ficheros, 78
corrector ortogrfico, 3
Crear
Cliente de lnea de comandos, 32
TortoiseSVN, 32
crear copia de trabajo, 46
crear repositorio, 32

D
desenganchar del repositorio, 156
deshabilitar funciones, 158
deshacer, 85, 153
deshacer cambio, 153
deshacer confirmacin, 153
despliegue, 157
desversionar, 116, 156
diccionario, 3
diferenciando, 60
diferenciar, 73, 106
diferenciar imgenes, 75
diff unificado, 106
dominio de Windows, 21

E
editar registro/autor, 69
eliminar, 82, 82
eliminar versionado, 156
enlace, 36
enlace de obtener, 36
entradas de men contextual, 158
enviar cambios, 49
estadsticas, 70
estado, 56, 58
estado de la copia de trabajo, 56
etiqueta, 78, 92
expandir palabras claves, 88
expansin de comodines, 80
explorador, 1
exportar, 115
exportar cambios, 74
externos, 44, 154
extraccin de versin,

F
FAQ,
ficheros especiales, 44
ficheros temporales, 42
ficheros/carpetas no versionados, 79
filtro, 70
fusionar, 95
dos rboles, 98
rango de revisiones, 96
reintegrar, 98

G
ganchos, 36
ganchos cliente, 140

181

ndice

GPO, 157
grfico, 113
grfico de revisin, 113

H
herramientas de diferenciacin, 76
herramientas de fusin, 76
historial, 63

I
iconos, 56
ignorar, 79
ignorar global, 123
importar, 42
importar en el sitio, 44
ndice de proyectos, 20
instalacin, 3
interfaz COM de SubWCRev, 148

patrn de ignorar, 123


polticas de grupo, 157, 158
prioridad de sobreimpresin, 171
projectos ASP, 158
projectos de vendedores, 154
propiedades, 86
propiedades de proyecto, 91
Propiedades de TortoiseSVN, 91
proyectos comunes, 154

Libro de Subversion,
limpieza, 86
lnea de comandos, 160, 163

rama, 78, 92
registro, 63, 144
registro de fusin, 101
relocalizar, 117
renombrar, 83, 110, 152
renombrar ficheros, 78
reorganizar, 152
repositorio, 5, 42
repositorios externos, 44
resolver, 55
revertir, 85, 153
revisin, 12, 113
rutas UNC, 33

manejador de arrastre, 40
marcar una entrega, 92
maximizar, 42
mensaje de registro, 152, 152
mensaje vaco, 152
mensajes de confirmacin, 63
mensajes de registro, 63
Men contextual, 38
merge reintegrate, 102
merge tracking log, 68
modificaciones, 58
mod_authz_svn, 17, 20
mover, 83
mover el servidor, 117
mover ficheros, 78
moviendo, 152
msi, 157

N
navegador de repositorios, 110
NTLM, 21
nmero de versin en los ficheros,

O
obtener, 46
obtener cambios, 53

P
packs de idioma, 3
palabras claves, 88
parche, 106

SASL, 29
scripts gancho, 36, 140
scripts gancho en el lado del servidor, 36
seguimiento de bugs, 117
seguimiento de incidencias, 117
seguir de bugs, 117
servidor movido, 117
servidor proxy, 132
shell de Windows, 1
sitio web, 36
sobreimpresiones, 56, 171
slo lectura, 103
sonidos, 122
SSL, 23
SSPI, 21
Subversion properties, 87
SubWCRev,
SVNParentPath, 18, 20
SVNPath, 18
svnserve, 26, 27
SVN_ASP_DOT_NET_HACK, 158

T
TortoiseIDiff, 75
traducciones, 3

U
Unidad de red, 33
unidades SUBST, 131
URL cambiada, 117
URL del repositorio cambiada, 117

182

ndice

V
ver cambios, 56
versin, 157
versionar ficheros nuevos, 77
ViewCS, 121
vnculo TortoiseSVN, 36
visor de repositorios, 121
visor de servidores, 110
vista web, 121
VS2003, 158

W
WebDAV, 16

183

Вам также может понравиться