Hola:
Tengo un proyecto en una instalación de toba (version 1.1.3) llamado administración (servidor A) y otra instalación con el mismo toba y proyecto (que también se llama administración) en el servidor B. Resulta que los dos proyectos en un principio fueron iguales, pero a medida que pasó el tiempo los fuimos personalizando en forma diferente. Ahora lo que tengo que hacer es importar operaciones (ci completos) desde el proyecto administración (del servidor B) al proyecto administación (del servidor A) manteniendo personalizaciones en los formularios de los dos proyectos. Mi pregunta es si se puede hacer y cómo se hace este proceso.
Muchas gracias por la ayuda!
Hola Victor,
las operaciones que debes importar… son las mismas?.. es decir lo que tendrias que hacer es una fusion o simplemente es traer operaciones del servidor B al servidor A?.
Como estan en maquinas separadas no queda otra que hacerlo copiando fisicamente los archivos de metadatos.
Asumo que no estas usando control de versiones.
Si es simplemente traer la operacion (caso mas simple):
- En el servidor B haces toba proyecto exportar
- En el servidor A haces toba proyecto exportar
- Ubicas los archivos de metadatos correspondientes a la operacion ya sea item como componentes (anota los ids desde dentro del editor asi los ubicas mas facilmente)
- Copias dichos archivos al servidor A… cuidando de no pisar ningun archivo existente.
* Si te salta que el archivo existe es porque se uso la misma clave asi que no lo pises sino rompes la operacion del servidor A.
En este caso podes:
* Clonar temporalmente la operacion en el servidor B (esperando que no te toque otro id ya utilizado) exportar nuevamente y copiar los archivos agregados (olvidandote de los anteriores)
* Modificar a mano los archivos para cambiar las claves, no es tan grave como parece… bueno si lo es pero con paciencia se puede XD. - Una vez que copiaste los archivos al servidor A lo que haces es ejecutar el comando toba proyecto regenerar… si falla es que te falto algun archivo o quedo alguna SQL mal, si todo va bien deberias ver la nueva operacion en el editor.
Si el caso es fusionar las operaciones (osea la peste bubónica de los casos):
- En el servidor B haces toba proyecto exportar
- En el servidor A haces toba proyecto exportar
- Ubicas los archivos de metadatos correspondientes a la operacion ya sea item como componentes (anota los ids desde dentro del editor asi los ubicas mas facilmente)
- Copias los archivos del Servidor B en una carpeta aparte en el Servidor A.
A partir de aca vas a tener que tener en cuenta los ids de los objetos:
- Haces manualmente el Merge entre los archivos que coincidan en operacion y en clave para sumar las columnas o dependencias.
- Si tenes archivos nuevos que se deben agregar a la operacion:
- Si la clave ya existe (en otra operacion) … no queda otra que editar el archivo y generar una nueva
- Si no existe… todo ok
Los archivos nuevos los podes dejar sin relacionar (forms, cuadros, filtros, OJO con los CIs y sus dependencias)… eso lo podes hacer luego desde el editor de manera mas comoda, sin embargo asegurate de que no haya ciclos en los Ids… de lo contrario el editor te va a palmar.
- Una vez que terminaste con esos pasos lo que haces es ejecutar el comando toba proyecto regenerar… si falla es que te falto algun archivo o quedo alguna SQL mal, si todo va bien deberias ver los cambios en el editor.
Si estuvieras usando control de versiones con desarrollo en ramas separadas deberias hacer un merge desde la rama del servidor B a la rama del servidor A, previo commit de todo trabajo pendiente.
Con svn la fusion de operaciones se te hara mas facil ya que mezclas los conflictos (que seguramente existiran) y la cosa queda lista.
El problema aca es con los archivos nuevos, que tambien existen en la otra rama (pero para otra operacion), si mezclas asi simplemente rompes la operacion en A… por lo tanto lo que hay que hacer es encontrar la forma de agregar dichos archivos pero manteniendo los actuales… ‘mi mas sentido pesame’ XD, no es tan asi tampoco… solo requiere mas trabajo, yo en particular haria lo siguiente:
En el servidor B
1.- Clonaria el componente en el servidor B
2.- Reemplazaria con dicho componente clonado al componente original
3.- Borro el componente original si es que se puede
4.- Exporto el proyecto
5.- Commiteo los cambios.
En el servidor A
1.- Hago el merge desde la rama B
2.- Seguramente eso me elimino el archivo que tenia conflicto en la primera vez y me agrego el componente clonado
3.- Hago revert del archivo borrado para restaurarlo
4.- Regenero el proyecto para verificar que todo quedo bien y se sumo el componente clonado
5.- Si verifico que todo esta en orden… hago una exportacion y commit en la Rama A.
Ojo, el procedimiento es engorroso y propenso a errores, asi que no te asustes si no anda de movida o si te mandas alguna macana, con svn tenes la oportunidad de volver a la revision anterior lo cual te salva las papas un poco… pero tampoco te soluciona la vida. Si tenes alguna duda en medio del procedimiento, no esperes… veni y consulta, mas vale prevenir que curar ;).
Saludos
Richard
Richard:
Las operaciones a importar son distintas y no uso svn. Después de leer todas las opciones, voy a probar una por una (incluso las subiré a un svn para probar).
Igualmente gracias por la ayuda, me voy a poner a probar las opciones (con muchos cafes de por medio :)) y cuaquier cosa pregunto.
Victor…!
Te pregunto si pudiste resolver el problema planteado…?
Tengo el mismo problema y me seria de mucha utilidad si podes comentarme la solución, puesto que no utilizo svn y no puedo agregar componentes, items y efs del Servidor B a un Servidor A, con la misma version de toba, postgres, php, etc.
Muchas Gracias…!
Sergio:
Pude solucionarlo, pero no siguiendo al pie de la letra de lo que me dijo Ricardo. Yo lo que hice fue lo siguiente:
1 - Llevar el proyecto del servidor A al B: Teniendo en cuenta que los dos proyectos se llaman igual (recordemos “administracion”) y que no pueden haber dos proyectos con un mismo id, lo que hago es exportar (toba proyecto exportar) el proyecto del servidor A. Luego con un editor de texto (ultraedit) reemplazo dentro de los sql de la carpeta metadatos (lo hago en una carpeta de prueba para no romper el proyecto) el nombre de “administracion” por “administracion2”. (hay que hacerlo con cuidado ya que Ricardo me dijo que no es muy recomendable, pero hasta ahora es el método para cambiar el nombre del proyecto que mejor me funciona)
2 - Generar el proyecto en el servidor B: con toba proyecto crear -p administracion2, genero el proyecto en el servidor B y luego reemplazo la carpeta metadatos con la carpeta de prueba (o sea a donde cambié el nombre) del punto anterior en la carpeta del nuevo proyecto administración2 del servidor B. Regenero el proyecto administración2 del servidor B y si todo sale bien, debería ver los cambios que tenía en el proyecto administración del servidor A.
3 - Mover operaciones entre los proyectos: Ahora trabajo solo sobre el servidor B. En el editor busco la operación dentro de “administracion2” que quiero copiar y marco la opción exportable y guardo los cambios. Luego me voy al proyecto “administración” y por medio del asistente para crear operaciones (botón con la varita mágica) importo la operación desde el proyecto “administracion2”.
Espero que se entienda, ya que parece muy complicado, pero no es tanto, solo hay que hacerlo prestando mucha atención.
Saludos