annotate es/intro.tex @ 506:8b564f6f57f2

Translating Subversion Vs. Mercurial
author Igor TAmara <igor@tamarapatino.org>
date Sun, 09 Nov 2008 19:59:44 -0500
parents 779944196e2a
children 56914d368af4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
1 \chapter{Introducción}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
2 \label{chap:intro}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
3
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
4 \section{Acerca del control de revisiones}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
5
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
6 El control de revisiones es el proceso de administrar diferentes
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
7 versiones de una pieza de información. En su forma más simple es algo
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
8 que la mayoría de gente hace a mano: cada vez que usted modifica un
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
9 fichero, lo graba con un nuevo nombre que contiene un número, el
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
10 siguiente mayor que el anterior.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
11
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
12 Administrar manualmente muchas versiones de un fichero es una tarea
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
13 propensa a errores, a pesar de que hace bastante tiempo hay
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
14 herramientas que ayudan en este proceso. Las primeras herramientas
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
15 para automatizar el control de revisiones fueron pensadas para que un
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
16 usuario administrara un solo fichero. En las décadas pasadas, el
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
17 alcance de las herramientas de control de revisiones ha ido aumentando
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
18 considerablemente; ahora manejan muchos archivos y facilitan el
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
19 trabajo en conjunto de varias personas. Las mejores herramientas de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
20 control de revisiones de la actualidad no tienen problema con miles de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
21 personas trabajando en proyectos que consisten de decenas de miles de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
22 ficheros.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
23
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
24 \subsection{¿Por qué usar control de revisiones?}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
25
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
26 Hay muchas razones por las cuales usted o su equipo desearía usar una
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
27 herramienta automática de control de revisiones para un proyecto.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
28 \begin{itemize}
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
29 \item Contar con la historia y la evolución de su proyecto, para
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
30 evitar hacer la tarea manualmente. Por cada cambio tendrá una
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
31 bitácora de \emph{quién} lo hizo; \emph{por qué} se hizo;
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
32 \emph{cuándo} se hizo; y de \emph{qué} se trataba el cambio.
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
33 \item Cuando trabaja con más personas, los programas de control de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
34 revisiones facilitan la colaboración. Por ejemplo, cuando varias
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
35 personas de forma casi simultanea pueden hacer cambios
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
36 incompatibles, el programa le ayudará a identificar y resolver tales
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
37 conflictos.
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
38 \item Puede ayudarle a recuperarse de equivocaciones. Si aplica un
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
39 cambio que posteriormente se evidencia como un error, puede
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
40 revertirlo a una versión previa a uno o muchos ficheros. De hecho,
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
41 una herramienta \emph{realmente} buena, incluso puede ayudarle
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
42 efectivamente a darse cuenta exactamente cuándo se introdujo el
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
43 error( para más detalles ver la sección~\ref{sec:undo:bisect}).
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
44 \item Le permitirá trabajar simultáneamente, y manejar las diferencias
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
45 entre múltiples versiones de su proyecto.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
46 \end{itemize}
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
47 La mayoría de estas razones son igualmente validas ---por lo menos en
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
48 teoría--- así esté trabajando en un proyecto solo, o con mucha gente.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
49
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
50 Algo fundamental acerca de lo práctico de un sistema de control de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
51 revisiones en estas dos escalas (``un hacker solo'' y ``un equipo
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
52 gigantesco'') es cómo se comparan los \emph{beneficios} con los
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
53 \emph{costos}. Una herramienta de control de revisiones que sea
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
54 difícil de entender o usar impondrá un costo alto.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
55
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
56 Un proyecto de quinientas personas es muy propenso a colapsar
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
57 solamente con su peso inmediatamente sin una herramienta de control de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
58 versiones y un proceso. En este caso, el costo de usar control de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
59 revisiones ni siquiera se tiene en cueant, puesto que \emph{sin} él,
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
60 el fracaso está casi garantizado.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
61
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
62 Por otra parte, un ``arreglo rápido'' de una sola persona, excluiría
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
63 la necesidad de usar una herramienta de control de revisiones, porque
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
64 casi seguramente, el costo de usar una estaría cerca del costo del
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
65 proyecto. ¿No es así?
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
66
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
67 Mercurial solamente soporta \emph{ambas} escalas de de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
68 desarrollo. Puede aprender lo básico en pocos minutos, y dado su bajo
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
69 sobrecosto, puede aplicar el control de revisiones al proyecto más
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
70 pequeño con facilidad. Su simplicidad significa que no tendrá que
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
71 preocuparse por conceptos obtusos o secuencias de órdenes compitiendo
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
72 por espacio mental con lo que sea que \emph{realmente} esté tratando
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
73 de hacer. Al mismo tiempo, Mercurial tiene alto desempeño y su
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
74 naturaleza peer-to-peer le permite escalar indoloramente para manejar
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
75 grandes proyectos.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
76
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
77 Ninguna herramienta de control de revisiones puede salvar un
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
78 proyecto mal administrado, pero la elección de herramientas puede
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
79 hacer una gran diferencia en la fluidez con la cual puede trabajar en
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
80 el proyecto.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
81
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
82 \subsection{La cantidad de nombres del control de revisiones}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
83
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
84 El control de revisiones es un campo amplio, tan ampli que no hay un
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
85 acrónimo o nombre único. A continuación presentamos un listado de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
86 nombres comunes y acrónimos que se podrían encontrar:
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
87 \begin{itemize}
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
88 \item Control de revisiones (RCS)
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
89 \item Manejo de Configuraciones de Programas(SCM), o administracón de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
90 configuraciones
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
91 \item Administración de código fuente
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
92 \item Control de Código Fuente, o Control de Fuentes
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
93 \item Control de Versiones(VCS)
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
94 \end{itemize}
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
95 Algunas personas aducen que estos términos tienen significados
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
96 diversos, pero en la práctica se sobrelapan tanto que no hay un
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
97 acuerdo o una forma adecuada de separarlos.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
98
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
99 \section{Historia resumida del control de revisiones}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
100
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
101 La herramienta de control de revisiones más antigua conocida es SCCS
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
102 (Sistema de Control de Código), escrito por Marc Rochkind en Bell
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
103 Labs, a comienzos de los setentas(1970s). SCCS operaba sobre archivos
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
104 individuales, y requería que cada persona que trabajara en el proyecto
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
105 tuviera acceso a un espacio compartido en un solo sistema. Solamente
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
106 una persona podía modificar un archivo en un momento dado; el
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
107 arbitramiento del acceso a los ficheros se hacía con candados. Era
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
108 común que la gente pusiera los candados a los ficheros, y que
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
109 posteriormente olvidara quitarlos, impidiendo que otro pudiera
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
110 modificar los ficheros en cuestión sin la intervención del
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
111 administrador.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
112
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
113 Walter Tichy desarrolló una alternativa gratutita a SCCS a comienzos
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
114 de los ochentas(1980s), llamó a su programa RCS(Sistema de Control de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
115 Revisiones). Al igual que SCCS, RCS requería que los desarrolladores
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
116 trabajaran en un único espacio compartido y colocaran candados a los
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
117 ficheros para evitar que varias personas los estuvieran modificando
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
118 simultáneamente.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
119
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
120 Después en los ochenta, Dick Grune usó RCS como un bloque de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
121 construcción para un conjunto de guiones de línea de comando, que
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
122 inicialmente llamó cmt, pero que renombró a CVS(Sistema Concurrente de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
123 Versiones). La gran innovación de CVS era que permitía a los
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
124 desarrolladores trabajar simultáneamente de una forma más o menos
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
125 independiente en sus propios espacios de trabajo. Los espacios de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
126 trabajo personales impedian que los desarrolladores se pisaran las
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
127 mangueras todo el tiempo, situación común con SCCS y RCS. Cada
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
128 desarrollador tenía una copia de todo el fichero del proyecto y podía
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
129 modificar su copia independientemente, Tenían que fusionar sus
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
130 ediciones antes de consignar los cambios al repositorio central.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
131
502
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
132 Brian Berliner tomó los scripts originales de Grune y los reescribió
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
133 en~C, haciéndolos públicos en 1989, código sobre el cual se ha
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
134 desarrollado la versión moderna de CVS. CVS posteriormente adquirió
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
135 la habilidad de operar sobre una conexión de red, dotándolo de una
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
136 arquitectura, cliente/servidor. La arquitectura de CVS es
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
137 centralizada; La historia del proyecto está únicamente en el
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
138 repositorio central. Los espacios de trabajo de los clientes
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
139 contienen únicamente copias recientes de las versiones de los
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
140 ficheros, y pocos metadatos para indicar dónde está el servidor. CVS
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
141 ha tenido un éxito enorme; Es probablemente el sistema de control de
4cdeb830118b Starting translating intro to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
142 revisiones más extendido del planeta.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
143
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
144 A comienzos de los noventa(1990s), Sun MicroSystems desarrollo un
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
145 temprano sistema distribuido de revisión de controles llamado TeamWare
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
146 Un espacio de trabajo TeamWare contiene una copia completa de la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
147 historia del proyecto. TeamWare no tiene la noción de repositorio
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
148 central. (CVS se basaba en RCS para el almacenamiento de su historia;
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
149 TeamWare usaba SCCS.)
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
150
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
151 A medida que avanzaba la decada de los noventa, se empezño a
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
152 evidenciar los problemas de CVS. Alacena cambios simultáneos a muchos
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
153 archivos de forma individual, en lugar de agruparlos como una
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
154 operación única y atómica lógicamente. No maneja bien su jerarquía de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
155 ficheros bien; es fácil desordenar un repositorio renombrando ficheros
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
156 y directorios. Peor aún, su código fuente es difícil de leer y
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
157 mantener, lo que hace que su ``umbral de dolor'' para arreglar sus
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
158 problemas arquitecturales algo prohibitivo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
159
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
160 En 2001, Jim Blandy y Karl Fogel, dos desarrolladores que habían
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
161 trabajado en CVS, comenzaron un proyecto para reemplazarlo con una
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
162 herramienta con mejor arquitectura y código más limpio. El resultado,
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
163 Subversion, no se separó del modelo centralizado cliente/servidor de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
164 CVS, pero añadió consignaciones atómicas de varios ficheros, mejor
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
165 manejo de nombres de espacios, y otras características que lo hacen
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
166 mejor que CVS. Desde su versión inicial, ha ido creciendo en
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
167 popularidad.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
168
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
169 Más o menos en forma simultánea Graydon Hoare comenzó a trabajar en un
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
170 sistema distribuido de control de versiones ambicioso que llamó
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
171 Monotone. Mientras que Monotone se enfocaba a evitar algunas fallas de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
172 diseño de CVS con una arquitectura peer-to-peer, fue mucho más
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
173 allá(junto con otros proyectos subsecuentes) que unas herramientas de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
174 control de revisiones en varios aspectos innovadores. Usa hashes
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
175 criptográficos como identificadores, y tiene una noción integral de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
176 ``confianza'' para código de diversas fuentes.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
177
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
178 Mercurial nació en el 2005. Algunos de sus aspectos de de diseño
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
179 fueron influenciados por Monotone, pero Mercurial se enfoca en la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
180 facilidad de uso, gran rendimiento y escalabilidad para proyectos muy
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
181 grandes.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
182
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
183 \section{Tendencias en el control de revisiones}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
184
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
185 Ha habido varias tendencias en el desarrollo y uso de las herramientas
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
186 de control de revisiones en las pasadas cuatro décadas, mientras la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
187 gente se ha vuelto familiar con las capacidades de sus herramientas
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
188 así mismo con sus limitaciones.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
189
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
190 La primera generación comenzó administrando archivos individuales en
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
191 computadores por persona. A pesar de que tales herramientas
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
192 representaron un avance importante frente al control de revisiones
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
193 manual, su modelo de candados y la limitación a un sólo computador,
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
194 determinó equipos de trabajo pequeños y acoplados.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
195
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
196 La segunda generación dejó atrás esas limitaciones moviéndose a
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
197 arquitecturas centradas en redes, y administrando proyectos completos
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
198 uno a la vez. A medida que los proyectos crecían, nacieron nuevos
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
199 problemas. Con la necesidad de comunicación frecuente con los
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
200 servidores, escalar estas máquinas se convirtió en un problema en
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
201 proyectos realmente grandes. Las redes con poca estabilidad impidieron
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
202 que usuarios remotos se conectaran al servidor. A medida que los
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
203 proyecos de código abierto comenzaron a ofrecer acceso de sólo lectura
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
204 de forma anónima a cualquiera, la gente sin permiso para consignar,
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
205 vio que no podían usar tales herramientas para interactuar en un
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
206 proyecto de forma natural, puesto que no podían guardar sus cambios.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
207
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
208 La generación actual de herramientas de control de revisiones es de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
209 forma natural peer-to-peer. Todos estos sistemas han eliminado la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
210 dependencia de un único servidor central, y han permitido que la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
211 gente distribuya sus datos de control de revisiones donde realmente se
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
212 necesita. La colaboración a través de Internet ha cambiado las
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
213 limitantes tecnológicas a la cuestión de elección y consenso. Las
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
214 herramientas modernas pueden operar sin conexión indefinidamenta y
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
215 autónomamente, necesitando una conexión de red solamente para
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
216 sincronizar los cambios con otro repositorio.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
217
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
218 \section{Algunas ventajas del control distribuido de revisiones}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
219
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
220 A pesar de que las herramientas para el control distribuido de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
221 revisiones lleva varios años siendo tan robusto y usable como la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
222 generación previa de su contraparte, personas que usan herramientas
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
223 más antiguas no se han percatado de sus ventajas. Hay gran cantidad
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
224 de situaciones en las cuales las herramientas distribuidas brillan
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
225 frente a las centralizadas.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
226
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
227 Para un desarrollador individual, las herramientas distribuidas casi
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
228 siempre son más rápidas que las centralizadas. Por una razón sencilla:
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
229 Una herramienta centralizada necesita comunicarse por red para las
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
230 operaciones más usuales, debido a que los metadatos se almacenan en
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
231 una sola copia en el servidor central. Una herramienta distribuida
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
232 almacena todos sus metadatos localmente. Con todo lo demás de la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
233 misma forma, comunicarse por red tiene un sobrecosto en una
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
234 herramienta centralizada. No subestime el valor de una herramienta de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
235 respuesta rápida: Usted empleará mucho tiempo interactuando con su
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
236 programa de control de revisiones.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
237
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
238 Las herramientas distribuidas son indiferentes a los caprichos de su
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
239 infraestructura de servidores, de nuevo, debido a la replicación de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
240 metadatos en tantos lugares. Si usa un sistema centralizado y su
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
241 servidor explota, ojalá los medios físicos de su copia de seguridad
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
242 sean confiables, y que su última copia sea reciente y además
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
243 funcione. Con una herramienta distribuida tiene tantas copias de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
244 seguridad disponibles como computadores de contribuidores.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
245
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
246 La confiabilidad de su red afectará las herramientas distribuidas de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
247 una forma mucho menor que las herramientas centralizadas No puede
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
248 siquiera usar una herramienta centralizada sin conexión de red,
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
249 excepto con algunas órdenes muy limitadas. Con herramientas
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
250 distribuidas, si sus conexión cae mientras usted está trabajando,
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
251 podría nisiquiera darse cuenta. Lo único que que no podrá hacer es
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
252 comunicarse con repositorios en otros computadores, algo que es
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
253 relativamente raro comparado con las operaciones locales. Si tiene
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
254 colaboradores remotos en su equipo, puede ser significante.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
255
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
256 \subsection{Ventajas para proyectos de código abierto}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
257
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
258 Si descubre un proyecto de código abierto y decide que desea comenzar
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
259 a trabajar en él, y ese proyecto usa una herramienta de control
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
260 distribuido de revisiones, usted es un par con la gente que se
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
261 considera el ``alma'' del proyecto. Si ellos publican los
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
262 repositorios, se puede copiar inmediatamente la historia del proyecto,
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
263 hacer cambios y guardar su trabajo, usando las mismas herramientas de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
264 la misma forma que ellos. En contraste, con una herramienta
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
265 centralizada, debe usar el programa en un modo ``sólo lectura'' a
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
266 menos que alguien le otorgue permisos para consignar cambios en el
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
267 repositorio central. Hasta entonces, no podrá almacenar sus cambios y
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
268 sus modificaciones locales correrán el riesgo de dañarse cuando trate
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
269 de actualizar su vista del repositorio.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
270
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
271 \subsubsection{Las bifurcaciones(forks) no son un problema}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
272
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
273 Se ha mencionado que las herramientas de control distribuido de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
274 versiones albergan un riesgo a los proyectos de código abierto, puesto
504
779944196e2a corrected typo in command to insert notes of translators
Javier Rojas <jerojasro@devnull.li>
parents: 503
diff changeset
275 que se vuelve muy sencillo hacer una ``bifurcanción''\ndt{fork.} del
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
276 desarrollo del proyecto. Una bifurcación pasa cuando hay diferencias
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
277 de opinión o actitud entre grupos de desarrolladores que desenvoca en
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
278 la decisión de la imposibilidad de continuar trabajando juntos. Cada
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
279 parte toma una copia más o menos completa del código fuente del
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
280 proyecto y toma su propio rumbo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
281
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
282 En algunas ocasiones los líderes de las bifurcaciones reconcilian sus
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
283 diferencias. Con un sistema centralizado de control de revisiones, el
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
284 proceso \emph{técnico} de reconciliarse es doloroso, y se hace de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
285 forma muy manual. Tiene que decidir qué historia de revisiones va a
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
286 ``win'', e injertar los cambios del otro equipo en el árbol de alguna
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
287 manera. Con esto usualmente se pierde algo o todo del historial de la
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
288 revisión de alguna de las partes.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
289
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
290 Lo que las herramientas distribuidas hacen con respecto a las
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
291 bifurcaciones, es que las bifurcaciones son la \emph{única} forma de
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
292 desarrollar un proyecto. Cada cambio que usted hace es potencialmente
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
293 un punto de bifurcación. La gran fortaleza de esta aproximación es que
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
294 las herramientas distribuidas de control de revisiones tiene que ser
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
295 bueno al \emph{fusionar} las bifurcaciones, porque las bifurcaciones
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
296 son absolutamente fundamentales: pasan todo el tiempo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
297
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
298 Si todas las porciones de trabajo que todos hacen todo el tiempo, se
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
299 enmarca en términos de bifurcaciones y fusiones, entonces a aquello a
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
300 lo que se refiere en el mundo del código abierto a una ``bifurcación''
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
301 se convierte \emph{puramente} en una cuestión social. Lo que hacen las
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
302 herramientas distribuidas es \emph{disminuir} la posibilidad de una
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
303 bifurcación porque:
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
304 \begin{itemize}
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
305 \item Eliminan la distinción social que las herramientas centralizadas
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
306 imponen: esto entre los miembros (personas con permiso de consignar)
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
307 y forasteros(los que no tienen el permiso).
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
308 \item Facilitan la reconciliación después de una bifurcación social,
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
309 porque todo lo que concierne al programa de control de revisiones es
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
310 una fusión.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
311 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
312
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
313 Algunas personas se resisten a las herramientas distribuidas porque
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
314 desean mantener control completo sobre sus proyectos, y creen que las
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
315 herramientas centralizadas les da tal control. En todo caso, si este
503
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
316 es su parecer, y publica sus repositorios de CVS o Subversion, hay
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
317 muchas herramientas disponibles que pueden obtener la historia
1839fd383e50 translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents: 502
diff changeset
318 completa(A pesar de lo lento) y recrearla en otro sitio que usted no
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
319 controla. Siendo así un control ilusorio, puesto que está impidiendo
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
320 la fluidez de colaboración en lugar de prevenir que alguien se sienta
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
321 impulsado a obtener una copia y hacer una bifurcación con su historia.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
322
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
323 \subsection{Ventajas para proyectos comerciales}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
324
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
325 Muchos proyectos comerciales tienen grupos de trabajo distribuidos
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
326 alrededor del globo. Quienes contribuyen y están lejos de un
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
327 repositorio central verán una ejecución más lenta de las órdenes y tal
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
328 vez menos confiabilidad. Los sistemas de control de revisión
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
329 comerciales intentan amortiguar estos problemas con adiciones de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
330 replicación remota que usualmente son muy costosos y complicados de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
331 administradr. Un sistema distribuido no padece estos problemas. Mejor
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
332 aún, puede colocar varios servidores autorizados, por ejemplo, uno por
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
333 sitio, de tal forma que no haya comunicación redundante entre
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
334 repositorios sobre enlaces de conexión costosos.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
335
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
336 Los sistemas de control de revisiones distribuidos tienden a ser poco
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
337 escalables. No es inusual quw costosos sistemas centralizados caigan
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
338 ante la carga combinada de unas cuantas docenas de usuarios
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
339 concurrentes. De nuevo, las respuestas típicas de replibcación tienden
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
340 a ser costosas y complejas de instalar y administrar. Dado que la
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
341 carga en un servidor central---si es que tiene uno---es muchas veces
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
342 menor con una herramienta distribuida(debido a que los datos están
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
343 replicados en todas partes), un sólo servidor económico puede tratar
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
344 las necesidades de equipos mucho más grandes, y la replicación para
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
345 balancear la carga se vuelve cosa de scripts.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
346
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
347 Si tiene un empleado en el campo, se beneficiará grandemente de un
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
348 sistema distribuido de control de versiones al resolver problemas en
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
349 el sitio del cliente. La herramienta le permitirá generar
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
350 construcciones a la medida, probar diferentes arreglos de forma
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
351 independiente y buscar de forma eficiente las fuentes de fallos en la
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
352 historia y regresiones en los ambientes de los clientes, todo, sin
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
353 necesidad de conectarse al servidor de su compañía.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
354
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
355 \section{¿Por qué elegir Mercurial?}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
356
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
357 Mercurial cuenta con un conjunto único de propiedades que lo hacen
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
358 particularmente una buena elección como un sistema de control de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
359 revisiones, puesto que:
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
360 \begin{itemize}
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
361 \item Es fácil de aprender y usar.
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
362 \item Es liviano.
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
363 \item Escala de forma excelente.
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
364 \item Es fácil de acondicionar.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
365 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
366
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
367 Si los sistemas de control de revisiones le son familiares, debería
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
368 estar listo para usar Mercurial en menos de cinco minutos. Si no, va a
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
369 tomar unos pocos minutos más. Las órdenes de Mercurial y su conjunto
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
370 de características son uniformes y consistentes generalmente, y basta
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
371 con que siga unas pocas reglas generales en lugar de un montón de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
372 excepciones.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
373
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
374 En un proyecto pequeño, puede comenzar a trabajar con Mercurial poco a
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
375 poco. Creando nuevos cambios y ramas, transfiriendo cambios(localmente
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
376 o por la red); y las operaciones relacionadas con el estado y la
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
377 historia son rápidas. Mercurial buscar ser ligero y no incomodar en su
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
378 camino combinando poca sobrecarga cognitiva con operaciones
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
379 asombrosamente rápidas.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
380
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
381 La utilidad de Mercurial no se limita a proyectos pequeños: está
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
382 siendo usado por proyectos con centenas de miles de contribuyentes,
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
383 cada uno conteniendo decenas de miles de ficheros y centenas de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
384 megabytes de código fuente
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
385
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
386 Si la funcionalidad básica de Mercurial no es suficiente para usted,
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
387 es muy fácil extenderlo. Mercurial se comporta muy bien con tareas de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
388 scripting y su limpieza interna junto con su implementación en Python
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
389 permiten añadir características fácilmente en forma de extensiones.
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
390 Hay un buen número de extensiones útiles y populares en este momento,
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
391 desde ayudar a identificar fallos hasta el mejoramiento de su
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
392 desempeño.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
393
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
394 \section{Comparación de Mercurial con otras herramientas}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
395
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
396 Antes de leer, por favor tenga en cuenta que esta sección
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
397 necesariamente refleja mis propias experiencias, intereses y(tengo que
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
398 decirlo) mis preferencias. He usado cada una de las herramientas de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
399 control de versiones listadas a continuación, y en muchos casos por
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
400 varios años.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
401
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
402
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
403 \subsection{Subversion}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
404
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
405 Subversion es una herramienta de control de revisiones muy popular,
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
406 desarrollada para reemplazar a CVS. Su arquitectura es centralizada
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
407 en cliente/servidor.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
408
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
409 Subversion y Mercurial tienen órdenes con nombres similares para hacer
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
410 las mismas operaciones, por lo que si le son familiares en una, será
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
411 sencillo aprender a usar la otra. Ambas herramientas son portables en
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
412 todos los sistemas operativos populares.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
413
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
414 Antes de la versión 1.5, Subversion no tenía soporte para fusiones. En
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
415 el momento de la escritura, sus capcidades para llevar cuenta de las
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
416 funciones son nuevas,
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
417 \href{http://svnbook.red-bean.com/nightly/en/svn.branchmerge.advanced.html#svn.branchmerge.advanced.finalword}{complicadas
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
418 y poco estables\NdT{buggy}}.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
419
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
420 Mercurial tiene una ventaja considerable en el desempeño sobre
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
421 Subversion en cualquier operación de control de revisiones que yo haya
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
422 medido. He medido sus ventajas con factores desde dos hasta seis veces
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
423 comparando con almacenamiento de archivos \emph{ra\_local}
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
424 Subversion~1.4.3, el cual es el método de acceso más rápido. En los
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
425 escenarios más sencillos incluyendo almacenamiento con la red de por
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
426 medio, Subversion se encuentra en desventaja aún mayor. Dado que casi
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
427 todas las órdenes de Subversion deben tratar con el servidor y
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
428 Subversion no tiene utilidades de replicación sencillas, la capacidad
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
429 del servidor y el ancho de banda se convierten en cuellos de botella
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
430 para proyectos modestamente grandes.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
431
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
432 Adicionalmente, Subversion tiene un sobrecosto en almacentamiento
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
433 considerable para evitar transacciones por red en algunas operaciones,
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
434 tales como encontrar ficheros modificados(\texttt{status}) y desplegar
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
435 información frente a la revisión actual(\texttt{diff}). Como
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
436 resultado, la copia de trabajo de Subversion termina siendo del mismo
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
437 tamaño o más grande que un repositorio de Mercurial y el directorio de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
438 trabajo, a pesar de que el repositorio de Mercurial contiene la
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
439 historia completa del proyecto.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
440
506
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
441 Subversion tiene soporte amplio de otras herramientas. Mercurial por
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
442 ahora está bastante atrás en este aspecto. Esta diferencia está
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
443 disminuyendo, y algunas de las herramientas GUI\NdT{Interfaz de
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
444 Usuario Gráfica}, eclipsan sus equivalentes de Subversion. Al igual
8b564f6f57f2 Translating Subversion Vs. Mercurial
Igor TAmara <igor@tamarapatino.org>
parents: 504
diff changeset
445 que Mercurial, Subversion tiene un excelente manual de usuario.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
446
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
447 Because Subversion doesn't store revision history on the client, it is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
448 well suited to managing projects that deal with lots of large, opaque
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
449 binary files. If you check in fifty revisions to an incompressible
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
450 10MB file, Subversion's client-side space usage stays constant The
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
451 space used by any distributed SCM will grow rapidly in proportion to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
452 the number of revisions, because the differences between each revision
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
453 are large.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
454
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
455 In addition, it's often difficult or, more usually, impossible to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
456 merge different versions of a binary file. Subversion's ability to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
457 let a user lock a file, so that they temporarily have the exclusive
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
458 right to commit changes to it, can be a significant advantage to a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
459 project where binary files are widely used.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
460
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
461 Mercurial can import revision history from a Subversion repository.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
462 It can also export revision history to a Subversion repository. This
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
463 makes it easy to ``test the waters'' and use Mercurial and Subversion
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
464 in parallel before deciding to switch. History conversion is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
465 incremental, so you can perform an initial conversion, then small
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
466 additional conversions afterwards to bring in new changes.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
467
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
468
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
469 \subsection{Git}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
470
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
471 Git is a distributed revision control tool that was developed for
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
472 managing the Linux kernel source tree. Like Mercurial, its early
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
473 design was somewhat influenced by Monotone.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
474
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
475 Git has a very large command set, with version~1.5.0 providing~139
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
476 individual commands. It has something of a reputation for being
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
477 difficult to learn. Compared to Git, Mercurial has a strong focus on
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
478 simplicity.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
479
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
480 In terms of performance, Git is extremely fast. In several cases, it
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
481 is faster than Mercurial, at least on Linux, while Mercurial performs
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
482 better on other operations. However, on Windows, the performance and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
483 general level of support that Git provides is, at the time of writing,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
484 far behind that of Mercurial.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
485
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
486 While a Mercurial repository needs no maintenance, a Git repository
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
487 requires frequent manual ``repacks'' of its metadata. Without these,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
488 performance degrades, while space usage grows rapidly. A server that
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
489 contains many Git repositories that are not rigorously and frequently
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
490 repacked will become heavily disk-bound during backups, and there have
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
491 been instances of daily backups taking far longer than~24 hours as a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
492 result. A freshly packed Git repository is slightly smaller than a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
493 Mercurial repository, but an unpacked repository is several orders of
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
494 magnitude larger.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
495
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
496 The core of Git is written in C. Many Git commands are implemented as
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
497 shell or Perl scripts, and the quality of these scripts varies widely.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
498 I have encountered several instances where scripts charged along
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
499 blindly in the presence of errors that should have been fatal.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
500
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
501 Mercurial can import revision history from a Git repository.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
502
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
503
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
504 \subsection{CVS}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
505
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
506 CVS is probably the most widely used revision control tool in the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
507 world. Due to its age and internal untidiness, it has been only
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
508 lightly maintained for many years.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
509
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
510 It has a centralised client/server architecture. It does not group
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
511 related file changes into atomic commits, making it easy for people to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
512 ``break the build'': one person can successfully commit part of a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
513 change and then be blocked by the need for a merge, causing other
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
514 people to see only a portion of the work they intended to do. This
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
515 also affects how you work with project history. If you want to see
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
516 all of the modifications someone made as part of a task, you will need
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
517 to manually inspect the descriptions and timestamps of the changes
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
518 made to each file involved (if you even know what those files were).
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
519
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
520 CVS has a muddled notion of tags and branches that I will not attempt
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
521 to even describe. It does not support renaming of files or
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
522 directories well, making it easy to corrupt a repository. It has
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
523 almost no internal consistency checking capabilities, so it is usually
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
524 not even possible to tell whether or how a repository is corrupt. I
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
525 would not recommend CVS for any project, existing or new.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
526
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
527 Mercurial can import CVS revision history. However, there are a few
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
528 caveats that apply; these are true of every other revision control
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
529 tool's CVS importer, too. Due to CVS's lack of atomic changes and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
530 unversioned filesystem hierarchy, it is not possible to reconstruct
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
531 CVS history completely accurately; some guesswork is involved, and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
532 renames will usually not show up. Because a lot of advanced CVS
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
533 administration has to be done by hand and is hence error-prone, it's
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
534 common for CVS importers to run into multiple problems with corrupted
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
535 repositories (completely bogus revision timestamps and files that have
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
536 remained locked for over a decade are just two of the less interesting
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
537 problems I can recall from personal experience).
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
538
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
539 Mercurial can import revision history from a CVS repository.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
540
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
541
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
542 \subsection{Commercial tools}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
543
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
544 Perforce has a centralised client/server architecture, with no
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
545 client-side caching of any data. Unlike modern revision control
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
546 tools, Perforce requires that a user run a command to inform the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
547 server about every file they intend to edit.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
548
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
549 The performance of Perforce is quite good for small teams, but it
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
550 falls off rapidly as the number of users grows beyond a few dozen.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
551 Modestly large Perforce installations require the deployment of
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
552 proxies to cope with the load their users generate.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
553
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
554
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
555 \subsection{Choosing a revision control tool}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
556
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
557 With the exception of CVS, all of the tools listed above have unique
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
558 strengths that suit them to particular styles of work. There is no
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
559 single revision control tool that is best in all situations.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
560
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
561 As an example, Subversion is a good choice for working with frequently
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
562 edited binary files, due to its centralised nature and support for
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
563 file locking.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
564
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
565 I personally find Mercurial's properties of simplicity, performance,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
566 and good merge support to be a compelling combination that has served
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
567 me well for several years.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
568
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
569
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
570 \section{Switching from another tool to Mercurial}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
571
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
572 Mercurial is bundled with an extension named \hgext{convert}, which
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
573 can incrementally import revision history from several other revision
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
574 control tools. By ``incremental'', I mean that you can convert all of
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
575 a project's history to date in one go, then rerun the conversion later
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
576 to obtain new changes that happened after the initial conversion.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
577
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
578 The revision control tools supported by \hgext{convert} are as
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
579 follows:
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
580 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
581 \item Subversion
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
582 \item CVS
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
583 \item Git
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
584 \item Darcs
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
585 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
586
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
587 In addition, \hgext{convert} can export changes from Mercurial to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
588 Subversion. This makes it possible to try Subversion and Mercurial in
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
589 parallel before committing to a switchover, without risking the loss
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
590 of any work.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
591
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
592 The \hgxcmd{conver}{convert} command is easy to use. Simply point it
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
593 at the path or URL of the source repository, optionally give it the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
594 name of the destination repository, and it will start working. After
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
595 the initial conversion, just run the same command again to import new
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
596 changes.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
597
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
598
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
599 %%% Local Variables:
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
600 %%% mode: latex
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
601 %%% TeX-master: "00book"
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
602 %%% End: