Está en la página 1de 6

Plataformas de desarrollo colaborativo y

repositorios (Git, Github)


Jorge Andrés Henández Galeano
jhernandezga@unal.edu.co
Programación orientada a Objetos
Universidad Nacional de Colombia
June 26, 2020

Introducción
En la presente investigación se presentan la principales herramientas de desarrollo colaborativo en
software y los conceptos básicos que son necesarios para abordarlas de una forma básica.

Hoy en dı́a de existen múltiples herramientas de comunicación y colaboración remotas, tales como
foros, chats,plataformas de colaboración en tiempo real, nubes y demás. Sin embargo, en el desar-
rollo de software, principalmente en donde múltiples programadores aportan a un proyecto, se hacen
necesarias nuevas formas y metodologı́as que permitan una colaboración ágil, segura y controlada[1].
Es aquı́ en donde entran a jugar un papel importante las plataformas de desarrollo colaborativo,
tales como los sistemas de control de versiones y los repositorios remotos.

Dado esto, se hace necesario que en un curso fundamental y con un alto grado de trabajo en
equipo como lo es programación orientada objetos, se aprenda de manera básica los conceptos y
formas de colaboración remota, que permitiran el desarrollo ágil de proyectos conjuntos en posteriores
asignaturas.

1 Desarrollo
Un repositorio es un espacio de trabajo en el que se pueden almacenar y organizar datos. En el caso
del código, este se puede almacenar en un contenedor llamado repositorio que es el que se difunde y
se administra en un sistema de control de versiones. Su principal objetivo es integrar y sincronizar
el código hecho por un equipo, pero también permite albergar la documentación del desarrollo y la
promoción del código[2].

1.1 Sistemas de control de versiones


Un control de versiones es un sistema que permite monitorizar y registrar cambios en archivos a
través del tiempo, permitiendo ası́ recuperar versiones especı́ficas más adelante[3]. Generalmente
estos sistemas son usados para manejo de código fuente, pero pueden ser usados con casi cualquier
tipo de de archivos.

1
Son muchas las ventajas del uso de un sistema de control de versiones. Entre las cuales se encuen-
tra el poder restaurar archivos a versiones anteriores, comparar versiones, ver quién hizo cambios y
recuperar archivos borrados fácilmente[3]. Este tipo de sistemas facilita trabajar en entornos desar-
rollo de software ya que permite manipular y moverse a través de versiones del proyecto sin estar
copiando individualmente las versiones a rutas o carpetas separadas.

Existen diferentes tipos de sistemas de control de versiones, en general los más usados son lo
sistemas distribuidos. En estos, se dispone de un servidor que almacena el repositorio, de modo
que uno o más clientes puedan trabajar conjuntamente.Cada vez que un cliente hace uso de este
repositorio no solo descarga la última versión, sino que replica todo el repositorio con su historial, de
manera que si el servidor falla la información se puede recuperar de los clientes[3].

Figure 1: Control de versiones Distribuido


Tomada de:[3]

1.2 Git
Git es un sistema de control de versiones distribuido y escalable que permite un nivel de acceso com-
pleto a través de comandos[4].Fue desarrollodao por Linus Torvalds con la idea de mantener eficiencia
y confiabilidad a la hora del mantenimiento de aplicaciones de gran volumen de archivos de código[5].

Una de las principales caracterı́sticas de Git es el manejo de la información en forma de in-


stantáneas.Contrario a la mayorı́a de sistemas de control de versiones, Git no almacena la información
como una lista de cambios en los archivos, sino que lo hace como un conjunto de instantáneas en un
sistema de mini archivos[3]. Esta caracterı́stica permite entre otras cosas, el manejo de ramas que no
atan los cambios y el desarrollo a un avance lineal, permitiendo un desarrollo más rápido y flexible.

2
Figure 2: Cambios en CVS
Tomada de: [3]

Figure 3: Cambios en Git


Tomada de: [3]

Casi todas las operaciones de Git son locales, esto significa que no es necesario almacenar el
repositorio en un servidor y es posible administrar todo el sistema desde la máquina local[3]. Esto
a pesar de que brinda velocidad, flexibilidad y control, hace que se necesiten de servicios remotos
adicionales si se quiere trabajar de forma colaborativa con otros programadores de manera remota.

Cuando se registan cambios en Git, solo se añade la información a la base de datos y estos se
pueden deshacer o recuperar sin peligro alguno de causar daños graves al resto de archivos.

1.2.1 Estados en Git


Los archivos en git tienen 3 estados básicos: modified, staged y committed. Estos aparecen en dis-
tintas situaciones. Modified significa que el archivo ha sido modificado, pero no se han confirmado
los cambios. Staged significa que se ha marcado el archivo modificado para ser próximamente con-
firmado el cambio y Committed significa que los cambios se ha confirmado y se han guardado en
la base de datos de Git[3]. Estos estados llevan a un flujo de trabajo que siempre se sigue:

Se inicia con un directorio de trabajo en la máquina local Figura.4, en el que se modifican los
archivos. Una vez modificados los archivos, se pasan a un área de preparación que contiene los cam-
bios que a futuro se confirmarán. Cuando el área de preparación está lista, se procede a realizar un
commit que confirma todos los cambios que están en el área de preparación[3]. De aquı́ todos los
cambios del área de preparación pasan a la base de datos de Git que se conoce como el directorio de
Git, que mantiene los cambios permanentes, con historial y listo para ser compartido a un repositorio
remoto.

En general todo el flujo de trabajo básico y demás opciones relacionadas con Git se hacen de man-

3
Figure 4: Estados en Git .Tomada de: [6]

era manual a través de comandos y la consola. Sin embargo, en los diferentes IDE’s actuales se cuenta
con opciones para realizar todo este trabajo de manera gráfica a través de botones y campos de texto.

1.3 Ramas y uniones


La ramificación es una caracterı́stica presente en varios sistemas de control de versiones y básicamente
consiste en realizar una subdivisión del código en secciones a partir de un sección inicial. Esto es
partir el mismo código en diferentes ramas para que continuen su desarrollo de manera independiente.
Una de las ventajas de Git es que es posible tener múltiples ramas y son muy rápidas tanto de crear
como de borrar[3].

Figure 5: Ramas. Tomada de: [7]

La rama en la que se inicia el repositorio y en la que se tiene el proyecto principal es llamada la


rama master. Normalmente es posible que se requiera en algún momento realizar un gran cambio
o agregar una nueva caracterı́stica pero que no se quiera afectar el proyecto o el avance de los otros
desarrolladores,y es aquı́ en donde tienen importancia las bifurcaciones o forks[7], para trabajar de
manera independiente de la rama master. Las ramas en git son manejadas por apuntadores móviles
que apuntan a las instantáneas de los commits y es posible el cambio/movilidad entre ramas y su
fusión[3].

Es importante saber que en algunas ocasiones el fusionar 2 ramas va a ser de manera directa y
rápida. Sin embargo, puede suceder que existan conflictos que impidan fusionar las ramas, como
por ejemplo, que dos ramas hayan modificado el mismo archivo en la misma lı́nea. En este caso Git
no escoge qué cambio dejar, es deber del programador solucionar el conflicto y Git brinda algunas
ayudas para localizarlos.

4
1.4 Repositorios remotos
Con un sistema de control de versiones como Git, es posible tener un control y un desarrollo ágil. Sin
embargo, si lo que realmente se quiere es colaborar y trabajar con múltiples personas es necesario
un repositorio remoto.

Un repositorio remoto no es más que un repositorio ubicado en un servidor que da acceso a todos
los colaboradores y permite un trabajo con Git[3]. Ası́, cada uno de los colaboradores puede tener su
copia del repositorio y enviar actualizaciones al repositorio remoto, para que posteriormente el resto
de colaboradores observen y actualicen sus propios repositorios con los nuevos cambios.

Existen diferentes formas de obtener un repositorio remoto, pero en general los más usados
que son casi un estándar es a través de las plataformas de GitHub y GitLab. Estas plataformas
además proveer el servicio de repositorios remotos con sus propios estándares y protocolos, ofrecen
caracterı́sticas para integracion, visualización de cambios y la comunicación del equipo.
En este trabajo se centrará la atención principalmente en GitHub, que es la plataforma más us-
ada. A pesar de esto, muchos de los conceptos que se relacionaran con GitHub y el uso de Git son
aplicables de la misma manera a GitLab.

1.4.1 GitHub
GitHub es una plataforma que permite compartir código que usa Git para el control de versiones.
Permite el trabajo colaborativo e incluye herramientas como gestor de bugs, creación de wikis,
tablones, visor de ramas y alojamiento de páginas estáticas de los proyectos[8]. En palabras simples,
se puede decir que GitHub es como una red social de código.

2 Conclusion
References
[1] J. González Barahona, J. Seoane Pascual, and G. Robles, Introducción al software libre.
Barcelona: Fundació per a la Universitat Oberta de Catalunya, 2003., 2003.

[2] A. G. Candil, “Git - cómo gestionar y cuidar nuestro código,” https://enmilocalfunciona.io/


git-como-gestionar-y-cuidar-nuestro-codigo/, 2018, accessed: 2020-06-24.

[3] S. Chacon and B. Straub, Pro Git, 2nd ed. USA: Apress, 2014.

[4] Git, “Documentación de git 2.27,” https://git-scm.com/docs/git, accessed: 2020-06-24.

[5] A. Cabrera, “Primeros pasos en git: Creación y gestión de repositorios,” https://platzi.com/


blog/introduccion-git/, 2015, accessed: 2020-06-24.

[6] M. Torres, “Git. control de versiones y trabajo colaborativo,” https://ualmtorres.github.


io/cursogitstic/tutorial/index.html#trueoperaciones-b-sicas-con-repositorios-locales, 2018, ac-
cessed: 2020-06-24.

[7] R. Diaz, “Guı́a de git,” http://www.migueldiazrubio.com/guia-de-git/, 2017, accessed: 2020-06-


24.

5
[8] D. Estevez, “The git, the bad and the ugly,” hhttps://legacy.gitbook.com/book/david-estevez/
the-git-the-bad-and-the-ugly/details, 2017, accessed: 2020-06-24.

También podría gustarte