hgbook

diff es/mq-collab.tex @ 486:d1962e8a986f

corrected a typo
author Javier Rojas <jerojasro@devnull.li>
date Mon Jan 05 23:57:11 2009 -0500 (2009-01-05)
parents 6cf30b3ed48f
children b1ae672fd92b
line diff
     1.1 --- a/es/mq-collab.tex	Mon Jan 05 00:18:31 2009 -0500
     1.2 +++ b/es/mq-collab.tex	Mon Jan 05 23:57:11 2009 -0500
     1.3 @@ -57,38 +57,44 @@
     1.4  Hay dos maneras estándar de mantener una porción de software que debe
     1.5  funcionar en muchos entornos diferentes.
     1.6  
     1.7 -The first is to maintain a number of branches, each intended for a
     1.8 -single target.  The trouble with this approach is that you must
     1.9 -maintain iron discipline in the flow of changes between repositories.
    1.10 -A new feature or bug fix must start life in a ``pristine'' repository,
    1.11 -then percolate out to every backport repository.  Backport changes are
    1.12 -more limited in the branches they should propagate to; a backport
    1.13 -change that is applied to a branch where it doesn't belong will
    1.14 -probably stop the driver from compiling.
    1.15 -
    1.16 -The second is to maintain a single source tree filled with conditional
    1.17 -statements that turn chunks of code on or off depending on the
    1.18 -intended target.  Because these ``ifdefs'' are not allowed in the
    1.19 -Linux kernel tree, a manual or automatic process must be followed to
    1.20 -strip them out and yield a clean tree.  A code base maintained in this
    1.21 -fashion rapidly becomes a rat's nest of conditional blocks that are
    1.22 -difficult to understand and maintain.
    1.23 -
    1.24 -Neither of these approaches is well suited to a situation where you
    1.25 -don't ``own'' the canonical copy of a source tree.  In the case of a
    1.26 -Linux driver that is distributed with the standard kernel, Linus's
    1.27 -tree contains the copy of the code that will be treated by the world
    1.28 -as canonical.  The upstream version of ``my'' driver can be modified
    1.29 -by people I don't know, without me even finding out about it until
    1.30 -after the changes show up in Linus's tree.  
    1.31 -
    1.32 -These approaches have the added weakness of making it difficult to
    1.33 -generate well-formed patches to submit upstream.
    1.34 -
    1.35 -In principle, Mercurial Queues seems like a good candidate to manage a
    1.36 -development scenario such as the above.  While this is indeed the
    1.37 -case, MQ contains a few added features that make the job more
    1.38 -pleasant.
    1.39 +La primera es mantener varias ramas, cada una pensada para un único
    1.40 +entorno. El problema de esta aproximación es que usted debe tener una
    1.41 +disciplina férrea con el flujo de cambios entre repositorios. Una
    1.42 +nueva característica o un arreglo de fallo deben empezar su vida en un
    1.43 +repositorio ``prístino'', y luego propagarse a cada repositorio de
    1.44 +backport. Los cambios para backports están más limitados respecto a
    1.45 +las ramas a las que deberían propagarse; un cambio para backport que
    1.46 +es aplicado a una rama en la que no corresponde probablemente hará que
    1.47 +el controlador no compile.
    1.48 +
    1.49 +La segunda es mantener un único árbol de código fuente lleno de
    1.50 +declaraciones que activen o desactiven secciones de código dependiendo
    1.51 +del entorno objetivo. Ya que estos ``ifdefs'' no están permitidos en
    1.52 +el árbol del kernel de Linux, debe seguirse algún proceso manual o
    1.53 +automático para eliminarlos y producir un árbol limpio. Una base de
    1.54 +código mantenida de esta manera se convierte rápidamente en un nido de
    1.55 +ratas de bloques condicionales que son difíciles de entender y
    1.56 +mantener.
    1.57 +
    1.58 +%TODO canónica?
    1.59 +Ninguno de estos enfoques es adecuado para situaciones en las que
    1.60 +usted no es ``dueño'' de la copia canónica de un árbol de fuentes. En
    1.61 +el caso de un controlador de Linux que es distribuido con el kernel
    1.62 +estándar, el árbol de Linux contiene la copia del código que será
    1.63 +considerada por el mundo como la canónica. La versión oficial de
    1.64 +``mi'' controlador puede ser modificada por gente que no conozco, sin
    1.65 +que yo siquiera me entere de ello hasta después de que los cambios
    1.66 +aparecen en el árbol de Linus.
    1.67 +
    1.68 +Estos enfoques tienen la debilidad adicional de dificultar la
    1.69 +%TODO upstream. no no es río arriba
    1.70 +generación de parches bien formados para enviarlos a la versión
    1.71 +oficial.
    1.72 +
    1.73 +En principio, las Colas de Mercurial parecen ser un buen candidato
    1.74 +para administrar un escenario de desarrollo como el de arriba. Aunque
    1.75 +este es de hecho el caso, MQ tiene unas cuantas características
    1.76 +adicionales que hacen el trabajo más agradable.
    1.77  
    1.78  \section{Conditionally applying patches with 
    1.79    guards}