hgbook
diff es/mq.tex @ 448:c17848cfbf75
Translated a few more MQ paragraphs
author | Igor TAmara <igor@tamarapatino.org> |
---|---|
date | Fri Dec 12 07:45:58 2008 -0500 (2008-12-12) |
parents | 93e7700c0322 |
children | 9b3cc9f398f9 |
line diff
1.1 --- a/es/mq.tex Wed Dec 10 22:51:01 2008 -0500 1.2 +++ b/es/mq.tex Fri Dec 12 07:45:58 2008 -0500 1.3 @@ -668,7 +668,7 @@ 1.4 parches. Los apliqué sobre un repositorio del núcleo de Linux con 1.5 todas las 27.472 revisiones entre 2.6.12-rc2 y 2.6.17. 1.6 1.7 -En mi viejo y lento portátil, logré aplicar 1.8 +En mi portátil antiguo y lento, logré aplicar 1.9 \hgcmdargs{qpush}{\hgxopt{mq}{qpush}{-a}} a los 1.738 parches en 3.5 1.10 minutos, y \hgcmdargs{qpop}{\hgxopt{mq}{qpop}{-a}} en 30 segundos. 1.11 (En un portátil más nuevo, el tiempo para introducir todos los 1.12 @@ -700,100 +700,104 @@ 1.13 esto significa que el primer parche es cero, el segundo es uno y así 1.14 sucesivamente. 1.15 1.16 -\section{Updating your patches when the underlying code changes} 1.17 +\section{Actualiar los parches cuando el código cambia} 1.18 \label{sec:mq:merge} 1.19 1.20 -It's common to have a stack of patches on top of an underlying 1.21 -repository that you don't modify directly. If you're working on 1.22 -changes to third-party code, or on a feature that is taking longer to 1.23 -develop than the rate of change of the code beneath, you will often 1.24 -need to sync up with the underlying code, and fix up any hunks in your 1.25 -patches that no longer apply. This is called \emph{rebasing} your 1.26 -patch series. 1.27 - 1.28 -The simplest way to do this is to \hgcmdargs{qpop}{\hgxopt{mq}{qpop}{-a}} 1.29 -your patches, then \hgcmd{pull} changes into the underlying 1.30 -repository, and finally \hgcmdargs{qpush}{\hgxopt{mq}{qpop}{-a}} your 1.31 -patches again. MQ will stop pushing any time it runs across a patch 1.32 -that fails to apply during conflicts, allowing you to fix your 1.33 -conflicts, \hgxcmd{mq}{qrefresh} the affected patch, and continue pushing 1.34 -until you have fixed your entire stack. 1.35 - 1.36 -This approach is easy to use and works well if you don't expect 1.37 -changes to the underlying code to affect how well your patches apply. 1.38 -If your patch stack touches code that is modified frequently or 1.39 -invasively in the underlying repository, however, fixing up rejected 1.40 -hunks by hand quickly becomes tiresome. 1.41 - 1.42 -It's possible to partially automate the rebasing process. If your 1.43 -patches apply cleanly against some revision of the underlying repo, MQ 1.44 -can use this information to help you to resolve conflicts between your 1.45 -patches and a different revision. 1.46 - 1.47 -The process is a little involved. 1.48 +Es común contar con una pila de parches sobre un repositorio que usted 1.49 +no modifica directamente. Si está trabajando en cambios de código de 1.50 +otros, o en una característica que tarda bastante en desarrollarse 1.51 +comparada con la tasa de cambio del código sobre la cual se está 1.52 +trabajando, necesitará sincronizarse con el código, y ajustar 1.53 +cualquier trozo en sus parches que ya no estén al día. A esto se le 1.54 +llama hacer \emph{rebase} a su serie de parches. 1.55 + 1.56 +La vía más sencilla de hacerlo es con \hgcmdargs{qpop}{\hgxopt{mq}{qpop}{-a}} 1.57 +sobre sus parches, después hacer \hgcmd{pull} de los cambios en el 1.58 +repositorio, y finalmente hacer 1.59 +\hgcmdargs{qpush}{\hgxopt{mq}{qpop}{-a}} con sus parches de nuevo. MQ 1.60 +dejará de de introducir parches siempre que llegue a un parche que no se pueda 1.61 +aplicar debido a un conflicto, permitiéndole a usted arreglarlo, 1.62 +aplicar \hgxcmd{mq}{qrefresh} al parche afectado y continuar 1.63 +introduciendo hasta que haya arreglado la pila completa. 1.64 + 1.65 +Esta aproximación es sencilla y funciona bien si no espera cambios en 1.66 +el código original que afecte en gran medida los parches que usted 1.67 +esté aplicando. Si su pila de parches toca código que es modificado 1.68 +frecuentemente o de forma invasiva sobre el código subyacente, 1.69 +arreglar trozos manualmente se vuelve desgastante. 1.70 + 1.71 +Es posible automatizar de forma parcial el proceso de rebase. Si sus 1.72 +parches se aplican limpiamente sobre algunas revisiones del 1.73 +repositorio subyacente, MQ puede usar esta información para ayudarle a 1.74 +a resolver conflictos entre sus parches y una revisión distinta. 1.75 + 1.76 +El proceso resulta un poco complejo: 1.77 \begin{enumerate} 1.78 -\item To begin, \hgcmdargs{qpush}{-a} all of your patches on top of 1.79 - the revision where you know that they apply cleanly. 1.80 -\item Save a backup copy of your patch directory using 1.81 - \hgcmdargs{qsave}{\hgxopt{mq}{qsave}{-e} \hgxopt{mq}{qsave}{-c}}. This prints 1.82 - the name of the directory that it has saved the patches in. It will 1.83 - save the patches to a directory called 1.84 - \sdirname{.hg/patches.\emph{N}}, where \texttt{\emph{N}} is a small 1.85 - integer. It also commits a ``save changeset'' on top of your 1.86 - applied patches; this is for internal book-keeping, and records the 1.87 - states of the \sfilename{series} and \sfilename{status} files. 1.88 -\item Use \hgcmd{pull} to bring new changes into the underlying 1.89 - repository. (Don't run \hgcmdargs{pull}{-u}; see below for why.) 1.90 -\item Update to the new tip revision, using 1.91 - \hgcmdargs{update}{\hgopt{update}{-C}} to override the patches you 1.92 - have pushed. 1.93 -\item Merge all patches using \hgcmdargs{qpush}{\hgxopt{mq}{qpush}{-m} 1.94 - \hgxopt{mq}{qpush}{-a}}. The \hgxopt{mq}{qpush}{-m} option to \hgxcmd{mq}{qpush} 1.95 - tells MQ to perform a three-way merge if the patch fails to apply. 1.96 +\item Para comenzar, haga \hgcmdargs{qpush}{-a} sobre todos los 1.97 + parches que usted sepa se aplican limpiamente. 1.98 +\item Guarde una copia de seguridad de su directorio de parches con 1.99 + \hgcmdargs{qsave}{\hgxopt{mq}{qsave}{-e} \hgxopt{mq}{qsave}{-c}}. 1.100 + Esto imprime el nombre del directorio en el cual se han guardado los 1.101 + parches. Guardará los parches en un directorio llamado 1.102 + \sdirname{.hg/patches.\emph{N}}, donde \texttt{\emph{N}} es un 1.103 + entero pequeño. También consigna un ``conjunto de cambios de 1.104 + seguridad'' sobre sus parches aplicados; esto es para mantener el 1.105 + histórico, y guarda los estados de los ficheros \sfilename{series} 1.106 + y \sfilename{status}. 1.107 +\item Use \hgcmd{pull} para traer los nuevos cambios en el repositorio 1.108 + subyacente. (No ejecute \hgcmdargs{pull}{-u}; vea más adelante por qué.) 1.109 +\item Actualice a la nueva revisión punta con 1.110 + \hgcmdargs{update}{\hgopt{update}{-C}} para sobreescribir los 1.111 + parches que haya introducido. 1.112 +\item Fusione todos los parches con \hgcmdargs{qpush}{\hgxopt{mq}{qpush}{-m} 1.113 + \hgxopt{mq}{qpush}{-a}}. La opción \hgxopt{mq}{qpush}{-m} de \hgxcmd{mq}{qpush} 1.114 + le indica a MQ que haga una fusión que involucra tres fuentes si el 1.115 + parche falla al aplicarse. 1.116 \end{enumerate} 1.117 1.118 -During the \hgcmdargs{qpush}{\hgxopt{mq}{qpush}{-m}}, each patch in the 1.119 -\sfilename{series} file is applied normally. If a patch applies with 1.120 -fuzz or rejects, MQ looks at the queue you \hgxcmd{mq}{qsave}d, and 1.121 -performs a three-way merge with the corresponding changeset. This 1.122 -merge uses Mercurial's normal merge machinery, so it may pop up a GUI 1.123 -merge tool to help you to resolve problems. 1.124 - 1.125 -When you finish resolving the effects of a patch, MQ refreshes your 1.126 -patch based on the result of the merge. 1.127 - 1.128 -At the end of this process, your repository will have one extra head 1.129 -from the old patch queue, and a copy of the old patch queue will be in 1.130 -\sdirname{.hg/patches.\emph{N}}. You can remove the extra head using 1.131 -\hgcmdargs{qpop}{\hgxopt{mq}{qpop}{-a} \hgxopt{mq}{qpop}{-n} patches.\emph{N}} 1.132 -or \hgcmd{strip}. You can delete \sdirname{.hg/patches.\emph{N}} once 1.133 -you are sure that you no longer need it as a backup. 1.134 - 1.135 -\section{Identifying patches} 1.136 - 1.137 -MQ commands that work with patches let you refer to a patch either by 1.138 -using its name or by a number. By name is obvious enough; pass the 1.139 -name \filename{foo.patch} to \hgxcmd{mq}{qpush}, for example, and it will 1.140 -push patches until \filename{foo.patch} is applied. 1.141 - 1.142 -As a shortcut, you can refer to a patch using both a name and a 1.143 -numeric offset; \texttt{foo.patch-2} means ``two patches before 1.144 -\texttt{foo.patch}'', while \texttt{bar.patch+4} means ``four patches 1.145 -after \texttt{bar.patch}''. 1.146 - 1.147 -Referring to a patch by index isn't much different. The first patch 1.148 -printed in the output of \hgxcmd{mq}{qseries} is patch zero (yes, it's one 1.149 -of those start-at-zero counting systems); the second is patch one; and 1.150 -so on. 1.151 - 1.152 -MQ also makes it easy to work with patches when you are using normal 1.153 -Mercurial commands. Every command that accepts a changeset ID will 1.154 -also accept the name of an applied patch. MQ augments the tags 1.155 -normally in the repository with an eponymous one for each applied 1.156 -patch. In addition, the special tags \index{tags!special tag 1.157 - names!\texttt{qbase}}\texttt{qbase} and \index{tags!special tag 1.158 - names!\texttt{qtip}}\texttt{qtip} identify the ``bottom-most'' and 1.159 -topmost applied patches, respectively. 1.160 +Durante el \hgcmdargs{qpush}{\hgxopt{mq}{qpush}{-m}}, cada parche en 1.161 +el fichero \sfilename{series} se aplica normalmente. Si un parche se 1.162 +aplica difusamente o se niea a aplicarse, MQ consulta la cola que 1.163 +usted guardó con \hgxcmd{mq}{qsave}, y aplica una fusión de tres con 1.164 +el correspondiente conjunto de cambios. Esta fusión usa la maquinaria 1.165 +de Mercurial, por lo tanto puede mostrar una herramienta de fusión GUI 1.166 +para ayudarle a resolver los problemas. 1.167 + 1.168 +Cuando termine de resolver los efectos de un parche, MQ refrescará su 1.169 +parche basado en el resultado de la fusión. 1.170 + 1.171 +Al final de este proceso, su repositorio tendrá una cabeza extra de la 1.172 +antigua cola de parches, y una copia de la cola de parches anterio 1.173 +estará en \sdirname{.hg/patches.\emph{N}}. Puede eliminar la cabeza 1.174 +extra con \hgcmdargs{qpop}{\hgxopt{mq}{qpop}{-a} \hgxopt{mq}{qpop}{-n} patches.\emph{N}} 1.175 +o \hgcmd{strip}. Puede eliminar \sdirname{.hg/patches.\emph{N}} una 1.176 +vez que esté seguro de que no lo necesita más como copia de seguridad. 1.177 + 1.178 +\section{Identificar parches} 1.179 + 1.180 +Las órdenes de MQ le permiten trabajar refiriéndose al nombre del 1.181 +parche o al número. Es obvio hacerlo por el nombre; por ejemplo se 1.182 +pasa el nombre \filename{foo.patch} a \hgxcmd{mq}{qpush}, que 1.183 +introducirá los parches hasta que \filename{foo.patch} se aplique. 1.184 + 1.185 +Para hacerlo más corto, puede referirse a un parche con un nombre y un 1.186 +corrimiento de número; por ejemplo, \texttt{foo.patch-2} significa 1.187 +``dos parches antes de \texttt{foo.patch}'', mientras que 1.188 +\texttt{bar.patch+4} significa ``cuatro parches después de \texttt{bar.patch}''. 1.189 + 1.190 +Referirse a un parche por su índice no es muy diferente. El primer 1.191 +parche que se imprime en la salida de \hgxcmd{mq}{qseries} es el 1.192 +parche cero(si, es el primero en los sistemas que comienzan su conteo 1.193 +en cero); el segundo parche es uno y así sucesivamente. 1.194 + 1.195 +MQ facilita el trabajo cuando está usando órdenes normales de 1.196 +Mercurial. Cada comando que acepte Identificadores de conjuntos de 1.197 +cambios también aceptará el nombre de un parche aplicado. MQ aumenta 1.198 +los tags normalmente en el repositorio con un distintivo para cada 1.199 +parche aplicado. Adicionalmente, los tags especiales \index{tags!special tag 1.200 + names!\texttt{qbase}}\texttt{qbase} y \index{tags!special tag 1.201 + names!\texttt{qtip}}\texttt{qtip} identifican los parches 1.202 +``primero'' y último, respectivamente. 1.203 1.204 These additions to Mercurial's normal tagging capabilities make 1.205 dealing with patches even more of a breeze.