NotasTecnicas/trabajodiariopersonal/3.9


Trabajo Diario con Personalizaciones en la versión 3.9

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

Para empezar, un párrafo sobre 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

Una vez que el esquema de personalizaciones fue iniciado, de acuerdo a la documentación de instalación o actualización del sistema, se puede comenzar con el desarrollo de las personalizaciones. Para ver un ejemplo basico de personalziaciones en SIU-Guarani 3, ver: Ejemplo Básico de personalización de un reporte en SIU-Guarani 3

Supongamos que se han modificado metadatos y archivos PHP en el sistema a través del editor Toba y que se desea subir estos cambios al repositorio para que otros miembros del equipo puedan trabajar con ellos. Entonces, realizar los siguientes pasos:

1 - Exportar los metadatos personalizados

Este comando, baja los cambios realizados en la BD de Toba (configuracion de componentes - los objetos modificados o agregados) al sistema de archivos.

 guarani esquema_pers 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

Si se trajeron nuevos archivos con este comando, entonces incorporarlos con los siguientes pasos, sino pasar al paso 3.

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 2 pasos anteriores 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 esquema_pers exportar" por lo que la ejecución de estos pasos debe ser siempre en este orden. Prestar especial atención en esto.

2.1 Chequear conflictos

Dado que se han traído cambios en el repositorio en el paso anterior, debo proceder con la incorporación de los mismos a nuestra BD local de Toba. Para esto, primero debo chequear si existen conflictos con los metadatos actualmente existentes:

 guarani esquema_pers conflictos

Este comando genera el archivo conflictos.log indicando los posibles conflictos al realizar la importación de estos metadatos de forma tal de poder resolverlos manualmente antes de efectuar el siguiente comando.

2.2 Importar nuevas personalizaciones

Una vez resueltos los conflictos analizados en el paso anterior (si es que existían), se procede con la importacion de estos nuevos metadatos a nuestra BD local del sistema:

 guarani esquema_pers importar

3 - Subir nuestros cambios al repositorio

Una vez que se ha finalizado con el desarrollo de la personalizacion. Se deben subir los cambios al repositorio para que el resto del equipo pueda ver/usar los mismos. Para esto, realizar los siguientes pasos:

3.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/personalizacion:

 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 seran subidos. Los archivos modificados se indican con "M" y los nuevos archivos agregados con "A".

3.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 en guarani/personalizacion el siguiente comando:

 svn commit -m "Personalizaciones <Branch uunn> 3.6.0: Personalización XXXXX"

<< Volver