Primeros pasos en la gestión de trabajo en equipo: el software de control de versiones, la forja y el repositorio

Buenas a todos,

Antes que nada, ¡encantada de poder participar en este sitio!

Me alegro de pertenecer a esta comunidad que anima a todas las chicas a acercarse al desarrollo de videojuegos, sin miedo a que se equivoquen o a ser juzgadas por querer aprender y preguntar.

Mi intención con esta entrada y con las siguientes es la de ir haciendo tutoriales o explicar conceptos relacionados con la programación. Casi siempre orientados hacia el desarrollo de videojuegos, aunque puede que alguna vez no sea de manera directa. Intentaré ser amena y explicarme de la mejor manera posible. Si no llegáis a entender algo, siempre podéis dejar en comentarios vuestras dudas y problemas 😉

Hoy comenzaré con algo que es bastante importante, no ya solo para equipos de desarrollo de videojuegos, sino para proyectos de programación en general. Os pongo en situación:

Normalmente, cuando trabajamos solos, nos limitamos a guardar nuestro trabajo en una carpeta dentro de nuestro ordenador, sin subirla a internet. Sin embargo, ¿qué pasa si tienes que trabajar con otros compañeros? Al principio, nos limitamos a enviarnos lo trabajado por correo. No obstante, esta opción acababa en desorganización por la lista de correos infinitos por cada cambio minúsculo que hiciera cada uno, luego que si un compañero no recibe el correo con la última revisión del trabajo y trabaja con una antigua, y otra serie de catastróficas desdichas. Habría que ser muy metódico y organizado para evitar todos estos problemas. Y aún así ocurrirían, recordad, la naturaleza siempre sigue su curso.

El siguiente paso lógico sería usar aplicaciones para subir ficheros en la nube: Dropbox, Google Drive, OneDrive… que nos permiten sin esfuerzo tener una carpeta en nuestro ordenador y, a la vez, compartirla con nuestros compañeros, pudiendo ser los cambios recibidos o enviados de manera inmediata. Siendo este método válido para trabajar en proyectos sencillos en los que involucran a varias personas trabajando en diferentes partes de un proyecto, sin pisarse el campo de trabajo ni trabajar en los mismos ficheros a la vez.

Pero llegará un momento en el que queramos ir a más: hacer proyectos de mediana o gran complejidad y en la que varias personas trabajen en lo mismo a la vez. Es entonces cuando empezarán los problemas graves para gestionar el proyecto.

¿Qué es lo que puede salir mal? En primer lugar, cuando alguien está trabajando en proyectos con cientos de ficheros (y de líneas de código en el caso del ámbito de la programación), lo normal es realizar una modificación para, posteriormente, probar si funciona y, si es así, continuar.

¿Y qué pasa en el caso de que no? Pues se intenta arreglar el fallo (más conocido como bug), pero a veces esto puede ser una lotería: puede que aparezcan más fallos al hacerlo, o que directamente no encuentres dónde está el problema. Ante estas situaciones, lo más normal es que quieras volver a una versión previa de todo tu trabajo, pero, una vez más, ¿y si no puedes porque no existe ningún control de qué has hecho y de cuánto tienes que volver atrás?

O por otro lado,  pensemos en que tenemos a varias personas trabajando en el mismo código de un proyecto. Una de ellas guarda sus modificaciones antes que los demás, el sistema al intentar sincronizar no sabrá cuál es la versión correcta y entrará en conflicto. Si tenemos suerte y el sistema que usan lo permite, este generará varias versiones distintas del mismo fichero, y si no, el trabajo de todos menos uno será borrado.

¿No hay manera de prevenir todos estos problemas? Claro que sí (guapi), con los software de control de versiones.

Estos permiten subir a un servidor local (en tu propio disco duro) o remoto, llamado repositorio, todos los datos del proyecto. Crean un registro en el seguimiento de versiones del proyecto y por cada modificación en un fichero, gestionan que se integre correctamente el cambio en la versión más reciente y lo anotan.

En todo momento podremos acceder a cualquier versión almacenada en el registro. Cuando ocurra un fallo en el proyecto siempre se podrá volver atrás de forma segura. En el caso de que varios estén trabajando en el mismo fichero, el sistema intentará automáticamente combinar los cambios y, si no puede, creará una versión con tus cambios y otra con los cambios más recientes. En cualquier caso, el sistema siempre te indicará cuales son las diferencias entre las diferentes versiones, incluso cuando no pueda unificar los ficheros.

Luego están las forjas, que no son más que servidores o alojamientos online que ofrecen su espacio de almacenamiento específicamente para crear repositorios. De esta forma, la gente puede colaborar con tu proyecto sin que tú estés en tu ordenador manteniendo el servidor que aloja al repositorio.

Existen distintos tipos de forjas ya sea según:

  • El tipo de software de control de versiones que usen.
  • Si permiten repositorios privados, solo los trabajadores del repositorio pueden verlo, o si son públicos, en los que cualquiera puede entrar a ojear el repositorio del proyecto.
  • Si son gratuitas o de pago. Algunas gratuitas tienen versiones premium con ventajas como crear tus repositorios privados o quitar el límite de miembros por repositorio.

Las forjas más usadas mundialmente son Github y Bitbucket, que utilizan el software de control de versiones Git. Son las más recomendables de usar para irse familiarizando en el uso del control de versiones y a trabajar en grupo con él. Además, dependiendo del motor de juegos, conocidos en inglés como game engine, los requerimientos iniciales para montar un repositorio y que funcione bien, pueden variar…

Pero eso es otra historia y será contada en otra ocasión.
Espero que os haya gustado el artículo y no os olvidéis que si tenéis dudas, sugerencias o críticas, podéis dejadlas en los comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s