Mercurial > hgbook
annotate es/intro.tex @ 505:446d1b4b7a71
translated up to section 4.2.1, included
author | Javier Rojas <jerojasro@devnull.li> |
---|---|
date | Sat, 08 Nov 2008 23:29:59 -0500 |
parents | 779944196e2a |
children | 8b564f6f57f2 |
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 |
1839fd383e50
translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents:
502
diff
changeset
|
315 herramientas centralizadas les dan tal control. En todo caso, si este |
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 |
1839fd383e50
translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents:
502
diff
changeset
|
319 controla. Siendo así un control ilusorio, está impidiendo la fluidez |
1839fd383e50
translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents:
502
diff
changeset
|
320 de colaboración frente a quien se sienta impulsado a obtener una copia |
1839fd383e50
translated a few subsections of intro
Igor TAmara <igor@tamarapatino.org>
parents:
502
diff
changeset
|
321 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 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
323 \subsection{Advantages for commercial projects} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
324 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
325 Many commercial projects are undertaken by teams that are scattered |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
326 across the globe. Contributors who are far from a central server will |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
327 see slower command execution and perhaps less reliability. Commercial |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
328 revision control systems attempt to ameliorate these problems with |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
329 remote-site replication add-ons that are typically expensive to buy |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
330 and cantankerous to administer. A distributed system doesn't suffer |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
331 from these problems in the first place. Better yet, you can easily |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
332 set up multiple authoritative servers, say one per site, so that |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
333 there's no redundant communication between repositories over expensive |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
334 long-haul network links. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
335 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
336 Centralised revision control systems tend to have relatively low |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
337 scalability. It's not unusual for an expensive centralised system to |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
338 fall over under the combined load of just a few dozen concurrent |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
339 users. Once again, the typical response tends to be an expensive and |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
340 clunky replication facility. Since the load on a central server---if |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
341 you have one at all---is many times lower with a distributed |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
342 tool (because all of the data is replicated everywhere), a single |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
343 cheap server can handle the needs of a much larger team, and |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
344 replication to balance load becomes a simple matter of scripting. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
345 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
346 If you have an employee in the field, troubleshooting a problem at a |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
347 customer's site, they'll benefit from distributed revision control. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
348 The tool will let them generate custom builds, try different fixes in |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
349 isolation from each other, and search efficiently through history for |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
350 the sources of bugs and regressions in the customer's environment, all |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
351 without needing to connect to your company's network. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
352 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
353 \section{Why choose Mercurial?} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
354 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
355 Mercurial has a unique set of properties that make it a particularly |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
356 good choice as a revision control system. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
357 \begin{itemize} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
358 \item It is easy to learn and use. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
359 \item It is lightweight. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
360 \item It scales excellently. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
361 \item It is easy to customise. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
362 \end{itemize} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
363 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
364 If you are at all familiar with revision control systems, you should |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
365 be able to get up and running with Mercurial in less than five |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
366 minutes. Even if not, it will take no more than a few minutes |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
367 longer. Mercurial's command and feature sets are generally uniform |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
368 and consistent, so you can keep track of a few general rules instead |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
369 of a host of exceptions. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
370 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
371 On a small project, you can start working with Mercurial in moments. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
372 Creating new changes and branches; transferring changes around |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
373 (whether locally or over a network); and history and status operations |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
374 are all fast. Mercurial attempts to stay nimble and largely out of |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
375 your way by combining low cognitive overhead with blazingly fast |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
376 operations. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
377 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
378 The usefulness of Mercurial is not limited to small projects: it is |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
379 used by projects with hundreds to thousands of contributors, each |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
380 containing tens of thousands of files and hundreds of megabytes of |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
381 source code. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
382 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
383 If the core functionality of Mercurial is not enough for you, it's |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
384 easy to build on. Mercurial is well suited to scripting tasks, and |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
385 its clean internals and implementation in Python make it easy to add |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
386 features in the form of extensions. There are a number of popular and |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
387 useful extensions already available, ranging from helping to identify |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
388 bugs to improving performance. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
389 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
390 \section{Mercurial compared with other tools} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
391 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
392 Before you read on, please understand that this section necessarily |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
393 reflects my own experiences, interests, and (dare I say it) biases. I |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
394 have used every one of the revision control tools listed below, in |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
395 most cases for several years at a time. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
396 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
397 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
398 \subsection{Subversion} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
399 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
400 Subversion is a popular revision control tool, developed to replace |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
401 CVS. It has a centralised client/server architecture. |
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 Subversion and Mercurial have similarly named commands for performing |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
404 the same operations, so if you're familiar with one, it is easy to |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
405 learn to use the other. Both tools are portable to all popular |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
406 operating systems. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
407 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
408 Prior to version 1.5, Subversion had no useful support for merges. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
409 At the time of writing, its merge tracking capability is new, and known to be |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
410 \href{http://svnbook.red-bean.com/nightly/en/svn.branchmerge.advanced.html#svn.branchmerge.advanced.finalword}{complicated |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
411 and buggy}. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
412 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
413 Mercurial has a substantial performance advantage over Subversion on |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
414 every revision control operation I have benchmarked. I have measured |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
415 its advantage as ranging from a factor of two to a factor of six when |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
416 compared with Subversion~1.4.3's \emph{ra\_local} file store, which is |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
417 the fastest access method available. In more realistic deployments |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
418 involving a network-based store, Subversion will be at a substantially |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
419 larger disadvantage. Because many Subversion commands must talk to |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
420 the server and Subversion does not have useful replication facilities, |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
421 server capacity and network bandwidth become bottlenecks for modestly |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
422 large projects. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
423 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
424 Additionally, Subversion incurs substantial storage overhead to avoid |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
425 network transactions for a few common operations, such as finding |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
426 modified files (\texttt{status}) and displaying modifications against |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
427 the current revision (\texttt{diff}). As a result, a Subversion |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
428 working copy is often the same size as, or larger than, a Mercurial |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
429 repository and working directory, even though the Mercurial repository |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
430 contains a complete history of the project. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
431 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
432 Subversion is widely supported by third party tools. Mercurial |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
433 currently lags considerably in this area. This gap is closing, |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
434 however, and indeed some of Mercurial's GUI tools now outshine their |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
435 Subversion equivalents. Like Mercurial, Subversion has an excellent |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
436 user manual. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
437 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
438 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
|
439 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
|
440 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
|
441 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
|
442 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
|
443 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
|
444 are large. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
445 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
446 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
|
447 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
|
448 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
|
449 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
|
450 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
|
451 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
452 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
|
453 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
|
454 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
|
455 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
|
456 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
|
457 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
|
458 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
459 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
460 \subsection{Git} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
461 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
462 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
|
463 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
|
464 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
|
465 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
466 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
|
467 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
|
468 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
|
469 simplicity. |
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 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
|
472 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
|
473 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
|
474 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
|
475 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
|
476 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
477 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
|
478 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
|
479 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
|
480 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
|
481 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
|
482 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
|
483 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
|
484 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
|
485 magnitude larger. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
486 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
487 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
|
488 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
|
489 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
|
490 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
|
491 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
492 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
|
493 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
494 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
495 \subsection{CVS} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
496 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
497 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
|
498 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
|
499 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
|
500 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
501 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
|
502 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
|
503 ``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
|
504 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
|
505 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
|
506 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
|
507 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
|
508 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
|
509 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
|
510 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
511 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
|
512 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
|
513 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
|
514 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
|
515 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
|
516 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
|
517 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
518 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
|
519 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
|
520 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
|
521 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
|
522 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
|
523 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
|
524 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
|
525 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
|
526 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
|
527 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
|
528 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
|
529 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
530 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
|
531 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
532 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
533 \subsection{Commercial tools} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
534 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
535 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
|
536 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
|
537 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
|
538 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
|
539 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
540 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
|
541 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
|
542 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
|
543 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
|
544 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
545 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
546 \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
|
547 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
548 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
|
549 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
|
550 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
|
551 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
552 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
|
553 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
|
554 file locking. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
555 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
556 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
|
557 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
|
558 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
|
559 |
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 \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
|
562 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
563 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
|
564 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
|
565 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
|
566 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
|
567 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
|
568 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
569 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
|
570 follows: |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
571 \begin{itemize} |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
572 \item Subversion |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
573 \item CVS |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
574 \item Git |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
575 \item Darcs |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
576 \end{itemize} |
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 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
|
579 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
|
580 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
|
581 of any work. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
582 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
583 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
|
584 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
|
585 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
|
586 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
|
587 changes. |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
588 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
589 |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
590 %%% Local Variables: |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
591 %%% mode: latex |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
592 %%% TeX-master: "00book" |
b05e35d641e4
Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents:
432
diff
changeset
|
593 %%% End: |