comparison es/mq-collab.tex @ 580:6cf30b3ed48f

translated some paragraphs
author Javier Rojas <jerojasro@devnull.li>
date Mon, 05 Jan 2009 00:18:31 -0500
parents 7e52f0cc4516
children 039ed6f5935b
comparison
equal deleted inserted replaced
579:4e2ebef2c9a4 580:6cf30b3ed48f
1 \chapter{Advanced uses of Mercurial Queues} 1 \chapter{Usos avanzados de las Colas de Mercurial}
2 \label{chap:mq-collab} 2 \label{chap:mq-collab}
3 3
4 While it's easy to pick up straightforward uses of Mercurial Queues, 4 Auunque es fácil aprender los usos más directos de las Colas de
5 use of a little discipline and some of MQ's less frequently used 5 Mercurial, tener algo de disciplina junto con algunas de las
6 capabilities makes it possible to work in complicated development 6 capacidadees menos usadas de MQ hace posible trabajar en entornos de
7 environments. 7 desarrollo complejos.
8 8
9 In this chapter, I will use as an example a technique I have used to 9 En este capítulo, usaré como ejemplo una técnica que he usado para
10 manage the development of an Infiniband device driver for the Linux 10 administrar el desarrollo de un controlador de dispositivo Infiniband
11 kernel. The driver in question is large (at least as drivers go), 11 para el kernel de Linux. El controlador en cuestión es grande
12 with 25,000 lines of code spread across 35 source files. It is 12 (al menos en lo que se refiere a controladores), con 25,000 líneas de
13 maintained by a small team of developers. 13 código esparcidas en 35 ficheros fuente. Es mantenido por un equipo
14 14 pequeño de desarrolladores.
15 While much of the material in this chapter is specific to Linux, the 15
16 same principles apply to any code base for which you're not the 16 Aunque mucho del material en este capítulo es específico de Linux, los
17 primary owner, and upon which you need to do a lot of development. 17 mismos principios aplican a cualquier base de código de la que usted
18 18 no sea el propietario principal, y sobre la que usted necesita hacer
19 \section{The problem of many targets} 19 un montón de desarrollo.
20 20
21 The Linux kernel changes rapidly, and has never been internally 21 \section{El problema de múltiples objetivos}
22 stable; developers frequently make drastic changes between releases. 22
23 This means that a version of the driver that works well with a 23 El kernel de Linux cambia con rapidez, y nunca ha sido estable
24 particular released version of the kernel will not even \emph{compile} 24 internamente; los desarrolladores hacen cambios drásticos entre
25 correctly against, typically, any other version. 25 %TODO no encontré una traducción adecuada para "release". Por eso el
26 26 %cambio
27 To maintain a driver, we have to keep a number of distinct versions of 27 versiones frecuentemente. Esto significa que una versión del
28 Linux in mind. 28 controlador que funciona bien con una versión particular del kernel ni
29 siquiera \emph{compilará} correctamente contra, típicamente, cualquier
30 otra versión.
31
32 Para mantener un controlador, debemos tener en cuenta una buena
33 cantidad de versiones de Linux en mente.
29 \begin{itemize} 34 \begin{itemize}
30 \item One target is the main Linux kernel development tree. 35 \item Un objetivo es el árbol de desarrollo principal del kernel de
31 Maintenance of the code is in this case partly shared by other 36 Linux. En este caso el mantenimiento del código es compartido
32 developers in the kernel community, who make ``drive-by'' 37 parcialmente por otros desarrolladores en la comunidad del kernel,
33 modifications to the driver as they develop and refine kernel 38 %TODO drive-by.
34 subsystems. 39 quienes hacen modificaciones ``de-afán'' al controlador a medida que
35 \item We also maintain a number of ``backports'' to older versions of 40 desarrollan y refinan subsistemas en el kernel.
36 the Linux kernel, to support the needs of customers who are running 41 %TODO backport
37 older Linux distributions that do not incorporate our drivers. (To 42 \item También mantenemos algunos ``backports'' para versiones antiguas
38 \emph{backport} a piece of code is to modify it to work in an older 43 del kernel de Linux, para dar soporte a las necesidades de los
39 version of its target environment than the version it was developed 44 clientes que están corriendo versiones antiguas de Linux que no
40 for.) 45 incorporan nuestros controladores. (Hacer el \emph{backport} de un
41 \item Finally, we make software releases on a schedule that is 46 pedazo de código es modificarlo para que trabaje en una versión
42 necessarily not aligned with those used by Linux distributors and 47 de su entorno objetivo anterior a aquella para la cual fue escrito.)
43 kernel developers, so that we can deliver new features to customers 48 \item Finalmente, nosotros liberamos nuestro software de acuerdo a un
44 without forcing them to upgrade their entire kernels or 49 cronograma que no necesariamente está alineado con el que usan los
45 distributions. 50 distribuidores de Linux y los desarrolladores del kernel, así que
51 podemos entregar nuevas características a los clientes sin forzarlos
52 a actualizar kernels completos o distribuciones.
46 \end{itemize} 53 \end{itemize}
47 54
48 \subsection{Tempting approaches that don't work well} 55 \subsection{Aproximaciones tentadoras que no funcionan adecuadamente}
49 56
50 There are two ``standard'' ways to maintain a piece of software that 57 Hay dos maneras estándar de mantener una porción de software que debe
51 has to target many different environments. 58 funcionar en muchos entornos diferentes.
52 59
53 The first is to maintain a number of branches, each intended for a 60 The first is to maintain a number of branches, each intended for a
54 single target. The trouble with this approach is that you must 61 single target. The trouble with this approach is that you must
55 maintain iron discipline in the flow of changes between repositories. 62 maintain iron discipline in the flow of changes between repositories.
56 A new feature or bug fix must start life in a ``pristine'' repository, 63 A new feature or bug fix must start life in a ``pristine'' repository,