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.