Skip to content
Newer
Older
100644 55 lines (28 sloc) 7.19 KB
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
1 == Introducción ==
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
2
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
3 Voy a usar una analogía para explicar el control de versiones. Mira http://es.wikipedia.org/wiki/Control_de_versiones[el artículo de wikipedia sobre control de versiones] para una explicación más cuerda.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
4
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
5 === Trabajar Es Jugar ===
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
6
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
7 He jugado juegos de PC casi toda mi vida. En cambio, empecé a usar sistemas de control de versiones siendo adulto. Sospecho que no soy el único, y comparar ambas cosas puede hacer que estos conceptos sean más fáciles de explicar y entender.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
8
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
9 Piensa en editar tu código o documento, o lo que sea, como si fuera jugar un juego. Una vez que progresaste mucho, te gustaría guardar. Para lograrlo, haces click en el botón de "Guardar" en tu editor de confianza.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
10
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
11 Pero esto va a sobreescribir tu versión antigua. Es como esos viejos juegos que solo tenían un slot para guardar: se podía guardar, pero nunca podías volver a un estado anterior. Esto era una pena, porque tu versión anterior podía haber estado justo en una parte que era particularmente divertida, y podías querer volver a jugarla algún día. O peor aún, tu partida actual está en un estado donde es imposible ganar, y tienes que volver a empezar.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
12
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
13 === Control De Versiones ===
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
14
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
15 Cuando estás editando, puedes "Guardar Como..." un archivo diferente, o copiar el archivo a otro lugar antes de guardar si quieres probar versiones viejas. También puedes usar compresión para ahorrar espacio. Esta es una forma primitiva y muy trabajosa de control de versiones. Los videojuegos han mejorado esto hace ya tiempo, muchas veces permitiendo guardar en varios slots, fechados automáticamente.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
16
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
17 Hagamos que el problema sea un poco más complejo. Imagina que tienes un montón de archivos que van juntos, como el código fuente de un proyecto, o archivos para un sitio web. Ahora, si quieres mantener una vieja versión, debes archivar un directorio completo. Tener muchar versiones a mano es inconveniente y rápidamente se vuelve costoso.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
18
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
19 Con algunos juegos, una partida guardada en realidad consiste de un directorio lleno de archivos. Estos videojuegos ocultan este detalle del jugador y presentan una interfaz conveniente para administrar diferentes versiones de este directorio.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
20
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
21 Los sistemas de control de versiones no son diferentes. Todos tienen lindas interfaces para administrar un directorio de cosas. Puedes guardar el estado del directorio tantas veces como quieras, y tiempo después puedes cargar cualquiera de los estados guardados. A diferencia de la mayoría de los juegos, normalmente estos sistemas son inteligentes en cuanto la conservación del espacio. Por lo general, solo algunos pocos archivos cambian de versión a versión, y no es un gran cambio. Guardar las diferencias en lugar de nuevas copias ahorra espacio.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
22
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
23 === Control Distribuído ===
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
24
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
25 Ahora imagina un juego muy difícil. Tan difícil para terminar, que muchos jugadores experientes alrededor del mundo deciden agruparse e intercambiar sus juegos guardados para intentar terminarlo. Los "Speedruns" son ejemplos de la vida real: los jugadores se especializan en diferents niveles del mismo juego y colaboran para lograr resultados sorprendentes.
f6bc35c @blynn Wrote about hooks.
blynn authored Jun 25, 2009
26 ¿Cómo armarías un sistema para que puedan descargar las partidas de los otros de manera simple? ¿Y para que suban las nuevas?
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
27
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
28 Antes, cada proyecto usaba un control de versiones centralizado. Un servidor en algún lado contenía todos los juegos salvados. Nadie más los tenía. Cada jugador tenía a lo sumo un un par de juegos guardados en su máquina. Cuando un jugador quería progresar, obtenía la última versión del servidor principal, jugaba un rato, guardaba y volvía a subir al servidor para que todos los demás pudieran usarlo.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
29
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
30 ¿Qué pasa si un jugador quería obtener un juego anterior por algún motivo? Tal vez el juego actual está en un estado donde es imposible ganar, porque alguien olvidó obtener un objeto antes de pasar el nivel tres, por que que se quiere obtener el último juego guardado donde todavía es posible completarlo. O tal vez quieren comparar dos estados antiguos, para ver cuánto trabajo hizo un jugador en particular.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
31
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
32 Puede haber varias razones para querer ver una revisión antigua, pero el resultado es siempre el mismo. Tienen que pedirle esa vieja partida al servidor central. Mientras mas juegos guardados se quieran, más se necesita esa comunicación.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
33
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
34 La nueva generación de sistemas de control de versiones, de la cual Git es miembro, se conoce como sistemas distribuídos, y se puede pensar en ella como una generalización de sistemas centralizados. Cuando los jugadores descargan del servidor central, obtienen todos los juegos guardados, no solo el último. Es como si tuvieran un mirror del servidor central.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
35
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
36 Esta operación inicial de clonado, puede ser cara, especialmente si el historial es largo, pero a la larga termina siendo mejor. Un beneficio inmediato es que cuando se quiere una versión vieja por el motivo que sea, la comunicación con el servidor es innecesaria.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
37
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
38 ==== Una Tonta Superstición ====
e2a574c More salesmanship in branch chapter
Ben Lynn authored Sep 6, 2007
39
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
40 Una creencia popular errónea es que los sistemas distribuídos son poco apropiados para proyectos que requieren un repositorio central oficial. Nada podría estar más lejos de la verdad. Fotografiar a alguien no hace que su alma sea robada, clonar el repositorio central no disminuye su importancia.
e2a574c More salesmanship in branch chapter
Ben Lynn authored Sep 6, 2007
41
f6bc35c @blynn Wrote about hooks.
blynn authored Jun 25, 2009
42 Una buena aproximación inicial, es que cualquier cosa que se puede hacer con un sistema de control de versiones centralizado, se puede hacer mejor con un sistema de versiones distribuído que esté bien diseñado. Los recursos de red son simplemente más costosos que los recursos locales. Aunque luego veremos que hay algunas desventajas para un sistema distribuído, hay menos probabilidad de hacer comparaciones erroneas al tener esto en cuenta.
e2a574c More salesmanship in branch chapter
Ben Lynn authored Sep 6, 2007
43
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
44 Un proyecto pequeño, puede necesitar solo una fracción de de las características que un sistema así ofrece. Pero, ¿usarías números romanos si solo necesitas usar números pequeños?. Además, tu proyecto puede crecer más allá de tus expectativas originales. Usar Git desde el comienzo, es como llevar una navaja suiza, aunque solo pretendas usarla para abrir botellas. El día que necesites desesperadamente un destornillador, vas a agradecer el tener más que un simple destapador.
e2a574c More salesmanship in branch chapter
Ben Lynn authored Sep 6, 2007
45
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
46 === Conflictos al fusionar ===
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
47
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
48 Para este tema, habría que estirar demasiado nuestra analogía con un videojuego. En lugar de eso, esta vez consideremos editar un documento.
cdcc211 Introduction
Ben Lynn authored Aug 30, 2007
49
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
50 Supongamos que Alice inserta una línea al comienzo de un archivo, y Bob agrega una línea al final de su copia. Ambos suben sus cambios. La mayoría de los sistemas automáticamente van a deducir un accionar razonable: aceptar y hacer merge (Nota del Traductor: fusionar en inglés) de los cambios, para que tanto la edición de Alice como la de Bob sean aplicadas.
3f5de71 @blynn Intro edits.
blynn authored May 20, 2008
51
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
52 Ahora supongamos que Alice y Bob han hecho ediciones distintas sobre la misma línea. Entonces es imposible resolver el conflicto sin intervención humana.Se le informa a la segunda persona en hacer upload que hay un conflicto de merge, y ellos deben elegir entre ambas ediciones, o cambiar la línea por completo.
3f5de71 @blynn Intro edits.
blynn authored May 20, 2008
53
a754b8c Intro fully translated
Rodrigo Toledo authored May 3, 2009
54 Pueden surgir situaciones más complejas. Los sistemas de control de versiones manejan automáticamente los casos simples, y dejan los más complejos para los humanos. Usualmente este comportamiento es configurable.
Something went wrong with that request. Please try again.