hgbook

diff es/mq-collab.tex @ 481:6cf30b3ed48f

translated some paragraphs
author Javier Rojas <jerojasro@devnull.li>
date Mon Jan 05 00:18:31 2009 -0500 (2009-01-05)
parents 7e52f0cc4516
children 039ed6f5935b
line diff
     1.1 --- a/es/mq-collab.tex	Sat Oct 18 15:44:41 2008 -0500
     1.2 +++ b/es/mq-collab.tex	Mon Jan 05 00:18:31 2009 -0500
     1.3 @@ -1,54 +1,61 @@
     1.4 -\chapter{Advanced uses of Mercurial Queues}
     1.5 +\chapter{Usos avanzados de las Colas de Mercurial}
     1.6  \label{chap:mq-collab}
     1.7  
     1.8 -While it's easy to pick up straightforward uses of Mercurial Queues,
     1.9 -use of a little discipline and some of MQ's less frequently used
    1.10 -capabilities makes it possible to work in complicated development
    1.11 -environments.
    1.12 -
    1.13 -In this chapter, I will use as an example a technique I have used to
    1.14 -manage the development of an Infiniband device driver for the Linux
    1.15 -kernel.  The driver in question is large (at least as drivers go),
    1.16 -with 25,000 lines of code spread across 35 source files.  It is
    1.17 -maintained by a small team of developers.
    1.18 -
    1.19 -While much of the material in this chapter is specific to Linux, the
    1.20 -same principles apply to any code base for which you're not the
    1.21 -primary owner, and upon which you need to do a lot of development.
    1.22 -
    1.23 -\section{The problem of many targets}
    1.24 -
    1.25 -The Linux kernel changes rapidly, and has never been internally
    1.26 -stable; developers frequently make drastic changes between releases.
    1.27 -This means that a version of the driver that works well with a
    1.28 -particular released version of the kernel will not even \emph{compile}
    1.29 -correctly against, typically, any other version.
    1.30 -
    1.31 -To maintain a driver, we have to keep a number of distinct versions of
    1.32 -Linux in mind.
    1.33 +Auunque es fácil aprender los usos más directos de las Colas de
    1.34 +Mercurial, tener algo de disciplina junto con algunas de las
    1.35 +capacidadees menos usadas de MQ hace posible trabajar en entornos de
    1.36 +desarrollo complejos.
    1.37 +
    1.38 +En este capítulo, usaré como ejemplo una técnica que he usado para
    1.39 +administrar el desarrollo de un controlador de dispositivo Infiniband
    1.40 +para el kernel de Linux. El controlador en cuestión es grande
    1.41 +(al menos en lo que se refiere a controladores), con 25,000 líneas de
    1.42 +código esparcidas en 35 ficheros fuente. Es mantenido por un equipo
    1.43 +pequeño de desarrolladores. 
    1.44 +
    1.45 +Aunque mucho del material en este capítulo es específico de Linux, los
    1.46 +mismos principios aplican a cualquier base de código de la que usted
    1.47 +no sea el propietario principal, y sobre la que usted necesita hacer
    1.48 +un montón de desarrollo.
    1.49 +
    1.50 +\section{El problema de múltiples objetivos}
    1.51 +
    1.52 +El kernel de Linux cambia con rapidez, y nunca ha sido estable
    1.53 +internamente; los desarrolladores hacen cambios drásticos entre
    1.54 +%TODO no encontré una traducción adecuada para "release". Por eso el
    1.55 +%cambio
    1.56 +versiones frecuentemente. Esto significa que una versión del
    1.57 +controlador que funciona bien con una versión particular del kernel ni
    1.58 +siquiera \emph{compilará} correctamente contra, típicamente, cualquier
    1.59 +otra versión.
    1.60 +
    1.61 +Para mantener un controlador, debemos tener en cuenta una buena
    1.62 +cantidad de versiones de Linux en mente.
    1.63  \begin{itemize}
    1.64 -\item One target is the main Linux kernel development tree.
    1.65 -  Maintenance of the code is in this case partly shared by other
    1.66 -  developers in the kernel community, who make ``drive-by''
    1.67 -  modifications to the driver as they develop and refine kernel
    1.68 -  subsystems.
    1.69 -\item We also maintain a number of ``backports'' to older versions of
    1.70 -  the Linux kernel, to support the needs of customers who are running
    1.71 -  older Linux distributions that do not incorporate our drivers.  (To
    1.72 -  \emph{backport} a piece of code is to modify it to work in an older
    1.73 -  version of its target environment than the version it was developed
    1.74 -  for.)
    1.75 -\item Finally, we make software releases on a schedule that is
    1.76 -  necessarily not aligned with those used by Linux distributors and
    1.77 -  kernel developers, so that we can deliver new features to customers
    1.78 -  without forcing them to upgrade their entire kernels or
    1.79 -  distributions.
    1.80 +\item Un objetivo es el árbol de desarrollo principal del kernel de
    1.81 +  Linux. En este caso el mantenimiento del código es compartido
    1.82 +  parcialmente por otros desarrolladores en la comunidad del kernel, 
    1.83 +  %TODO drive-by. 
    1.84 +  quienes hacen modificaciones ``de-afán'' al controlador a medida que 
    1.85 +  desarrollan y refinan subsistemas en el kernel.
    1.86 +  %TODO backport
    1.87 +\item También mantenemos algunos ``backports'' para versiones antiguas
    1.88 +  del kernel de Linux, para dar soporte a las necesidades de los
    1.89 +  clientes que están corriendo versiones antiguas de Linux que no
    1.90 +  incorporan nuestros controladores. (Hacer el \emph{backport} de un
    1.91 +  pedazo de código es modificarlo para que trabaje en una versión
    1.92 +  de su entorno objetivo anterior a aquella para la cual fue escrito.)
    1.93 +\item Finalmente, nosotros liberamos nuestro software de acuerdo a un
    1.94 +  cronograma que no necesariamente está alineado con el que usan los
    1.95 +  distribuidores de Linux y los desarrolladores del kernel, así que
    1.96 +  podemos entregar nuevas características a los clientes sin forzarlos
    1.97 +  a actualizar kernels completos o distribuciones.
    1.98  \end{itemize}
    1.99  
   1.100 -\subsection{Tempting approaches that don't work well}
   1.101 -
   1.102 -There are two ``standard'' ways to maintain a piece of software that
   1.103 -has to target many different environments.
   1.104 +\subsection{Aproximaciones tentadoras que no funcionan adecuadamente}
   1.105 +
   1.106 +Hay dos maneras estándar de mantener una porción de software que debe
   1.107 +funcionar en muchos entornos diferentes.
   1.108  
   1.109  The first is to maintain a number of branches, each intended for a
   1.110  single target.  The trouble with this approach is that you must