SIU-Guarani/Version3.11.0/personalizaciones/trabajo diario

De SIU
Saltar a: navegación, buscar

Trabajo diario con personalizaciones

El trabajo diario de desarrollo de personalizaciones, especialmente si se comparte un grupo de trabajo, debe tener sus recaudos. Dado que se trabaja con SVN y con un entorno local especifico (BDs y configuraciones propias) se debe tener cuidado en la secuencia de comandos a ejecutar y los archivos que se suben al repositorio y se comparten con el resto del equipo.

SVN

SVN es un sistema de control de versiones centralizado. Trabaja con un repositorio centralizado de archivos en el cual todos los desarrolladores suben las modificaciones y nuevos archivos desarrollados y del cual adquieren los cambios subidos por otros desarrolladores del equipo. El concepto es simple: El repositorio tiene la ultima versión del código del proyecto. Los desarrolladores, periódicamente ejecutan un "svn update" para actualizar su carpeta local con los cambios que se hayan realizado en el repositorio (las nuevas versiones) y cuando su tarea de desarrollo esta concluida, se versionan/suben/commitean (svn commit) los cambios realizados sobre los archivos del proyecto. De esta forma, el repositorio contiene la ultima versión del proyecto y cada desarrollador localmente, tiene su versión propia que normalmente consiste de la versión del repositorio con algunos archivos modificados. Hasta que un desarrollador no suba los archivos modificados, el resto del equipo no ve esos cambios. De esta manera, y dado que al actualizar o subir archivos modificados al repositorio el sistema advierte sobre conflictos en el caso en que se haya modificado algún archivo en común con otro miembro del equipo, se controla y ordena la forma de desarrollo conjunta sobre un mismo proyecto.

Lo que complica el trabajo en conjunto entre desarrolladores de un mismo equipo, es el trabajo sobre metadatos. Los metadatos, son archivos que guardan configuraciones sobre objetos nuevos o modificados que forman parte de las operaciones del sistema. Específicamente, representan la copia de las configuraciones de los objetos del sistema de la base Toba del proyecto en el sistema de archivos. Cada desarrollador comparte con el resto del equipo los cambios realizados sobre objetos del sistema o los nuevos objetos desarrollados a través de los archivos de metadatos. La dificultad radica en que una vez que un desarrollador adquiere nuevos cambios del repositorio en estos archivos, debe generarlos en su BD local de objetos. Si el objeto no fue modificado localmente, este cambio es trivial. Pero si hay conflictos, no es tan sencillo de solucionar como un conflicto en una linea de código de un archivo PHP del proyecto. Dado que ese conflicto es muy complejo de solucionar a nivel de BD, se soluciona a nivel de archivos a través del SVN.


Pasos para el trabajo diario con personalizaciones

A partir de la versión 3.10 del sistema, que utiliza la versión 2.6 del framework Toba, se incorpora el concepto de CONCENTRADOR.
El concentrador es un miembro designado del equipo de desarrollo, que es el encargado de la migración de personalizaciones entre las distintas versiones del sistema y la configuración inicial de las mismas. También se encarga de la salida de versiones propias y tareas de configuración general del proyecto y deployment. Basicamente, es quien deja al sistema listo ante la instalación/actualización de una versión del sistema para el trabajo con personalizaciones por parte de un grupo de desarrollo.

Mas información: http://toba.siu.edu.ar/trac/toba/wiki/Referencia/Personalizaciones

Una vez que el esquema de personalizaciones fue iniciado y el sistema puesto a punto para comenzar con el trabajo diario por parte del concentrador (siguiendo Actualización del sistema en un entorno de desarrollo con personalizaciones), se puede comenzar con el desarrollo de las personalizaciones.

Diariamente (se recomienda inclusive al comienzo de la jornada del trabajo), los miembros del equipo de desarrollo deben seguir los siguientes pasos para actualizar su copia de trabajo con los cambios realizados por el resto del equipo y versionar los cambios realizados en su copia local del proyecto. Es importante realizar SIEMPRE EN ORDEN estos pasos, ya que la ejecución en distinto orden de los mismos puede ocasionar la perdida de personalziaciones realizadas.

  1. Exportar los metadatos
    Este comando, baja los cambios realizados en la BD de Toba (configuración de componentes - los objetos modificados o agregados) al sistema de archivos.
     guarani exportar
  2. Actualizar el código
    Se deben traer los nuevos cambios subidos al repositorio por otros miembros del equipo, para poder incorporarlos a nuestra BD y detectar conflictos (si es que existen). Ubicados en la carpeta guarani:
     svn update
  3. Importar nuevas personalizaciones - Regenerar el sistema
    Para la importación de los nuevos metadatos actualizados a nuestra BD local del sistema, ejecutar:
     guarani regenerar
    IMPORTANTE: Cuando anteriormente mencionamos que se debe tener cuidado cuando se versionan cambios y se trabaja en un equipo de desarrollo, nos referíamos por ejemplo, a lo que sucede si se ejecutan los pasos mencionados anteriormente en orden inverso. Específicamente, primero se traerían los cambios del repositorio (con "svn update") y luego se pisarían los mismos (o al menos existiría un riesgo potencial de que esto sucediese) con el comando "guarani exportar" por lo que la ejecución de estos pasos debe ser siempre en este orden. Prestar especial atención en esto.
  4. Subir nuestros cambios al repositorio
    Si se han realizado cambios que se desea compartir con el resto del equipo, se deben subir los cambios al repositorio para que el resto pueda ver/usar los mismos. Para esto, realizar los siguientes pasos:
    1. Chequeo de cambios
      Antes de comitear los cambios realizados, se recomienda chequear que archivos son los que se van a subir. Para esto, ejecutar lo siguiente dentro de la carpeta guarani:
       svn st
      Este comando muestra un listado de los archivos nuevos o modificados a subir del sistema. Los archivos indicados por "?" son archivos nuevos aun no agregados (con svn add) y no serán subidos. Los archivos modificados se indican con "M" y los nuevos archivos agregados con "A".
    2. Subir archivos
      Para efectivizar la subida de cambios al repositorio, se recomienda incluir un mensaje de log acorde a las personalizaciones subidas, que sirvan a otros miembros del equipo para identificar el conjunto de archivos que descargaran del repositorio con este cambio. Ejecutar el siguiente comando:
      svn commit -m "Personalización XXXXX"