Mercurial > hgbook
comparison es/branch.tex @ 614:aa01d35ac59f
replaced several instances of "los tags" with "las etiquetas", corrected typos and so on
author | Javier Rojas <jerojasro@devnull.li> |
---|---|
date | Sun, 18 Jan 2009 21:01:13 -0500 |
parents | 6e427210bfe0 |
children | 9da096de3c52 |
comparison
equal
deleted
inserted
replaced
613:db12ab3b3b25 | 614:aa01d35ac59f |
---|---|
1 \chapter{Administración de Versiones y desarrollo ramificado} | 1 %% vim: tw=70 encoding=utf8 |
2 \chapter{Administración de versiones y desarrollo ramificado} | |
2 \label{chap:branch} | 3 \label{chap:branch} |
3 | 4 |
4 Mercurial ofrece varios mecanismos que le permitirán administrar un | 5 Mercurial ofrece varios mecanismos que le permitirán administrar un |
5 proyecto que avanza en múltiples frentes simultáneamente. Para | 6 proyecto que avanza en múltiples frentes simultáneamente. Para |
6 entender estos mecanismos, demos un vistazo a la estructura usual de | 7 entender estos mecanismos, demos un vistazo a la estructura usual de |
7 un proyecto de software. | 8 un proyecto de software. |
8 | 9 |
9 Muchos proyectos de software liberan una versión``mayor'' que contiene | 10 Muchos proyectos de software liberan una versión ``mayor'' que contiene |
10 nuevas características substanciales. En paralelo, pueden liberar | 11 nuevas características substanciales. En paralelo, pueden liberar |
11 versiones ``menores''. Estas usualmente son idénticas a las | 12 versiones ``menores''. Usualmente éstas son idénticas a las |
12 versiones mayores en las cuales están basadas, pero con arreglo de | 13 versiones mayores en las cuales están basadas, pero con arreglos para |
13 algunos fallos. | 14 algunos fallos. |
14 | 15 |
15 En este capítulo, comenzaremos hablando de cómo mantener registro de | 16 En este capítulo, comenzaremos hablando de cómo mantener registro de |
16 las etapas del proyecto como las liberaciones de una | 17 las etapas del proyecto como las liberaciones de una |
17 versión. Continuaremos hablando del flujo de trabajo entre las | 18 versión. Continuaremos hablando del flujo de trabajo entre las |
19 independizar y administrar tal trabajo. | 20 independizar y administrar tal trabajo. |
20 | 21 |
21 \section{Dar un nombre persistente a una revisión} | 22 \section{Dar un nombre persistente a una revisión} |
22 | 23 |
23 Cuando se decide a otorgar a una revisión el nombre particular de una | 24 Cuando se decide a otorgar a una revisión el nombre particular de una |
24 ``versión'', es buena idea grabar la identidad para tal revisión. | 25 ``versión'', es buena idea grabar la identidad de tal revisión. |
25 Lo cual permitirá reproducir tal versión en una fecha posterior, o el | 26 Esto le permitirá reproducir dicha versión en una fecha posterior, |
26 propósito que se considere en ese momento (reproducir un fallo, portar | 27 para cualquiera que sea el |
28 propósito que se tenga en ese momento (reproducir un fallo, portar | |
27 a una nueva plataforma, etc). | 29 a una nueva plataforma, etc). |
28 \interaction{tag.init} | 30 \interaction{tag.init} |
29 | 31 |
30 Mercurial le permite dar un nombre permanente a cualquier revisión | 32 Mercurial le permite dar un nombre permanente a cualquier revisión |
31 usando la orden \hgcmd{tag}. Sin causa de sorpresa, esos nombres se llaman | 33 usando la orden \hgcmd{tag}. Sin causa de sorpresa, esos nombres se llaman |
32 ``tags''(etiquetas). | 34 ``tags'' (etiquetas). |
33 \interaction{tag.tag} | 35 \interaction{tag.tag} |
34 | 36 |
35 Un tag no es más que un ``nombre simbólico'' para una revisión. Los | 37 Una etiqueta no es más que un ``nombre simbólico'' para una revisión. Las |
36 tags existen únicamente para su conveniencia, dotándolo de una forma | 38 etiquetas existen únicamente para su conveniencia, brindándole una forma |
37 permanente y sencilla para referirse a una revisión; Mercurial no | 39 permanente y sencilla de referirse a una revisión; Mercurial no |
38 interpreta de ninguna manera los nombres de los tags que usted use. | 40 interpreta de ninguna manera los nombres de las etiquetas que usted use. |
39 Mercurial tampoco impone restricción alguna al nombre de un tag, más | 41 Mercurial tampoco impone restricción alguna al nombre de una etiqueta, más |
40 allá de lo necesario para asegurar que un tag puede parsearse sin | 42 allá de lo necesario para asegurar que una etiqueta pueda procesarse sin |
41 ambigüedades. El nombre de un tag no puede tener ninguno de los | 43 ambigüedades. El nombre de una etiqueta no puede tener ninguno de los |
42 caracteres siguientes: | 44 siguientes caracteres: |
43 \begin{itemize} | 45 \begin{itemize} |
44 \item Dos puntos (ASCII 58, ``\texttt{:}'') | 46 \item Dos puntos (ASCII 58, ``\texttt{:}'') |
45 \item Retroceso (return) (ASCII 13, ``\Verb+\r+'') | 47 \item Retorno de carro (return) (ASCII 13, ``\Verb+\r+'') |
46 \item Nueva línea (ASCII 10, ``\Verb+\n+'') | 48 \item Nueva línea (ASCII 10, ``\Verb+\n+'') |
47 \end{itemize} | 49 \end{itemize} |
48 | 50 |
49 Puede usar la orden \hgcmd{tags} para observar los tags presentes en | 51 Puede usar la orden \hgcmd{tags} para observar las etiquetas presentes en |
50 su repositorio. Al desplegarse, cada revisión marcada se identifica | 52 su repositorio. Al desplegarse, cada revisión marcada se identifica |
51 primero con su nombre, después el número de revisión y finalmente con | 53 primero con su nombre, después el número de revisión y finalmente con |
52 un hash único de la revisión. | 54 un hash único de la revisión. |
53 \interaction{tag.tags} | 55 \interaction{tag.tags} |
54 Note que \texttt{tip} aparece en la lista de \hgcmd{tags}. El tag | 56 Note que \texttt{tip} aparece en la lista de \hgcmd{tags}. El tag |
55 \texttt{tip} es un tag ``flotante'' especial, que identifica siempre | 57 \texttt{tip} es un tag ``flotante'' especial, que identifica siempre |
56 la revisión más nueva en el repositorio. | 58 la revisión más nueva en el repositorio. |
57 | 59 |
58 Al desplegar la orden \hgcmd{tags}, los tags se listan en orden | 60 Al desplegar la orden \hgcmd{tags}, las etiquetas se listan en orden |
59 inverso, por número de revisión. Lo que significa usualmente que los | 61 inverso, por número de revisión. Lo que significa usualmente que los |
60 tags más recientes se listan antes que los más antiguos. También | 62 tags más recientes se listan antes que los más antiguos. También |
61 significa que el tag \texttt{tip} siempre aparecerá como primer tag | 63 significa que el tag \texttt{tip} siempre aparecerá como primer tag |
62 listado al desplegar la orden \hgcmd{tags}. | 64 listado al desplegar la orden \hgcmd{tags}. |
63 | 65 |
82 días, es perfectamente razonable asignarle un tag a cada una de | 84 días, es perfectamente razonable asignarle un tag a cada una de |
83 ellas. Pero si tiene un sistema de construcción automática de binarios | 85 ellas. Pero si tiene un sistema de construcción automática de binarios |
84 que asegura que cada revisión puede generarse limpiamente, estaría | 86 que asegura que cada revisión puede generarse limpiamente, estaría |
85 introduciendo mucho ruido si se usara un tag para cada generación | 87 introduciendo mucho ruido si se usara un tag para cada generación |
86 exitosa. Más bien, podría usar tags para generaciones fallidas (en | 88 exitosa. Más bien, podría usar tags para generaciones fallidas (en |
87 caso de que estas sean raras!), o simplemente evitar los tags para | 89 caso de que estas sean raras!), o simplemente evitar las etiquetas para |
88 llevar cuenta de la posibilidad de generación de binarios. | 90 llevar cuenta de la posibilidad de generación de binarios. |
89 | 91 |
90 | 92 |
91 Si desea eliminar un tag que no desea, use | 93 Si desea eliminar un tag que no desea, use |
92 \hgcmdargs{tag}{--remove}. | 94 \hgcmdargs{tag}{--remove}. |
100 del tag, pero Mercurial no la usará. Por lo tanto no hay castigo al | 102 del tag, pero Mercurial no la usará. Por lo tanto no hay castigo al |
101 marcar con un tag una revisión incorrecta; lo único que debe hacer es | 103 marcar con un tag una revisión incorrecta; lo único que debe hacer es |
102 mover el tag hacia la revisión correcta tan pronto como localice el | 104 mover el tag hacia la revisión correcta tan pronto como localice el |
103 error. | 105 error. |
104 | 106 |
105 Mercurial almacena los tags en un archivo controlado por revisiones en | 107 Mercurial almacena las etiquetas en un archivo controlado por revisiones en |
106 su repositorio. Si ha creado tags, los encontrará en un archivo | 108 su repositorio. Si ha creado etiquetas, las encontrará en un archivo |
107 llamado \sfilename{.hgtags}. Cuando invoca la orden \hgcmd{tag}, | 109 llamado \sfilename{.hgtags}. Cuando invoca la orden \hgcmd{tag}, |
108 Mercurial modifica este archivo, y automáticamente hace commit del | 110 Mercurial modifica este archivo, y automáticamente hace consignación del |
109 cambio al mismo. Esto significa que cada vez que ejecuta \hgcmd{tag}, | 111 cambio al mismo. Esto significa que cada vez que ejecuta \hgcmd{tag}, |
110 verá el conjunto de cambios correspondiente en la salida de \hgcmd{log}. | 112 verá el conjunto de cambios correspondiente en la salida de \hgcmd{log}. |
111 \interaction{tag.tip} | 113 \interaction{tag.tip} |
112 | 114 |
113 \subsection{Manejo de conflictos entre tags durante una fusión} | 115 \subsection{Manejo de conflictos entre etiquetas durante una fusión} |
114 | 116 |
115 Es usual no tener que preocuparse por el archivo \sfilename{.hgtags}, | 117 Es usual no tener que preocuparse por el archivo \sfilename{.hgtags}, |
116 pero aveces hace su aparición durante una fusión. El formato del | 118 pero aveces hace su aparición durante una fusión. El formato del |
117 archivo es sencillo: Consiste de una serie de líneas. Cada línea | 119 archivo es sencillo: Consiste de una serie de líneas. Cada línea |
118 comienza con un hash de Conjunto de Cambios, seguido por un espacio, | 120 comienza con un hash de Conjunto de Cambios, seguido por un espacio, |
119 seguido por el nombre de un tag. | 121 seguido por el nombre de un tag. |
120 | 122 |
121 Si está resolviendo un conflicto en el archivo \sfilename{.hgtags} | 123 Si está resolviendo un conflicto en el archivo \sfilename{.hgtags} |
122 durante una fusión, hay un detalle para tener en cuenta al modificar | 124 durante una fusión, hay un detalle para tener en cuenta al modificar |
123 el archivo \sfilename{.hgtags}: | 125 el archivo \sfilename{.hgtags}: |
124 cuando Mercurial parsea los tags en el repositorio \emph{nunca} | 126 cuando Mercurial parsea las etiquetas en el repositorio \emph{nunca} |
125 lee la copia de trabajo del archivo \sfilename{.hgtags}. En cambio, | 127 lee la copia de trabajo del archivo \sfilename{.hgtags}. En cambio, |
126 lee la versión \emph{consignada más reciente} del archivo. | 128 lee la versión \emph{consignada más reciente} del archivo. |
127 | 129 |
128 Una consecuencia desafortunada de este diseño es que usted no puede | 130 Una consecuencia desafortunada de este diseño es que usted no puede |
129 verificar que su archivo \sfilename{.hgtags} fusionado es correcto hasta | 131 verificar que su archivo \sfilename{.hgtags} fusionado es correcto hasta |
152 \texttt{foo}, el nuevo clon \emph{no contendrá la historia que creo | 154 \texttt{foo}, el nuevo clon \emph{no contendrá la historia que creo |
153 el tag} que usó para clonar el repositorio. El resultado es que tendrá | 155 el tag} que usó para clonar el repositorio. El resultado es que tendrá |
154 exactamente el subconjunto correcto de la historia del proyecto en el | 156 exactamente el subconjunto correcto de la historia del proyecto en el |
155 nuevo repositorio, pero, \emph{no} el tag que podría haber esperado. | 157 nuevo repositorio, pero, \emph{no} el tag que podría haber esperado. |
156 | 158 |
157 \subsection{Cuando los tags permanentes son demasiado} | 159 \subsection{Cuando las etiquetas permanentes son demasiado} |
158 | 160 |
159 Dado que los tags de Mercurial están controlados por revisiones y se | 161 Dado que las etiquetas de Mercurial están controladas por revisiones y se |
160 llevan en la historia del proyecto, todas las personas involucradas | 162 llevan en la historia del proyecto, todas las personas involucradas |
161 verán los tags que usted haya creado. El hecho de dar nombres a las | 163 verán las etiquetas que usted haya creado. El hecho de dar nombres a las |
162 revisiones tiene usos más allá que simplemente hacer notar que la | 164 revisiones tiene usos más allá que simplemente hacer notar que la |
163 revisión \texttt{4237e45506ee} es realmente \texttt{v2.0.2}. Si está | 165 revisión \texttt{4237e45506ee} es realmente \texttt{v2.0.2}. Si está |
164 tratando de encontrar un bug sutil, posiblemente desearía colocar un | 166 tratando de encontrar un bug sutil, posiblemente desearía colocar un |
165 tag recordándole algo como ``Ana vió los síntomas con esta revisión''. | 167 tag recordándole algo como ``Ana vió los síntomas con esta revisión''. |
166 | 168 |