Tema 10 - Sistemas de Control de Versiones de أ؛ltima ... Tema 10 - Sistemas de Control de...

download Tema 10 - Sistemas de Control de Versiones de أ؛ltima ... Tema 10 - Sistemas de Control de Versiones

of 22

  • date post

    09-May-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of Tema 10 - Sistemas de Control de Versiones de أ؛ltima ... Tema 10 - Sistemas de Control de...

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) I

    Tema 10 - Sistemas de Control de Versiones de última generación (DCA)

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) II

    HISTORIAL DE REVISIONES

    NÚMERO FECHA MODIFICACIONES NOMBRE

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) III

    Índice

    1. ¿Qué es un Sistema de Control de Versiones (SCV)? 1

    2. ¿En qué consiste el control de versiones? 1

    3. Conceptos generales de los SCV (I) 1

    4. Conceptos generales de los SCV (II) 2

    5. Tipos de SCV. 2

    6. Centralizados vs. Distribuidos en 90sg 2

    7. ¿Qué opciones tenemos disponibles? 2

    8. ¿Qué podemos hacer con un SCV? 3

    9. Tipos de ramas 3

    10. Formas de integrar una rama en otra (I) 3

    11. Formas de integrar una rama en otra (II) 4

    12. SCV’s con los que trabajaremos 4

    13. Git (I) 5

    14. Git (II) 5

    15. Git (III) 5

    16. Git (IV) 6

    17. Git (V) 6

    18. Git (VI) 7

    19. Git (VII) 7

    20. Git (VIII) 7

    21. Git (IX) 8

    22. Git (X) 8

    23. Git (XI) 9

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) IV

    24. Git (XII) 9

    25. Git (XIII) 9

    26. Git (XIV) 10

    27. Git (XV) 10

    28. Git (XVI) 11

    29. Git (XVII) 11

    30. Git. Vídeos relacionados 12

    31. Mercurial (I) 12

    32. Mercurial (II) 12

    33. Mercurial (III) 12

    34. Mercurial (IV) 13

    35. Mercurial (V) 13

    36. Mercurial (VI) 13

    37. Mercurial vs. Git 14

    38. Mercurial. Vídeos relacionados 14

    39. Bazaar (I) . It just works 14

    40. Bazaar (II) 14

    41. Bazaar (III) 15

    42. Bazaar (IV) 15

    43. Bazaar (V) 15

    44. Bazaar. Vídeos relacionados 16

    45. Git vs. Mercurial vs. Bazaar 16

    46. Prácticas individuales 16

    46.1. Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    46.2. Mercurial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    46.3. Bazaar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    46.4. Darcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) V

    47. Prácticas en grupo 17

    48. Aclaraciones 17

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) 1 / 17

    Logo DLSI

    Tema 10 - Sistemas de Control de Versiones de última generación Curso 2019-2020

    1. ¿Qué es un Sistema de Control de Versiones (SCV)?

    Se trata de un software que nos permite conocer información de las modificaciones que vamos haciendo a nuestro software.

    En los scv de hoy en día esta información se aplica como un todo al conjunto de archivos de nuestro producto que hemos ido modificando de alguna manera.

    Con estas modificaciones podemos:

    • Mantener la ultima versión de los archivos que queramos.

    • Volver a alguna versión anterior. . . no necesariamente la última.

    • Aislarlas para poder proporcionarlas a otro desarrollador como un parche.

    Pero si nos fijamos detenidamente, todo esto puede hacerse manualmente. . .

    2. ¿En qué consiste el control de versiones?

    ¿Qué nos aportan realmente?

    La gestión automática de los cambios que se realizan sobre uno o varios ficheros de un proyecto.

    Restaurar cada uno de los ficheros de un proyecto a un estado de los anteriores por los que ha ido pasando (no solo al inmediatamente anterior).

    Permitir la colaboración de diversos programadores en el desarrollo de un proyecto.

    Un histórico de las acciones llevadas a cabo, cúando y por quién. . . cosa muy útil cuando un proyecto es desarrollado por varias personas de manera simultanea.

    3. Conceptos generales de los SCV (I)

    Repositorio Es la copia maestra donde se guardan todas las versiones de los archivos de un proyecto.

    Copia de trabajo La copia de los ficheros del proyecto que podemos modificar. Cada desarrollador tiene la suya propia.

    Check Out / Clone La acción empleada para obtener una copia de trabajo desde el repositorio. En los scv distribuídos -como Git- esta operación se conoce como clonar el repositorio por que, además de la copia de trabajo, proporciona a cada programador su copia local del repositorio a partir de la copia maestra del mismo.

    Check In / Commit La acción empleada para llevar los cambios hechos en la copia de trabajo a la copia local del repositorio -CheckIn-. Esto crea una nueva revisión de los archivos modificados. Cada commit debe ir acompañado de un Log Message el cual es un comentario -Una cadena de texto que explica el commit- que añadimos a una revisión cuando hacemos el commit oportuno.

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) 2 / 17

    4. Conceptos generales de los SCV (II)

    Push La accion que traslada los contenidos de la copia local del repositorio de un programador a la copia maestra del mismo.

    Update/Pull/Fetch+Merge/Rebase Acción empleada para actualizar nuestra copia local del repositorio a partir de la copia maestra del mismo, además de actualizar la copia de trabajo con el contenido actual del repositorio local.

    Conflicto Situación que surge cuando dos desarrolladores hacen un commit con cambios en la misma región del mismo fichero. El scv lo detecta, pero es el programador el que debe corregirlo.

    Etiquetar Poner un nombre común a todos los ficheros bajo control de versiones de un proyecto en un instante determinado.

    Rama Representa una línea de evolución de nuestro software. Podemos tener todas las que queramos, pero normalmente una es especial: trunk, master, etc. . .

    5. Tipos de SCV.

    Por la forma de almacenar los contenidos

    Centralizados. Hay un único repositorio compartido por todos los desarrolladores. Sólo un responsable o grupo de responsables pueden llevar a cabo tareas administrativas en este repositorio. Es el caso de CVS y Subversion. Distribuidos: Cada usuario tiene su propio repositorio. Los repositorios de todos los desarrolladores del proyecto pueden intercambiar información entre ellos. Es habitual disponer de un repositorio central que sirve como sincronización entre todos los repositorios de los desarrolladores. Es el caso de git, mercurial, bazaar, monotone, etc. . .

    Por la forma de modificar los contenidos de la copia local

    Colaborativos: Varios desarrolladores pueden estar modificando el mismo fichero simultáneamente. Puden aparecer conflictos por modificar varios desarrolladores la misma parte del archivo. Es el caso de git o mercurial. Exclusivos: Sólo un desarrollador puede estar modificando un archivo a la vez, el resto sólo pueden leerlo. Una vez se han pasado los cambios al repositorio entonces ya lo puede modificar otro desarrollador, pero nuevamente sólo uno. Es el caso de RCS o de SourceSafe.

    6. Centralizados vs. Distribuidos en 90sg

    7. ¿Qué opciones tenemos disponibles?

    Hoy en día disponemos de muchos y diversos scv

    bazaar que es el sucesor de arch. CVS darcs git mercurial monotone subversion plasticscm, breve introducción en la wikipedia perforce, breve introducción en la wikipedia bitkeeper

    http://www.nongnu.org/cvs/ http://www.subversion.tigris.org/ http://git-scm.com/ https://www.mercurial-scm.org/ http://bazaar.canonical.com/en/ http://www.monotone.ca/ http://git-scm.com/ https://www.mercurial-scm.org/ https://en.wikipedia.org/wiki/Revision_Control_System http://msdn.microsoft.com/en-us/library/3h0544kx(v=vs.80).aspx http://bazaar.canonical.com/en/ http://www.gnu.org/software/gnu-arch/ http://www.nongnu.org/cvs/ http://darcs.net/ http://git-scm.com/ https://www.mercurial-scm.org/ http://www.monotone.ca/ http://www.subversion.tigris.org/ http://www.plasticscm.com/ https://es.wikipedia.org/wiki/Plastic_SCM http://www.perforce.com/ https://es.wikipedia.org/wiki/Perforce http://www.bitkeeper.com/

  • Tema 10 - Sistemas de Control de Versiones de última generación (DCA) 3 / 17

    8. ¿Qué podemos hacer con un SCV?

    Operaciones basicas

    Crear un repositorio Clonar un repositorio Actualizar un repositorio local con cambios remotos Crear un commit Actualizar un repositorio remoto con cambios locales Crear una rama local y hacerla más tarde remota. Importar cambios de una rama en otra.

    9. Tipos de ramas

    Ramas de largo recorrido

    Por lo general indican distintas versiones estables de nuestro software (v1.0, v2.0, etc. . . ) Es el caso de ramas como master o trunk. Algunos proyectos disponen de ramas que complementan a las anteriores: next, proposed, pu (proposed updates).

    Ramas puntuales

    Son ramas que se crean para trabajar en ellas en un solo aspecto. En inglés se las suele llamar Topic Branches. Puede representar la corrección de un fallo, el añadido de una característica nueva o incluso probar algo de forma experimental. Algunos desarrolladores emplean un prefijo en su nombre para identificar para qué se crearon: • Tip: Una idea ( tip-speedincrease, tip/memsizereduction, etc. . . ) • Wip: Work in Progress ( wip-bugdetection, etc. . . ) • Hotfix: Arreglo de un fallo ( hotfix/segfault