comparison es/intro.tex @ 615:9da096de3c52

changed "historia" to "historial". changed "archivo" to "fichero" corrected some typos
author Javier Rojas <jerojasro@devnull.li>
date Sun, 18 Jan 2009 21:37:11 -0500
parents 98fb436b58c1
children 3f32047a3f25
comparison
equal deleted inserted replaced
614:aa01d35ac59f 615:9da096de3c52
24 \subsection{¿Por qué usar control de revisiones?} 24 \subsection{¿Por qué usar control de revisiones?}
25 25
26 Hay muchas razones por las cuales usted o su equipo desearía usar una 26 Hay muchas razones por las cuales usted o su equipo desearía usar una
27 herramienta automática de control de revisiones para un proyecto. 27 herramienta automática de control de revisiones para un proyecto.
28 \begin{itemize} 28 \begin{itemize}
29 %TODO historia 29 \item Llevar registro de el historial y la evolución de su proyecto, para
30 \item Llevar registro de la historia y la evolución de su proyecto, para
31 evitar hacer la tarea manualmente. Por cada cambio, tendrá una 30 evitar hacer la tarea manualmente. Por cada cambio, tendrá una
32 bitácora de \emph{quién} lo hizo; \emph{por qué} se hizo; 31 bitácora de \emph{quién} lo hizo; \emph{por qué} se hizo;
33 \emph{cuándo} se hizo; y de \emph{qué} se trataba el cambio. 32 \emph{cuándo} se hizo; y de \emph{qué} se trataba el cambio.
34 \item Cuando trabaja con más personas, los programas de control de 33 \item Cuando trabaja con más personas, los programas de control de
35 revisiones facilitan la colaboración. Por ejemplo, cuando varias 34 revisiones facilitan la colaboración. Por ejemplo, cuando varias
134 Brian Berliner tomó los scripts originales de Grune y los reescribió 133 Brian Berliner tomó los scripts originales de Grune y los reescribió
135 en~C, publicando en 1989 el código sobre el cual se ha 134 en~C, publicando en 1989 el código sobre el cual se ha
136 desarrollado la versión moderna de CVS. CVS adquirió posteriormente 135 desarrollado la versión moderna de CVS. CVS adquirió posteriormente
137 la habilidad de operar sobre una conexión de red, dotándolo de una 136 la habilidad de operar sobre una conexión de red, dotándolo de una
138 arquitectura, cliente/servidor. La arquitectura de CVS es 137 arquitectura, cliente/servidor. La arquitectura de CVS es
139 %TODO historia/historial 138 centralizada; el historial del proyecto está únicamente en el
140 centralizada; La historia del proyecto está únicamente en el
141 repositorio central. Los espacios de trabajo de los clientes 139 repositorio central. Los espacios de trabajo de los clientes
142 contienen únicamente copias recientes de las versiones de los 140 contienen únicamente copias recientes de las versiones de los
143 ficheros, y pocos metadatos para indicar dónde está el servidor. CVS 141 ficheros, y pocos metadatos para indicar dónde está el servidor. CVS
144 ha tenido un éxito enorme; Es probablemente el sistema de control de 142 ha tenido un éxito enorme; Es probablemente el sistema de control de
145 revisiones más extendido del planeta. 143 revisiones más extendido del planeta.
146 144
147 A comienzos de los noventa~(1990s), Sun MicroSystems desarrollo un 145 A comienzos de los noventa~(1990s), Sun MicroSystems desarrollo un
148 temprano sistema distribuido de control de revisiones llamado 146 temprano sistema distribuido de control de revisiones llamado
149 TeamWare. 147 TeamWare.
150 Un espacio de trabajo TeamWare contiene una copia completa de la 148 Un espacio de trabajo TeamWare contiene una copia completa de el
151 historia del proyecto. TeamWare no tiene la noción de repositorio 149 historial del proyecto. TeamWare no tiene la noción de repositorio
152 central. (CVS se basaba en RCS para el almacenamiento de su historia; 150 central. (CVS se basaba en RCS para el almacenamiento de su historial;
153 TeamWare usaba SCCS.) 151 TeamWare usaba SCCS.)
154 152
155 A medida que avanzaba la decada de los noventa, se empezó a 153 A medida que avanzaba la decada de los noventa, se empezó a
156 evidenciar los problemas de CVS. Almacena cambios simultáneos a muchos 154 evidenciar los problemas de CVS. Almacena cambios simultáneos a muchos
157 ficheros de forma individual, en lugar de agruparlos como una 155 ficheros de forma individual, en lugar de agruparlos como una
263 261
264 Si descubre un proyecto de código abierto y decide que desea comenzar 262 Si descubre un proyecto de código abierto y decide que desea comenzar
265 a trabajar en él, y ese proyecto usa una herramienta de control 263 a trabajar en él, y ese proyecto usa una herramienta de control
266 distribuido de revisiones, usted es de inmediato un par con la gente que se 264 distribuido de revisiones, usted es de inmediato un par con la gente que se
267 considera el ``alma'' del proyecto. Si ellos publican sus 265 considera el ``alma'' del proyecto. Si ellos publican sus
268 %TODO historia/historial 266 repositorios, usted puede copiar inmediatamente el historial del proyecto,
269 repositorios, usted puede copiar inmediatamente la historia del proyecto,
270 hacer cambios y guardar su trabajo, usando las mismas herramientas de 267 hacer cambios y guardar su trabajo, usando las mismas herramientas de
271 la misma forma que ellos. En contraste, con una herramienta 268 la misma forma que ellos. En contraste, con una herramienta
272 centralizada, usted debe usar el programa en un modo ``sólo lectura'' a 269 centralizada, usted debe usar el programa en un modo ``sólo lectura'' a
273 menos que alguien le otorgue permisos para consignar cambios en el 270 menos que alguien le otorgue permisos para consignar cambios en el
274 repositorio central. Hasta entonces, no podrá almacenar sus cambios y 271 repositorio central. Hasta entonces, no podrá almacenar sus cambios y
287 proyecto y toma su propio rumbo. 284 proyecto y toma su propio rumbo.
288 285
289 En algunas ocasiones los líderes de las bifurcaciones reconcilian sus 286 En algunas ocasiones los líderes de las bifurcaciones reconcilian sus
290 diferencias. Con un sistema centralizado de control de revisiones, el 287 diferencias. Con un sistema centralizado de control de revisiones, el
291 proceso \emph{técnico} de reconciliarse es doloroso, y se hace de 288 proceso \emph{técnico} de reconciliarse es doloroso, y se hace de
292 %TODO historia/historial 289 forma muy manual. Usted tiene que decidir qué historial de revisiones va a
293 forma muy manual. Usted tiene que decidir qué historia de revisiones va a
294 ``ganar'', e injertar los cambios del otro equipo en el árbol de alguna 290 ``ganar'', e injertar los cambios del otro equipo en el árbol de alguna
295 %TODO historia/historial
296 manera. Con esto usualmente se pierde algo o todo del historial de la 291 manera. Con esto usualmente se pierde algo o todo del historial de la
297 revisión de alguna de las partes. 292 revisión de alguna de las partes.
298 293
299 Lo que las herramientas distribuidas hacen con respecto a las 294 Lo que las herramientas distribuidas hacen con respecto a las
300 bifurcaciones, es que las bifurcaciones son la \emph{única} forma de 295 bifurcaciones, es que las bifurcaciones son la \emph{única} forma de
321 316
322 Algunas personas se resisten a las herramientas distribuidas porque 317 Algunas personas se resisten a las herramientas distribuidas porque
323 desean mantener control completo sobre sus proyectos, y creen que las 318 desean mantener control completo sobre sus proyectos, y creen que las
324 herramientas centralizadas les dan tal control. En todo caso, si este 319 herramientas centralizadas les dan tal control. En todo caso, si este
325 es su parecer, y usted publica sus repositorios de CVS o Subversion, hay 320 es su parecer, y usted publica sus repositorios de CVS o Subversion, hay
326 muchas herramientas disponibles que pueden obtener la historia 321 muchas herramientas disponibles que pueden obtener el historial
327 completa (aunque sea lentamente) y recrearla en otro sitio que usted no 322 completo (aunque sea lentamente) y recrearlo en otro sitio que usted no
328 controla. Siendo así un control ilusorio, puesto que está impidiendo 323 controla. Siendo así un control ilusorio, puesto que está impidiendo
329 la fluidez de colaboración en lugar de prevenir que alguien se sienta 324 la fluidez de colaboración en lugar de prevenir que alguien se sienta
330 impulsado a obtener una copia y hacer una bifurcación con su historia. 325 impulsado a obtener una copia y hacer una bifurcación con su historial.
331 326
332 \subsection{Ventajas para proyectos comerciales} 327 \subsection{Ventajas para proyectos comerciales}
333 328
334 Muchos proyectos comerciales tienen grupos de trabajo distribuidos 329 Muchos proyectos comerciales tienen grupos de trabajo distribuidos
335 alrededor del globo. Quienes contribuyen y están lejos de un 330 alrededor del globo. Quienes contribuyen y están lejos de un
355 350
356 Si tiene un empleado en el campo, se beneficiará grandemente de un 351 Si tiene un empleado en el campo, se beneficiará grandemente de un
357 sistema distribuido de control de versiones al resolver problemas en 352 sistema distribuido de control de versiones al resolver problemas en
358 el sitio del cliente. La herramienta le permitirá generar 353 el sitio del cliente. La herramienta le permitirá generar
359 construcciones a la medida, probar diferentes arreglos de forma 354 construcciones a la medida, probar diferentes arreglos de forma
360 independiente y buscar de forma eficiente las fuentes de fallos en la 355 independiente y buscar de forma eficiente las fuentes de fallos en el
361 historia y regresiones en los ambientes de los clientes, todo sin 356 historial y regresiones en los ambientes de los clientes, todo sin
362 necesidad de conectarse al servidor de su compañía. 357 necesidad de conectarse al servidor de su compañía.
363 358
364 \section{¿Por qué elegir Mercurial?} 359 \section{¿Por qué elegir Mercurial?}
365 360
366 Mercurial cuenta con un conjunto único de propiedades que lo hacen 361 Mercurial cuenta con un conjunto único de propiedades que lo hacen
380 con que siga unas pocas reglas generales en lugar de un montón de 375 con que siga unas pocas reglas generales en lugar de un montón de
381 excepciones. 376 excepciones.
382 377
383 En un proyecto pequeño, usted puede comenzar a trabajar con Mercurial en 378 En un proyecto pequeño, usted puede comenzar a trabajar con Mercurial en
384 pocos momentos. Crear nuevos cambios y ramas, transferir cambios (localmente 379 pocos momentos. Crear nuevos cambios y ramas, transferir cambios (localmente
385 o por la red); y las operaciones relacionadas con el estado y la 380 o por la red); y las operaciones relacionadas con el estado y el
386 historia son rápidas. Mercurial buscar ser ligero y no incomodar en su 381 historial son rápidas. Mercurial buscar ser ligero y no incomodar en su
387 camino combinando poca sobrecarga cognitiva con operaciones 382 camino combinando poca sobrecarga cognitiva con operaciones
388 asombrosamente rápidas. 383 asombrosamente rápidas.
389 384
390 La utilidad de Mercurial no se limita a proyectos pequeños: está 385 La utilidad de Mercurial no se limita a proyectos pequeños: está
391 siendo usado por proyectos con centenas de miles de contribuyentes, 386 siendo usado por proyectos con centenas de miles de contribuyentes,
442 operaciones, 437 operaciones,
443 tales como encontrar ficheros modificados (\texttt{status}) y desplegar 438 tales como encontrar ficheros modificados (\texttt{status}) y desplegar
444 información frente a la revisión actual (\texttt{diff}). Como 439 información frente a la revisión actual (\texttt{diff}). Como
445 resultado, la copia de trabajo de Subversion termina siendo del mismo 440 resultado, la copia de trabajo de Subversion termina siendo del mismo
446 tamaño o más grande que un repositorio de Mercurial y el directorio de 441 tamaño o más grande que un repositorio de Mercurial y el directorio de
447 trabajo, a pesar de que el repositorio de Mercurial contiene la 442 trabajo, a pesar de que el repositorio de Mercurial contiene el
448 historia completa del proyecto. 443 historial completo del proyecto.
449 444
450 Subversion tiene soporte amplio de otras herramientas. Mercurial por 445 Subversion tiene soporte amplio de otras herramientas. Mercurial por
451 ahora está bastante atrás en este aspecto. Esta diferencia está 446 ahora está bastante atrás en este aspecto. Esta diferencia está
452 disminuyendo, y algunas de las herramientas GUI\ndt{Interfaz de 447 disminuyendo, y algunas de las herramientas GUI\ndt{Interfaz de
453 Usuario Gráfica}, eclipsan sus equivalentes de Subversion. Al igual 448 Usuario Gráfica}, eclipsan sus equivalentes de Subversion. Al igual
454 que Mercurial, Subversion tiene un excelente manual de usuario. 449 que Mercurial, Subversion tiene un excelente manual de usuario.
455 450
456 Dado que Subversion no almacena la historia de revisiones en el 451 Dado que Subversion no almacena el historial de revisiones en el
457 cliente, es muy bueno para administrar proyectos que tienen muchos 452 cliente, es muy bueno para administrar proyectos que tienen muchos
458 ficheros binarios grandes y opacos. Si consigna cincuenta revisiones 453 ficheros binarios grandes y opacos. Si consigna cincuenta revisiones
459 de un fichero de 10MB que no es comprimible, el esapacio en el cliente 454 de un fichero de 10MB que no es comprimible, el esapacio en el cliente
460 de Subversion se mantendrá constante mientras que el espacio usado por 455 de Subversion se mantendrá constante mientras que el espacio usado por
461 cualquier Sistema Distribuido de Control de Revisiones crecerá 456 cualquier Sistema Distribuido de Control de Revisiones crecerá
467 para permitirle al usuario poner una cerradura a un fichero, de modo 462 para permitirle al usuario poner una cerradura a un fichero, de modo
468 que tenga un permiso exclusivo para consignar cambios, puede ser una 463 que tenga un permiso exclusivo para consignar cambios, puede ser una
469 ventaja significativa en un proyecto donde los ficheros binarios sean 464 ventaja significativa en un proyecto donde los ficheros binarios sean
470 usados ampliamente. 465 usados ampliamente.
471 466
472 Mercurial puede importar la historia de revisiones de un repositorio 467 Mercurial puede importar el historial de revisiones de un repositorio
473 de Subversion. También puede exportar historia de revisiones a un 468 de Subversion. También puede exportar el historial de revisiones a un
474 repositorio de Subversion. De esta forma es sencillo ``dar un 469 repositorio de Subversion. De esta forma es sencillo ``dar un
475 vistazo'' y usar Mercurial y Subversion en paralelo antes de decidirse 470 vistazo'' y usar Mercurial y Subversion en paralelo antes de decidirse
476 a dar el paso. La conversión de la historia es incremental, de modo 471 a dar el paso. La conversión de el historial es incremental, de modo
477 que puede aplicar una conversión inicial, y después conversiones 472 que puede aplicar una conversión inicial, y después conversiones
478 pequeñas y adicionales posteriormente para traer nuevos cambios. 473 pequeñas y adicionales posteriormente para traer nuevos cambios.
479 474
480 \subsection{Git} 475 \subsection{Git}
481 476
526 cambios relacionados en consignaciones atómicas, pemitiendo que con 521 cambios relacionados en consignaciones atómicas, pemitiendo que con
527 facilidad la gente ``rompa la construcción'': una persona puede 522 facilidad la gente ``rompa la construcción'': una persona puede
528 consignar exitósamente parte del cambio y estar bloqueada por la 523 consignar exitósamente parte del cambio y estar bloqueada por la
529 necesidad de una mezcla, forzando a otras personas a ver solamente una 524 necesidad de una mezcla, forzando a otras personas a ver solamente una
530 porción del trabajo que estaban buscando hacer. Esto afecta también 525 porción del trabajo que estaban buscando hacer. Esto afecta también
531 %TODO historia/historial 526 la forma como usted trabaja con el historial del proyecto. Si quiere
532 la forma como usted trabaja con la historia del proyecto. Si quiere
533 ver todas las modificaciones que alguien hizo como parte de una tarea, 527 ver todas las modificaciones que alguien hizo como parte de una tarea,
534 necesitará inspeccionar manualmente las descripciones y las marcas de 528 necesitará inspeccionar manualmente las descripciones y las marcas de
535 tiempo de cambio de cada fichero involucrado (esto, si usted saber 529 tiempo de cambio de cada fichero involucrado (esto, si usted saber
536 cuáles eran tales ficheros). 530 cuáles eran tales ficheros).
537 531
541 repositorio. Casi no tiene chequeo de consistencia interna, por lo 535 repositorio. Casi no tiene chequeo de consistencia interna, por lo
542 tanto es casi imposible identificar por que o cómo se corrompió un 536 tanto es casi imposible identificar por que o cómo se corrompió un
543 repositorio. Yo no recomendaría un repositorio de CVS para proyecto 537 repositorio. Yo no recomendaría un repositorio de CVS para proyecto
544 alguno, ni existente ni nuevo. 538 alguno, ni existente ni nuevo.
545 539
546 Mercurial puede importar la historia de revisiones de CVS. De todas 540 Mercurial puede importar el historial de revisiones de CVS. De todas
547 maneras hay ciertas precauciones que aplican; las cuales también son 541 maneras hay ciertas precauciones que aplican; las cuales también son
548 necesarias para cualquier herramienta importadora de historial de 542 necesarias para cualquier herramienta importadora de historial de
549 CVS. Debido a la falta de atomicidad de cambios y el no versionamiento 543 CVS. Debido a la falta de atomicidad de cambios y el no versionamiento
550 de la jerarquía del sistema de ficheros, es imposible reconstruir 544 de la jerarquía del sistema de ficheros, es imposible reconstruir
551 completamente la historia de CVS con precisión; hay cierto trabajo de 545 completamente el historial de CVS con precisión; hay cierto trabajo de
552 conjetura involucrado y los renombramientos tampoco se 546 conjetura involucrado y los renombramientos tampoco se
553 mostrarán. Debido a que gran parte de la administración avanzada de 547 mostrarán. Debido a que gran parte de la administración avanzada de
554 CVS tiene que hacerse manualmente y por lo tanto es proclive al error, 548 CVS tiene que hacerse manualmente y por lo tanto es proclive al error,
555 es común que los importadores de CVS encuentren muchos problemas con 549 es común que los importadores de CVS encuentren muchos problemas con
556 repositorios corruptos (marcas de tiempo totalmente desubicadas y 550 repositorios corruptos (marcas de tiempo totalmente desubicadas y
557 ficheros que han permanecido con candados por más de una década son 551 ficheros que han permanecido con candados por más de una década son
558 dos de los problemas menos interesantes de los que puedo retomar de mi 552 dos de los problemas menos interesantes de los que puedo retomar de mi
559 experiencia personal). 553 experiencia personal).
560 554
561 %TODO historia/historial 555 Mercurial puede importar el historial de revisiones de un repositorio
562 Mercurial puede importar la historia de revisiones de un repositorio
563 CVS. 556 CVS.
564 557
565 \subsection{Herramientas comerciales} 558 \subsection{Herramientas comerciales}
566 559
567 Perforce tiene una arquitectura centralizada cliente/servidor sin 560 Perforce tiene una arquitectura centralizada cliente/servidor sin
594 \section{Migrar de otra herramienta hacia Mercurial} 587 \section{Migrar de otra herramienta hacia Mercurial}
595 588
596 Mercurial viene con una extensión llamada \hgext{convert}, que puede 589 Mercurial viene con una extensión llamada \hgext{convert}, que puede
597 importar historiales de revisiones de forma incremental desde varias 590 importar historiales de revisiones de forma incremental desde varias
598 herramientas de control de revisiones. Por ``incremental'', quiero 591 herramientas de control de revisiones. Por ``incremental'', quiero
599 decir que puede migrar toda la historia de un proyecto en una primera 592 decir que puede migrar toda el historial de un proyecto en una primera
600 instancia y después volver a ejecutar la migración posteriormente para 593 instancia y después volver a ejecutar la migración posteriormente para
601 obtener los nuevos cambios que han sucedido después de la migración 594 obtener los nuevos cambios que han sucedido después de la migración
602 inicial. 595 inicial.
603 596
604 A continuación presentamos las herramientas de revisiones que soporta 597 A continuación presentamos las herramientas de revisiones que soporta