¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Git
  3. Escenario de equipo
Extrait - Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion)
Extractos del libro
Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion) Volver a la página de compra del libro

Escenario de equipo

Contexto del escenario

Este capítulo tiene como objetivo mostrar cómo se puede usar Git en equipo, en particular gracias a GitLab, una interfaz web de gestión de repositorios.

Este capítulo va a cubrir muchos temas empleando un escenario para mostrar en qué casos es conveniente realizar ciertas acciones; sin embargo no puede ser exhaustivo sobre los casos de uso de Git en entornos empresariales, ya que existen muchas otras situaciones complicadas en la vida de un proyecto.

Rafael no solo trabaja de forma independiente; también es empleado en una empresa que diseña software a medida para sus clientes. Es desarrollador de esta empresa y forma parte del equipo de un producto que permite a los clientes gestionar sus proyectos: Improllow. Estos son los otros miembros de su equipo:

  • Noelia: jefa de proyecto.

  • Dimitri: desarrollador.

  • Benito: desarrollador.

  • Maxime: desarrollador.

  • Sebastián: administrador del sistema.

  • Marian: diseñadora web.

El producto que diseñan se utiliza en empresas de todos los tamaños. El software les permite gestionar sus proyectos con gran eficacia. Después de la instalación del software y la formación de los colaboradores, los equipos son capaces de medir con mayor facilidad la duración total de un proyecto y los riesgos de desviaciones.

Desde el comienzo del proyecto, el equipo no ha empleado ningún sistema de gestión de versiones. En efecto...

Resumen del proyecto

Antes de embarcarse en este capítulo, puede ser útil ensayar el software para estudiar su funcionamiento y la comprensión de los ejemplos del capítulo. Para esto, debe instalar Python y Django en su sistema (además de Git). Esta parte del capítulo solo tiene como objetivo mostrar el software final. No es necesario en absoluto para el aprendizaje de Git y el lector con prisas puede pasar directamente a la instalación de GitLab.

El proyecto se encuentra en los elementos descargables. El repositorio se encuentra en la carpeta 11/Improllow-up. Las librerías jQuery y AngularJS ya están generadas, la base de datos SQLite también, así como un usuario root. Sin embargo, falta instalar Python y sus dependencias, y luego iniciar el servidor.

Para estos pasos se considera que Git ya está instalado en la máquina.

1. Instalación de Python

En Windows, se requiere descargar el ejecutable de Python 3.5 a partir de la siguiente dirección: https://www.python.org/downloads/windows/

Durante la instalación, no se debe olvidar marcar la opción Add Python 3.5 to PATH. Esta opción permitirá acceder al ejecutable Python sin especificar la ruta absoluta.

Una vez instalado Python, este puede ejecutarse directamente a partir de Cygwin. Para comprobar que Python está accesible, se debe utilizar el siguiente comando en Cygwin (disponible a través del programa git bash):

python -V 

En Mac OS, se requiere descargar el ejecutable de Python 3.5 a partir de la siguiente dirección: https://www.python.org/downloads/mac-osx/. La continuación de la instalación será estándar....

Instalación de GitLab

GitLab es un software que se presenta en forma de una interfaz web que permite trabajar a varios colaboradores en un repositorio y que permite gestionar equipos de desarrolladores más fácilmente. GitLab presenta una serie de ventajas en comparación con el uso de un repositorio local compartido:

  • La ergonomía de una interfaz gráfica permite iniciarse con el software de forma rápida.

  • Se encuentra por defecto en hospedajes como DigitalOcean.

  • Se puede realizar algunas acciones directamente a partir de GitLab, como editar los archivos y hacer commit de las modificaciones.

  • GitLab ofrece funcionalidades adicionales a la gestión del repositorio, como herramientas de integración continua o un Wiki para centralizar la documentación.

La instalación de GitLab se explicará para una distribución de GNU/Linux Debian 8. Para instalar GitLab, en primer lugar se debe visitar la página de descargas del sitio oficial: https://about.gitlab.com/downloads/#debian8. En esta página GitLab ofrece instrucciones para instalar GitLab y todas sus dependencias.

Los comandos siguientes también pueden ejecutarse directamente a partir de una cuenta root, eliminando el sudo. Cabe recordar que el usuario es responsable de la seguridad de su servidor y que el uso de la cuenta root debe ser cuidadoso.

En primer lugar, hay que instalar las dependencias de GitLab. La instalación...

Creación de cuentas de usuario

Para crear las cuentas de usuario, en primer lugar se debe visitar la página de administración pulsando el icono en forma de llave. Aparece un vínculo en el menú de la izquierda; este vínculo representa una persona y hay que hacer clic en él para mostrar una lista de usuarios. De momento, esta lista solo contiene un único usuario: Administrator.

images/11-01.png

Hacer clic en el botón New User permite crear un nuevo usuario con varios campos para definir:

  • Name: nombre del usuario.

  • Username: nombre de usuario utilizado para conectar.

  • Email: e-mail del usuario.

  • Password: contraseña. No se requiere definir nada más, ya que se enviará un e-mail al usuario para poder conectarse.

  • Projects limit: número máximo de proyectos del usuario.

  • Can create group: permite autorizar al usuario a crear grupos.

  • Admin: define el usuario como administrador.

Pueden suministrarse otros como una dirección de Skype o su sitio web.

Para confirmar la creación de la cuenta, hay que pulsar el botón Create user.

Una vez creada la cuenta, GitLab redirige al Administrador a la página de perfil de la cuenta. En esta página, se puede actualizar la información del usuario haciendo clic en el botón Edit, en la parte superior. Esta página permite también visualizar la información del usuario y bloquearlo para que no siga teniendo acceso...

Creación del proyecto

Para crear un proyecto con GitLab, se requiere, en primer lugar, hacer clic en el botón New project en la parte superior derecha (el botón con forma de signo +). En este escenario, Noelia, la jefa de proyecto, añadirá el proyecto.

Aparecerá un formulario con los siguientes campos:

  • Project Path: define la ruta del proyecto. En este caso, Noelia solo introducirá el nombre del proyecto: Improllowup. La ruta por defecto (en Debian) donde se almacena el repositorio es /var/opt/gitlab/git-data/repositories/.

  • Import project from: permite importar un proyecto existente ya hospedado en un servicio en línea. Aquí, no se importará ningún proyecto.

  • Description: especifica una descripción del proyecto. En este caso, Noelia escribe la frase siguiente: Gestores de proyectos y tareas similares.

  • Visibility Level: permite definir un nivel de visibilidad. Seleccionar Private solo permite autorizar a algunos usuarios del servidor GitLab a utilizar el repositorio. Seleccionar Internal permite autorizar a todos los usuarios con cuenta en el servidor GitLab a utilizar el repositorio. Seleccionar Public permite autorizar a cualquier persona a utilizar el repositorio (potencialmente todo el mundo si se puede acceder al servidor por Internet). En el caso del proyecto Improllowup, la visibilidad se define en Private.

images/11-03.png

Cuando se acepta el formulario, se redirige al usuario a la página...

Asignar los proyectos a los usuarios

Una vez creado el proyecto, este solo está accesible para Noelia. Para asignar a otros usuarios, en primer lugar debe ir a la página del proyecto. A continuación, aparece un nuevo vínculo en el menú Members. Haciendo clic en él, Noelia accede a la lista de usuarios vinculados al proyecto. Por el momento, ella es la única integrante de esta lista. El botón Add members, en la parte superior, despliega un marco que permite añadir usuarios escribiendo sus nombres en el campo People. En el campo Project Access, ella les asigna acceso Developer. La asignación del proyecto se hará entonces previa validación del formulario.

images/11-05.png

Por defecto, GitLab protege ciertas ramas de los push de los desarrolladores. Esto permite autorizar solo a los usuarios con acceso Master a realizar push en estas ramas. Noelia desea autorizar a los desarrolladores de su equipo a efectuar push de sus ramas sin problemas, pero no quiere asignarles acceso Master. Para conseguir esto, Noelia debe, antes que nada, dirigirse a la página del proyecto. Luego, debe pulsar en el enlace del menú izquierdo Settings (en el pie de página). El menú se vuelve a actualizar y deja ver un vínculo Protected Branches, en el que Noelia hace clic. En el pie de esta página se encuentra la lista de las ramas protegidas (por defecto solo la rama master).

Para autorizar a los desarrolladores...

Primer commit del proyecto

Noelia pidió a Rafael ocuparse del primer commit, que situará el proyecto en el repositorio respetando las mejores prácticas.

1. Redacción del archivo .gitignore

Al agregar el proyecto al repositorio, es importante no añadir archivos innecesarios, es decir, archivos que no deben seguirse. Bajo esta óptica, Rafael debe identificar los archivos que hay que ignorar.

Rafael, por lo tanto, utilizará el siguiente comando para obtener la lista de todos los archivos que se añadirían con un git add --all:

git add --all --dry-run > lista_de_archivos.txt 

Este comando creará un archivo lista_de_archivos.txt que contendrá toda la lista de archivos que se añadirían con un git add --all.

a. Ignorar las librerías

Mirando detenidamente el contenido del archivo, Rafael se da cuenta de que las librerías contienen muchos archivos e impiden una lectura fluida. Luego va a crear su archivo .gitignore añadiendo en primer lugar el siguiente contenido:

/improllowup/static/lib 

Esta modificación hará el archivo más digerible y permitirá un análisis más detallado de su contenido al pasar de 2706 líneas a 136 líneas.

b. Ignorar los archivos específicos de la tecnología

Algunos archivos del repositorio son creados por Python, pero no hay necesidad de seguirlos. Es el caso de los archivos...

Fase de desarrollo

Para la fase de desarrollo, todos los participantes han clonado el repositorio en sus equipos. También crearon su archivo improllowup/settings/local.py.

1. Funcionalidad gráfica

A raíz de una propuesta de Marian en una pausa para tomar café, nace la idea de añadir gráficos al software. Esto permitiría visualizar rápidamente la distribución de las tareas de un desarrollador por proyecto. Dimitri debe crear la rama graph_employee que contendrá los desarrollos relacionados con esta funcionalidad. Para ello, debe asegurarse en primer lugar de comenzar su rama a partir del commit más reciente de la rama develop. En consecuencia, debe actualizar su repositorio recuperando el commit de la rama develop.

git pull --all 

Después de haber recuperado los commits, Rafael comprueba las ramas existentes con el comando git branch -a, que muestra la siguiente salida:

* master 
  remotes/origin/HEAD -> origin/master 
  remotes/origin/develop 
  remotes/origin/master 

La rama local develop no se crea de forma automática; Dimitri debe crearla explícitamente a partir de la rama remota seguida con este comando:

git checkout remotes/origin/develop 
git checkout -b develop 

Después de haber recuperado los commits más recientes y colocarse en la rama develop, Dimitri puede crear su base de datos con los siguientes comandos:

python3 manage.py migrate --settings=improllowup.settings.local 

Dimitri debe inicializar luego los repositorios integrados:

git submodule init 
git submodule update 

Para usar jQuery, se requiere generar el archivo JavaScript que se importará en el proyecto.

cd improllowup/static/lib/js/jquery 
sudo npm run build 
cd - 

El comando cd - permite situarse en el directorio anterior. El atajo - también puede utilizarse con el comando git checkout.

Dimitri crea entonces un superusuario con el siguiente comando:

python3 manage.py createsuperuser --username=root 
--email=git@dauzon.com --settings=improllowup.settings.local 

Después de haber ejecutado estos comandos, su proyecto pasa a ser funcional. Puede entonces crear su rama a partir de la rama develop:

git checkout -b graph_employee 
git commit --allow-empty -m "C3: Creación de la rama graph_employee" 
git push -u origin graph_employee 

El commit está vacío...

Puesta en línea del repositorio en GitHub

Para que los lectores de este libro puedan descargar fácilmente un repositorio explotable y seguir la evolución de este proyecto, es preferible hospedar también el repositorio en GitHub. En una situación más realista, esta parte puede explicar cómo una empresa puede liberar el código fuente de uno de sus proyectos. Esta parte mostrará los pasos para poner en línea un proyecto en GitHub, teniendo en cuenta las mejores prácticas.

1. Creación de una cuenta GitHub

Para publicar un repositorio en GitHub, se requiere una cuenta de GitHub. Para esto, hay que visitar el sitio http://github.com y pulsar el enlace Sign Up, en la parte superior de la página. Aparecerá un formulario que solicita un nombre de usuario (Username), una dirección e-mail (Email Address) y una contraseña (Password).

images/11-07.png

Después de haber rellenado esta información y pulsar el botón Create an account, hay que elegir el tipo de cuenta que se va a guardar (el plan gratuito solo permite poner en línea repositorios públicos) y hacer clic en Finish sign up.

Una vez conectado a la cuenta GitHub, puede acceder a su perfil haciendo clic en la parte superior derecha en su avatar y a continuación en Your Profile.

2. Creación de un repositorio

A partir de la página de perfil, se puede ver la lista de los repositorios...