GeneXus Server permite el desarrollo en equipo al permitir que múltiples desarrolladores trabajen simultáneamente en una base de conocimiento compartida, con funciones como commit, update y merge que garantizan la integridad de los cambios y la trazabilidad de las actualizaciones de objetos. GeneXus Server ofrece seguridad, un repositorio centralizado de información y beneficios de integración con GeneXus.
Buenos días, soy Armin Bachmann, trabajo en el área de soporte de Artech y para comenzar les voy a contar la historia de mi viaje a Brasil este año.
Supongamos un programador que comienza a desarrollar un sistema de manera local, de manera solitaria.En un momento del desarrollo, decide enviar su trabajo al GeneXus Server, siendo esto una simple opción de su menú.De esta forma tenemos el primer objetivo de GeneXus Server, ser un repositorio de la base de conocimiento.Ahora, ¿dónde puede estar ese repositorio? En una máquina local de la red, o directamente en Internet.Supongamos que aparece un nuevo programador en nuestro proyecto. Lo primero que debe hacer es la conexión con el servidor y obtener la KB. ¿Qué versión? la ultima que se subió al repositorio.Veamos cada uno de estos puntos en detalle…
Hay dos operaciones básicas al trabajar con GeneXus Server. El ‘commit’ es enviar los cambios que he realizado al servidor. Es la manera de decir “estos cambios que he estado haciendo en mi KB de trabajo quiero que formen parte de la versión que estamos desarrollando”Los cambios que GeneXus me ofrece enviar al servidor son solo aquellos que se realizaron desde la última sincronización. Puedo elegir cuáles cambios formarán parte del commit.
La otra operación que se puede realizar es el ‘update’, que es la forma de pedirle al servidor todos los cambios que hayan hecho otros y que aún no tengo en mi KB de trabajo.
Supongamos que tenemos un esquema con dos usuarios, cada uno de los cuales crea un nuevo objeto, en un caso representado por un triángulo y en el otro con un cuadrado.Nuestro usuario del cuadrado hace un commit, por lo que el cuadrado queda agregado como nuevo objeto en el servidor.Luego el otro usuario hace commit de su objeto, por lo que éste se agrega también en el servidor, en el que queda la versión consolidada del trabajo de ambos.
Supongamos que tenemos un esquema con dos usuarios, cada uno de los cuales crea un nuevo objeto, en un caso representado por un triángulo y en el otro con un cuadrado.Nuestro usuario del cuadrado hace un commit, por lo que el cuadrado queda agregado como nuevo objeto en el servidor.Luego el otro usuario hace commit de su objeto, por lo que éste se agrega también en el servidor, en el que queda la versión consolidada del trabajo de ambos.
La pregunta que surge al ver estas dos operaciones es ¿Qué pasa en caso de que dos usuarios hagan cambios sobre el mismo objeto?Supongamos que tenemos un esquema con dos usuarios, cada uno trabajando en el mismo programa, pero cada uno agrega código distinto. Nuestro primer usuario hace un commit y en el server queda su trabajo.Luego, nuestro usuario 2 también quiere hacer commit de su cambio y el servidor no se lo permite, porque detecta que, con relación a la versión del objeto de la que él partió, ya alguien más hizo un cambio. En otras palabras, lo que responde el servidor es “alguien más ha hecho otros cambios en ese objeto; debes integrar esos cambios en tu copia antes de poder enviar una nueva versión del objeto al servidor”La manera de lograr esto es simplemente con un nuevo ‘update’. Al hacerlo, GeneXus detectará que vienen cambios sobre un objeto que está modificado en la KB de trabajo, y automáticamente fusionará todos los cambios en el objeto (merge). El usuario podrá ver el resultado de esta operación y en caso de no considerar correcta la solución automática, tendrá la chance de volver automáticamente a la versión anterior, la que tenía sólo sus cambios, e integrar los que había hecho el otro usuario en forma manual.Ahora que el usuario tiene en su KB de trabajo el objeto con los cambios propios y los del otro, ya puede hacer un commit, para que este resultado llegue al servidor como la nueva versión del objeto.
Cuando se hace ‘merge’ podemos ver en detalle las diferencias entre las versiones en todos sus aspectos, pudiendo fácilmente revertir los cambios si así lo queremos.