Gestión de versiones en Android

Tan importante como mantener nuestro código bien estructurado es mantener un control de versiones del mismo. Muchos piensan que esto solo es necesario en equipos grandes de trabajo en los que varios programadores actualizan un mismo módulo del código, pero imaginemos el siguiente caso:

Tenemos publicada una versión de nuestra APP en el market a la que estamos cambiando la interfaz a una más moderna, a una que utiliza Material Design por ejemplo. Suponemos que este cambio puede llevar un tiempo y que durante ese lapsus de tiempo la aplicación que tenemos en producción tiene un bug importante. ¿Que hacemos? ¿Esperamos a acabar esa nueva versión o aplicamos un parche a la que ya tenemos? Para todo esto nos ayudarán los SCVs (sistemas de control de versiones).

Las virtudes por tanto son muchas, nos permite tener un histórico de los cambios que se han realizado en el código pudiendo volver a un estado anterior del mismo, mantener un backup de nuestras fuentes al que podamos acceder si perdemos esa información, modificaciones concurrentes del código y además tener la foto de las versiones que hemos publicado para volver a cualquiera de ellas sin afectar al trabajo que tengamos en nuestras manos.

Qué herramienta elegir

Hay muchos y diferentes SCVs (o VCS de sus siglas en ingles) que nos ayudarán a llevar a cabo esta tarea de una manera sencilla:

  • Subversion
  • CVS
  • Git
  • ClearCase
  • Google Cloud

Y muchos productos que implementan estas especificaciones en su parte servidor y en la cliente.

En este post os explicaremos unos pasos sencillos para gestionar vuestras APPs con Git y Android Studio, todos ellos tiene sus pros y sus contras, hemos elegido este SCV por ser uno de los más completos y sencillos de implantar, nos servirá tanto para equipos grandes como para equipos pequeños, permite trabajar offline manteniendo una copia del repositorio en local y tenemos herramientas gratuitas que lo soportan.

Para la parte servidor hemos elegido BitBucket de Atlassian, por ser un servidor en la nube que nos permite mantener repositorios privados para equipos de hasta 5 personas. Como cliente podremos utilizar el que incluye Android Studio de manera nativa y en este caso nos vamos a apoyar en otra herramienta de Atlassian que nos da una visión de todos nuestros repositorios: SourceTree.

Configurar e instalar el SCV

Ambas herramientas utilizan por debajo el cliente de Git, en el  caso de SourceTree incluye embebida una versión del mismo, pero si lo utilizamos desde Android Studio deberemos tenerlo previamente instalado y configurar el directorio de instalación.

configurarGitAS

Si vamos a utilizar varios clientes, es recomendable que usen todos la misma versión de Git para que no se generen incompatibilidades. Podremos cambiarlo también en la herramienta de Atlassian en su configuración eligiendo que utilice el Git instalado en el sistema.

cambiarVersionGit

Desde el menú de Android Studio VCS > Enable Version Control Integration…  le indicamos al IDE que nuestro proyecto trabajará con gestión de versiones y qué SCV utilizamos, si seleccionamos Git se generará en la misma carpeta del proyecto un repositorio local.

Crear y añadir repositorio remoto

Con esto podría ser suficiente, pero en este caso vamos a añadir un origen remoto del repositorio que generaremos en BitBucket.

crearRepositorio

Podremos añadir este repositorio como origen  desde la línea de comandos o hacerlo desde la herramienta SourceTree.

guardarRepositorio

Subir los ficheros

Añadido el repositorio remoto, commitamos todos los archivos que queramos subir y el resto los añadimos al fichero .gitignore, archivos como compilados u otros ficheros de configuración, puede que no nos interese subirlos. Esta acción nos genera una rama (branch) master. Recuerda poner una descripción en cada «commit». Ahora solo queda empujar (push) esos fuentes al repositorio remoto.

pushToOrigin

A partir de aquí, ya tendremos todo preparado, podremos hacer commit y push tanto desde el Android Studio como desde el SourceTree, generar Tags que representen las versiones de nuestras APPs y ramas con las diferentes líneas de trabajo que tengamos.

En el siguiente post, si el tema os interesa, seguiremos explicando más sobre este u otros Sistemas de Versionado, de momento, os dejamos un video de nuestro compañero Iñigo Serrano donde explica como trabajar con SourceTree.

Y tú, ¿Qué gestor de versiones has utilizado? ¿Crees que Git es la mejor opción para un proyecto como el tuyo?