Control de Código Fuente: Práctica con VFP 9 y Plastic - Parte 5 (Merge sustractivo)

282 views
Skip to first unread message

Fernando D. Bozzo

unread,
Mar 30, 2014, 3:04:58 PM3/30/14
to publice...@googlegroups.com
Hola:

Esta parte es continuación de la anterior, aunque seguramente va a ser más corta. En esta ocasión vamos a ver el merge sustractivo, que se usa para deshacer un changeset o un grupo de changesets.

Como la vez anterior, dejo un resumen de lo visto hasta ahora y de lo necesario, para los que van rezagados, y para los que ya los leyeron, que sepan que los artículos los voy actualizando con algunas de las cosas que vamos viendo, o agregando algún ejemplo o captura de pantalla, así que no se extrañen si en un momento vuelven a leer alguno y se encuentran cambios :)


Recursos de software necesarios (links):
- Descarga e Instalación de PlasticSCM paso a paso
- Visual FoxPro 9.0
- Herramientas FoxPro para Plastic => (Incluyen el EXE de FoxBin2Prg, pero no sus fuentes, que están aquí)


Cosas que estuvimos viendo y que fui publicando (links):
- PlasticSCM: Cómo crear una rama para comenzar a trabajar
- PlasticSCM: Hice un checkin erróneo en un archivo, ¿cómo lo arreglo?
- FoxBin2Prg: Detalle de vistas, datos de uso, configuraciones y más
- FoxBin2Prg: Guía rápida de uso y configuración
- FoxPro 9: Creando un componente y añadiéndolo al control de código (Plastic)
- FoxPro 9: Modificando un componente que ya está bajo control de código
- FoxPro 9 y PlasticSCM: Como deshacer un changeset sin borrarlo
- PlasticSCM: Agregando un proyecto FoxPro 9 al control de código
- PlasticSCM: Cómo trabajar en FoxPro 9 con ramas por tarea
- PlasticSCM: ¿Qué es el Diff?
- PlasticSCM: ¿Qué es el Merge?
- Control de Código Fuente: Cosas básicas que a veces no preguntamos
- PlasticSCM: ¡Houston, tenemos problemas!


Lo que vamos a ver ahora: merge sustractivo
En esta parte de la práctica vamos a generar algunas operaciones para deshacer por medio de esta técnica, y que cuando ocurre en medio de la historia de un proyecto es la única opción, porque solo se puede deshacer el último changeset.

Nota: Es muy importante haber leído los artículos que mencioné antese, ya que cuento con que está aprendido lo allí explicado, y que hemos visto desde el inicio. También asegurarse de que tienen bien configuradas las herramientas FoxPro en Plastic (ver último artículo: PlasticSCM: ¡Houston, tenemos problemas!), ya que algunos han tenido problemas por no tener esto correcto.


La práctica: pasos a seguir
Es fácil, tomando como referencia la última rama en la que cada uno estuvo trabajando en el paso 4 anterior, debe hacer lo siguiente:

1) Va a crear un archivo cualquiera vacío (por ej: basura.txt) en el directorio del workspace
2) Lo van a agregar al control de código en su rama
3) Van a hacer checkin de ese archivo nuevo
4) Van a realizar alguna modificación sencilla (un cambio de color, un control nuevo, etc) en la página que agregaron en el paso anterior
5) Hacen otro checkin (previo paso a texto y binario, como siempre)
5) Sincronizan con GitHub.

Y listo, en cuanto tengan este escenario montado, seguimos!


Saludos.-

francisco prieto

unread,
Mar 30, 2014, 5:48:53 PM3/30/14
to publice...@googlegroups.com
Listo Fer,

Mi escenario ya esta montado...

El dia de hoy me lo tomo ademas para releer todo lo visto hasta ahora, por si debo hacerte alguna otra pregunta.

Saludos,

Pancho
Córdoba

Fidel Charny

unread,
Mar 31, 2014, 7:33:00 AM3/31/14
to publice...@googlegroups.com
Escenario preparado (cs:86 y cs:87)

Fernando D. Bozzo

unread,
Mar 31, 2014, 8:52:31 AM3/31/14
to publice...@googlegroups.com
Hola:

Seleccionen el changeset del archivo agregado (doble click para confirmar que es ese) y elijan "Merge sustractivo de este changeset" del menú de "Merge Avanzado". Les debería mostrar como único cambio la eliminación de ese archivo, y si es así, lo confirman y hacen el checkin.

Luego miren el nuevo changeset creado con todo lo que tenían, pero sin ese archivo, y si ven todo correcto, vuelvan a sincronizar.


Saludos!

Fidel Charny

unread,
Mar 31, 2014, 9:40:00 AM3/31/14
to publice...@googlegroups.com
Fernando
En el merge apareció como único cambio el archivo agregado Basura.txt. Pero luego sale el mensaje de la imagen. 
Voy a Opciones de Merge?
Mergesus_mensaje.jpg
mergesus_Cambiospendientes.jpg

Fer

unread,
Mar 31, 2014, 9:42:38 AM3/31/14
to publice...@googlegroups.com
Es correcto, te muestra el archivo a eliminar y abajo te muestra el link de merge sustractivo.

Solo te falta hacer el checkin para que te cree el nuevo changeset sin ese archivo.

Fidel Charny

unread,
Mar 31, 2014, 9:52:53 AM3/31/14
to publice...@googlegroups.com
Perdón Fernando, me olvidé una imagen. No me permite hacer el checkin si no resuelvo el merge. 
Checkin_queja.jpg

Fer

unread,
Mar 31, 2014, 9:56:36 AM3/31/14
to publice...@googlegroups.com
Ok, algo salió mal. Deshacé los cambios y repetilo, pero asegurate de elegir solo un changeset (click-izquierdo), ya que esta operación permite seleccionar un intervalo entre 2 changesets también.

Si te sigue dando error, cuando vuelva a casa hago un video.

Fidel Charny

unread,
Mar 31, 2014, 10:25:12 AM3/31/14
to publice...@googlegroups.com

Fernando:
El tema es que seleccioné mal (de bruto no más) los changeset. Ahora tomé el 83 y 86 y aparentemente está todo bien. Si ves bien las imágenes, hago la sincronización. 
mergesus8386_Prepara.jpg
mergesu8386_chekin.jpg

Fer

unread,
Mar 31, 2014, 10:28:18 AM3/31/14
to publice...@googlegroups.com
Fidel, no hay que tomar 2 changesets, solo hay que tomar uno, es un solo click en el changeset del archivo agregado.
En tu imagen veo 2 marcados (en azul claro), cuando solo debería estar marcado el derecho de esos 2.

Fidel Charny

unread,
Mar 31, 2014, 10:44:59 AM3/31/14
to publice...@googlegroups.com
Bien Fernando, lo que pasa es que había estado viendo el artículo del blog. Ahora tomé solamente el cs:86 y el checkin da aparentemente el mismo resultado: en el cs:94 generado, desaparece el basura.txt y el form frm_test_fdb tiene todavía el agregado de los tres controles del cs:87. 
Como ves esto?
mergesus86_checkin.jpg

Fer

unread,
Mar 31, 2014, 10:59:49 AM3/31/14
to publice...@googlegroups.com

Perfecto Fidel!

Para evitarte confusiones: La otra forma es correcta también, y la vamos a usar luego, pero en esta parte quería que vean el método simple cuando se trata de deshacer un solo changeset.

:-D

Fidel Charny

unread,
Mar 31, 2014, 11:08:13 AM3/31/14
to publice...@googlegroups.com
Ok. Hago la sincronización.
Gracias Fer.

francisco prieto

unread,
Mar 31, 2014, 11:33:02 AM3/31/14
to publice...@googlegroups.com
Fer,

Todo Ok, salvo que mi Basura.txt estaba vacío y luego de hacer el merge y hacerle el checkin no me lo agregó entre mis archivos... imagino que es porque estaba vacío, como antes con un archivo lleno me funciono lo doy por correcto...pero te aviso por las dudas...

Ya sincronicé.

Saludos,
Pancho

Fer

unread,
Mar 31, 2014, 1:23:50 PM3/31/14
to publice...@googlegroups.com
Hola Fran:

No sé por qué decís que no lo agregó, si yo lo veo perfectamente en tu rama:

Imágenes integradas 1


Y luego se quitó con el merge sustractivo:

Imágenes integradas 2


Ningún programa de control de código fuente te va a excluir un archivo por estar vacío, ya que esa decisión no le corresponde al programa, ni existe una lógica que determine si el archivo realmente sirve o no.

Está todo correcto.


Saludos.-


Message has been deleted

Fer

unread,
Mar 31, 2014, 1:48:05 PM3/31/14
to publice...@googlegroups.com
[El post anterior lo borré porque lo envié sin terminar]

Bueno chicos, lo hicieron perfecto.

Para terminar, vamos a agregar 3 o 4 changesets con modificaciones tontas para deshacer y una final para mantener, por ejemplo:

- Un changeset con un cambio de color de algún objeto
- Otro changeset con una línea de código nueva agregada en sus respectivas páginas (en algún sitio que tengan código)
- Otro changesetmás con otra línea de código nueva
- Un último changeset con otra línea de código más agregada, pero esta se va a mantener.

Yo ya sincronicé con el ejemplo que hice yo. Sincronicen y miren los changesets que marco en verde, para que tengan una idea de los cambios.

Imágenes integradas 1





Antonio Meza

unread,
Mar 31, 2014, 2:10:26 PM3/31/14
to publice...@googlegroups.com
Buenos dias Profe. Fernando!!! jeje

Ya realice el primer paso de la practica 5. si lo puedes checar y confirmar para hacer el merge sustractivo-

saludos
Antonio Meza

Antonio Meza

unread,
Mar 31, 2014, 2:23:31 PM3/31/14
to publice...@googlegroups.com
Profe. Fernando ya realice el merge sustractivo sin problemas puede checar ya esta sincronizado, voy a realizar el siguiente paso.

saludos!!!

Antonio Meza

unread,
Mar 31, 2014, 2:25:21 PM3/31/14
to publice...@googlegroups.com
Anexo imagen!!!
merge_sustractivo.PNG

Antonio Meza

unread,
Mar 31, 2014, 2:39:17 PM3/31/14
to publice...@googlegroups.com
Profe. Fernando, ya agregue los checkin, le anexo pantalla, hay que hacer despues de esto un merge sustractivo? si es si, a que changeset.

saludos
Antonio Meza
checkin.PNG

Fer

unread,
Mar 31, 2014, 2:43:40 PM3/31/14
to publice...@googlegroups.com
Muy bien Antonio! Está perfecto!

Ahora no hagas nada, solo sincronizá para que podamos ver esos nuevos cambios.


Fer

unread,
Mar 31, 2014, 3:21:06 PM3/31/14
to publice...@googlegroups.com
Hola:

Este es el último ejercicio de esta práctica.

Ahora deben marcar un intervalo de changesets para deshacer (se llama intervalo abierto-cerrado en matemáticas), para lo que deben elegir como changeset izquierdo el último changeset del merge sustractivo que hicieron (será el intervalo abierto) y como changeset derecho el anteúltimo (intervalo cerrado), ya que el último cambio se mantendrá.

Dejo una imagen explicativa. Tener en cuenta que mi último changeset ya tiene el merge sustractivo hecho, así que si no lo cuentan, ven que el último lo dejé libre, y por eso queda salteado por la linea roja, ya que no lo toca.


Imágenes integradas 1

Para seleccionar es un click en el izquierdo y un ctrl+click en el derecho. Debe iluminar ambos changesets!



Saludos.-

Fidel Charny

unread,
Mar 31, 2014, 4:37:50 PM3/31/14
to publice...@googlegroups.com
Fernando:
He efectuado el procedimiento (mis cs:106, 107, 108, 109) seleccionando el cs:94 y cs:108. En el merge aparecen 21 conflictos de los cuales uno solo requirió intervención: un messagebox() que había puesto en el activate de mi page, apareció tachado y luego repetido 2 veces sin tachar. Los eliminé y salió todo bien. Checkin, formulario funciona, Sincronizado. Ya no está más el código en el Init del form, ni los colores de las page, etc. pero se mantuvo el último cambio (en activate, deactivate de cada page).
O sea: Grande Fernando!!


mergesus_94_108_cus.jpg
ramas110.jpg

Antonio Meza

unread,
Mar 31, 2014, 4:53:03 PM3/31/14
to publice...@googlegroups.com
Listo profe. Fernando!!

ya sincronice.

saludos!!

Antonio Meza

unread,
Mar 31, 2014, 5:10:49 PM3/31/14
to publice...@googlegroups.com
Profe Fernando la verdad no entiendo este ultimo paso.

Debo seleccionar así como anexo la imagen los marcados en amarillo?

saludos
izq_derecha.PNG

Fidel Charny

unread,
Mar 31, 2014, 5:15:52 PM3/31/14
to publice...@googlegroups.com
Antonio:
A la izquierda está bien. A la derecha, debes seleccionar el anterior al último (pues el último se conserva). La casita está bien.

Fer

unread,
Mar 31, 2014, 5:57:57 PM3/31/14
to publice...@googlegroups.com
Hola Antonio:

El problema que tenés es que hiciste todos los pasos incompletos. La verdad es que no sé bien como hiciste, pero sé lo que no hiciste.

Todos estos changesets están mal:

Imágenes integradas 1

Porque no tienen el archivo de texto correspondiente, o sea que modificaste el form e hiciste el checkin sin generar la versión texto y regenerar el binario:

Imágenes integradas 2

Con lo cual, es imposible hacer un merge de cualquier tipo.
La generación de la versión texto es fundamental para todo el proceso, que es lo que comenzamos viendo al inicio.
Ahora lo único que podés hacer es repetir todo, y como la última versión texto del form actualizada se quedó en el changeset anterior a que agregues el archivo a borrar del ejercicio anterior (o sea, la última vez que modificaste el form), vamos a regenerar el binario con esa versión texto.

Así que:

1) Tenés que ubicar la casa en tu último changeset

Imágenes integradas 3


2) Te vas a ls vista de Items, elegís el sc2 y regenerás el form con click-derecho "Abrir / Abrir con FoxBin2Prg"

Imágenes integradas 4



3) Te vas a la vista de Cambios Pendientes, la refrescás y vas a ver esto:

Imágenes integradas 5


Obviamente ahora la versión texto no la ves porque estamos usando una que ya existía (la última actualizada antes de todos estos cambios).

4) Hacés checkin con el comentario que te puse en la captura

5) Repetís este ejercicio, pero sin olvidar regenerar las versiones texto en cada changeset.

6) Cuando tengas el escenario preparado, sincronizá así podemos ver las modificaciones y mañana seguimos.


Saludos!




Fernando D. Bozzo

unread,
Mar 31, 2014, 6:04:48 PM3/31/14
to publice...@googlegroups.com
Impresionante Fidel! Muy bien, sobre todo por haber visto que los cambios no-automáticos (o sea, manuales) eran 1 y el resto eran automáticos.

Igualmente acordate siempre de darles una revisada a todos, porque aunque sean automáticos siempre puede haber alguno que no sea del todo correcto y que requiera un retoque manual.

Cuando muestra un archivo tachado quiere decir que lo va a eliminar de esa posición.

Genial Fidel, hiciste todo perfecto! =)

Antonio Meza

unread,
Mar 31, 2014, 6:24:09 PM3/31/14
to publice...@googlegroups.com
Si tienes razón en el primero si genere texto y binario pero en los otros se me olvido, es que estoy haciendo algo y me hablan por telefono y no puse cuidado en revisar. hago lo indicado.

saludos!!

Antonio Meza

unread,
Mar 31, 2014, 6:29:11 PM3/31/14
to publice...@googlegroups.com
Profe. Fernando pero una duda debo generar la version de texto en la primera o ya no, hasta la segunda? porque me dices lo siguiente:

Obviamente ahora la versión texto no la ves porque estamos usando una que ya existía (la última actualizada antes de todos estos cambios).

4) Hacés checkin con el comentario que te puse en la captura (En este punto regenero la version texto y binario o hasta el punto 5?)

Fer

unread,
Mar 31, 2014, 6:54:42 PM3/31/14
to publice...@googlegroups.com
Es importante que entiendas lo que tenés ahora mismo y porqué.

Intentá imaginarte esta situación:

a) En un punto de la historia, anterior a las prácticas de la parte 5, habías modificado ese form y regenerado su versión texto (lo podés comprobar haciendo doble click en el changeset de la imagen), por lo que tenías 2 copias sincronizadas, una en formato binario (scx/sct => VFP) y la otra en formato texto (sc2 => FoxBin2Prg):

Imágenes integradas 1


b) Luego hiciste esta práctica, pero solamente modificando el form (binario VFP) y olvidando regenerar la versión texto

c) Llegamos al punto actual donde tenés 2 versiones del form:

- Una en formato binario (scx/sct) que tiene todos los cambios que hiciste en esta práctica, y que ahora mismo no nos sirve porque no se puede hacer merge
- La original en formato texto que es una foto de como tenías el form en el punto 1 de la captura anterior.

Es con esta versión de texto que no seguiste actualizando que estamos regenerando el binario del form original que tenías antes de hacer esta práctica, con lo que partiríamos de la situación de la imagen anterior, y como desde esa versión texto hacemos el binario, obviamente que en la vista de Cambios Pendientes lo único que cambió fue el binario que regeneramos desde el texto.

Recordá que en todo el proceso, siempre tenemos 2 versiones del mismo form (o clase, o menu, etc) una en formato binario VFP y otra igual pero en formato texto (FoxBin)

En resumen, una vez rehagas el binario (scx/sct) y lo protejas (checkin) como te puse en el otro post, vas a tener sincronizadas ambas versiones (binario / texto) y de ahí partimos nuevamente, con lo que luego del checkin para guardarlo en la BDD de Plastic, comenzás con los cambios como comenté el inicio del ejercicio.


Ahora se entiende? :-)


Saludos!


francisco prieto

unread,
Mar 31, 2014, 8:05:58 PM3/31/14
to publice...@googlegroups.com

Fer,

Algo hice mal porque me pide intervencion manual al hacer el merge...

Si en esa intervencion le digo workspace sobreviven todos los cambios...

Si en cambio elijo origen solo sobrevive el label...

Te digo lo que hice asi me decis que esta mal.

1) en un boton de mi formulario cambio el color... esto es lo que me muestra.

Imágenes integradas 1

2) En mi pagina en tu formulario agregue un label.
Imágenes integradas 2

3) En mi pagina en el boton de validacion agregue una linea de comentario.
Imágenes integradas 3

4)En el mismo boton agregue otro comentario al final....
Imágenes integradas 4

5) Parado en la opcion 3 (CS118) Hago el merge sustractivo... el cual me pide intervencion manual y pasa lo que te digo mas arriba.

Espero tus comentarios.

Saludos,

Pancho

Fer

unread,
Apr 1, 2014, 3:52:26 AM4/1/14
to publice...@googlegroups.com
Hacé una cosa, deshacé este merge y sincronizá, así podemos ver los cambios. Puede que se vea alguna cosa.

Saludos.-

francisco prieto

unread,
Apr 1, 2014, 7:38:26 AM4/1/14
to publice...@googlegroups.com
Listo Fer... borre el merge y sincronice con Git....

Espero instrucciones.

Saludos,

Pancho

Fidel Charny

unread,
Apr 1, 2014, 10:00:22 AM4/1/14
to publice...@googlegroups.com
Lo que es fantástico es la guía. 
Efectivamente miro los conflictos automáticos (quizá más por curioso que por desconfiado). En el caso, en uno de los automáticos advierto que aparece un Messagebox() tachado y abajo dos más (iguales) sin tachar. Antes de tocar nada, avancé al siguiente (sabiendo que había uno manual) y ahí presentó el conflicto rojo. Ahí borré las dos líneas que sobraban.
De a poco me voy familiarizando con las pantallas de Plastic.
Muchas gracias
Fidel.

Fer

unread,
Apr 1, 2014, 1:57:37 PM4/1/14
to publice...@googlegroups.com
Hola Fran:

Acabo de simular el merge sustractivo en tu rama, y salió perfecto.
Te pongo la secuencia que seguí.

1) Elegí el changeset izquierdo (click):

Imágenes integradas 1

2) Luego elegí el derecho (ctrl+click) de modo que mantiene los 2 iluminados:

Imágenes integradas 2


3) Al elegir hacer merge sustractivo me muestra esto (se ve que modificaste 2 archivos). Aunque dice que hay cambios que "pueden requerir intervención" realmente no la necesitó:

Imágenes integradas 3


4) Proceso el merge y me quedan 2 binarios:

Imágenes integradas 4


5) Los salteo, manteniendo los archivos que hay en el workspace, total luego los regenero:

Imágenes integradas 9


6) Ya en la vista de Cambios Pendientes regenero los binarios solamente, porque es merge y hemos trabajado sobre las vistas texto:

Imágenes integradas 8


7) Hago checkin:

Imágenes integradas 10


8) Hago doble-click en el nuevo changeset donde quedó la casa para confirmar los cambios (se ve el primer cambio deshecho en frm_test1.sc2):

Imágenes integradas 11


9) Confirmo los cambios deshechos en el segundo form (frm_test_fdb.sc2):

Imágenes integradas 12


Todo OK!

No sé bien cuál puede haber sido el problema, pero por ahí viéndolo paso a paso podés descubrir qué fué y comentarlo.


Saludos!



francisco prieto

unread,
Apr 1, 2014, 2:08:35 PM4/1/14
to publice...@googlegroups.com
Hay una diferencia desde el vamos...
En 1 decis...

Elegí el changeset izquierdo (click)... podras decirme el numero de chageset

y en 2 decis...

 Luego elegí el derecho (ctrl+click) de modo que mantiene los 2 iluminados:

Cuales son los 2 iluminados porque no noto la diferencia en el grafico... creo que pasa por ahi el tema ya que yo en ningun momento elegi 2 changeset a la vez...

Espero tus comentarios.

Pancho

Fer

unread,
Apr 1, 2014, 2:19:42 PM4/1/14
to publice...@googlegroups.com
Fran, hacé una cosa: Hacele un click (solo uno) a un changeset cualquiera y fijate como se ilumina levemente (cambia el fondo azul a uno un poco más claro), luego repetí lo mismo en otro y vas a poder ver la diferencia que tenés que mirar. Luego probá marcar un changeset cualquiera y otro changeset que tenga pegado con ctrl+click y tenés que ver ambos iluminados.

Respecto de las imagenes que te puse, con la primera supongo que no hay dudas porque tiene un solo changeset, y la segunda es esta:

Imágenes integradas 1


Si hiciste la prueba de marcar los 2 changesets antes, con estos 2 no deberías tener problemas. Esta selección requiere marcar ambos porque se está indicando deshacer todos los changesets intermedios, excepto el izquierdo que es un intervalo abierto.

Saludos.-


Fer

unread,
Apr 1, 2014, 6:06:45 PM4/1/14
to publice...@googlegroups.com
Hola:

Acabo de terminar otro artículo sobre este tema:

PlasticSCM: El merge sustractivo como reemplazo del borrado

Explico lo mismo que estuvimos viendo, con algún detalle más y capturas de pantalla.


Saludos!



Fidel Charny

unread,
Apr 1, 2014, 6:28:32 PM4/1/14
to publice...@googlegroups.com
Muy claro Fer. Sobre todo por la justificación del método de selección de varios changeset que, por ahí, nos provoca alguna duda.
Muchas gracias.

francisco prieto

unread,
Apr 2, 2014, 8:24:50 AM4/2/14
to publice...@googlegroups.com
Fer,

Todo Perfecto!...

El tema estaba en a mi me llega directamente todo a mi cuenta de gmail... y en un momento en un mail pusiste que borrarbas el mail anterior... pero yo ya lo habia hecho y al hacer el merge usaba un solo changeset y no un intervalo.

En fin... el error y tu nuevo artículo me ayudaron a profundizar en el tema.

Gracias!,

Pancho

Fer

unread,
Apr 2, 2014, 8:28:23 AM4/2/14
to publice...@googlegroups.com

Genial Fran! Entonces ya voy viendo lo próximo que vamos a hacer :-D

Antonio Meza

unread,
Apr 2, 2014, 2:50:18 PM4/2/14
to publice...@googlegroups.com
Listo Profe Fernando!!

Ya vi los errores que cometí, y bueno esto le puede servir a alguien jajaja

Ya tengo sincronizado con la tarea 5 lista, ya nada mas espero confirmacion para realizar el siguiente paso y no quedarme atras!!

P.D. Gracias por la explicación tan detallada, y la verdad que cuando estaba haciendo los cambios en los formularios al hacer el cheking de repente antes de darle click me acordaba que no había generado a texto y binario creo que ese detalle le puede pasar a varios si no ponemos cuidado.

saludos 
Antonio Meza

Fer

unread,
Apr 2, 2014, 4:43:06 PM4/2/14
to publice...@googlegroups.com
Perfecto Antonio. Acabo de ver tus cambios y de simular un merge sustractivo, y te aviso de que vas a tener un conflicto manual, porque no solo agregaste unas líneas en un método existente, agregaste un método y le fuiste agregando líneas.

Esto no es un problema, de hecho es un caso real que puede darse, lo que pasa es que seguramente los algoritmos que tiene Plastic no pueden deducir todo lo cambiado automáticamente y por eso en este caso requiere tu intervención.

Vas a ver 3 paneles, el origen (sin código, o código tachado), la base (con algo de código) y el destino (con una línea más que la base). Como el método entero es nuevo, deberías quedarte con los cambios de la izquierda (azul), descartando (desactivando del título) los otros 2 paneles.


Imágenes integradas 1


Saludos!

Fernando D. Bozzo

unread,
Apr 2, 2014, 6:41:04 PM4/2/14
to publice...@googlegroups.com
Hola chicos:

Hay disponible un nuevo artículo sobre los Shelves, que no lo pongo como práctica en el foro porque es algo sencillo de usar que quienes hicieron las prácticas lo van a entender en seguida:

PlasticSCM: ¿Qué es el Shelve?

Además hay un par de actualizacione marcadas con fecha de ayer y hoy en el artículo de Diff y Merge con opciones que no había comentado, pero que es muy útil que conozcan. Las modificaciones las van a reconocer en seguida, solo busquen la fecha indicada en la cabecera:

PlasticSCM: ¿Qué es el Diff?
PlasticSCM: ¿Qué es el Merge?


Saludos!




francisco prieto

unread,
Apr 2, 2014, 8:13:24 PM4/2/14
to publice...@googlegroups.com
Esta bueno eso del Shelve...

Hoy por ejemplo (aclaro que aun no estoy usan Plastic para lo mio) tenia que reemplazar el uso de MSGraph por la clase que menciona Luis Maria en PortalFox a cerca de los graficos sencillos...

Si hubiera estado en Plastic... hubiera hecho el cambio... aplicado el shelve y si no hubiera andado como me paso en un formulario que usaba graficos mas complejos hubiera  podido recuperar el formulario original sin perder la llamada al formulario nuevo... en fin desde vfp es facil... renombro el form con otro nombre y listo... pero esto es barbaro para esos casos que como digo no son tan remotos.

No se si esta bien... pero hice le shelve en la practica, aunque sin confirmar los cambios es decir... quedo aplicado hasta el paso 7...

Intente llevar el shelve a mi otro directorio pero eso no funciono... era una pregunta que te iba a hacer, pero me la conteste solo jeje!

Saludos,

Pancho

Fer

unread,
Apr 3, 2014, 1:30:34 AM4/3/14
to publice...@googlegroups.com

Hola Fran:

Si el otro directorio es de otra rama, sea tuya, de Fidel o mía, primero tendrías que cambiarte a esa rama y luego aplicar el shelve. Esto debería funcionar sin problemas porque el form lo tenemos todos.
Y está bien lo que quisiste hacer, si querés volvé a intentarlo, y comentame sobre que form hiciste el cambio y a que rama lo querías llevar.

Si el otro directorio es el otro repositorio, entonces puede que no te funcione porque ese repositorio quedó medio mal (lo deberías borrar)

francisco prieto

unread,
Apr 3, 2014, 7:08:44 AM4/3/14
to publice...@googlegroups.com
Fer,

Justamente era el otro repositorio...

Es decir mi idea era la siguiente... como es similar al copy-paste... si tengo 2 repositorios... uno con un proyecto y otro con otro, poder hace un shelve de un changeset de un repositorio y aplicarlo en el otro... para rehacer el el proyecto a partir de ese changeset pero en otro repositorio... pero bueno no se puede... o al menos no me dejo.

Saludos,

Pancho

Fer

unread,
Apr 3, 2014, 5:24:18 PM4/3/14
to publice...@googlegroups.com
Hola chicos:

Preparé un pequeño artículo sobre el comando Annotate, que habrán visto en el menú en algunas ocasiones:

PlasticSCM: ¿Para qué sirve el Annotate?


Saludos!

francisco prieto

unread,
Apr 3, 2014, 7:31:31 PM4/3/14
to publice...@googlegroups.com
En el Annotate  tambien es interesante poder saber que edad tiene la línea...


Muy bueno realmente...

Para probarlo, hice otra modiicacion en mi rama... y ya que estoy un nuevo changeset.

Saludos y gracias.

Pancho

francisco prieto

unread,
Apr 3, 2014, 7:33:59 PM4/3/14
to publice...@googlegroups.com
El Annotate tambien lo podes usar en items...

Saludos,

Pancho

Antonio Meza

unread,
Apr 8, 2014, 1:15:32 PM4/8/14
to publice...@googlegroups.com
Buenas tardes Profe!!

La semana pasada sali de viaje y voy regresando, estoy retomando los pasos que me indican solo que me aparece una pantalla adicional, recuerdo que en la pantalla 02 de procesar habia que realizar un paso antes con los archivos binarios es correcto? y si me puede indicar que es?

Anexo pantallas de paso a paso.

saludos 
01_merge_sustractivo.PNG
02_procesar.PNG
03_guardarysalir.PNG
04_ficheros_binarios.PNG

Fer

unread,
Apr 8, 2014, 2:06:29 PM4/8/14
to publice...@googlegroups.com
Hola Antonio:

La ventana de los 3 paneles cerrala, pero no cierres la solapa del merge, que te debe quedar abierta y en teoría con 2 archivos binarios (el scx y el sct), ya que el texto lo debés haber resuelto, aunque no me comentaste si hiciste el merge del texto o no, ¿lo hiciste?

Sin cerrar esa solapa, andate a la configuración de Plastic, donde se configuran las herramientas para Diff y Merge, y en la parte de configuración del Merge asegurate de poner estas extensiones para el programa de FoxPro que agregaste, ya que en la ayuda original estaba incompleto:

.pjx;.pjt;.vcx;.vct;.scx;.sct;.frx;.frt;.lbx;.lbt;.mnx;.mnt;.dbf;.fpt;.cdx;.dbc;.dcx;.dct


Y luego seguí los pasos que te había puesto.


Fer

unread,
Apr 8, 2014, 2:15:45 PM4/8/14
to publice...@googlegroups.com
Antonio, también lee esto:

PlasticSCM: ¡Houston, tenemos problemas!


Saludos.-

Antonio Meza

unread,
Apr 8, 2014, 2:25:12 PM4/8/14
to publice...@googlegroups.com
Buenas tardes!!

Cancele todo, agregue las extensiones en preferencias que faltaban, cerré plastic por aquello de las dudas jeje entre nuevamente y volví hacer el merge sustra. y ya no me mostró la captura de pantalla 04, ahora estoy en los cambios pendientes, antes de aplicar el Chekin ahí debo regenerar texto y luego binario? es que esa parte no encontré detalles que hacer?

NOTA: Ya había leído el articulo de tenemos problemas!!

Fer

unread,
Apr 8, 2014, 2:27:48 PM4/8/14
to publice...@googlegroups.com
Ok, entonces te falta repasar este otro:


Ahí está explicado lo que hay que generar y por qué :-)

Antonio Meza

unread,
Apr 8, 2014, 4:01:24 PM4/8/14
to publice...@googlegroups.com
Lo reviso, gracias!!!

Antonio Meza

unread,
Apr 8, 2014, 4:21:54 PM4/8/14
to publice...@googlegroups.com
Ya realice el merge sustractivo, anexo imagen, y ya vi los cambios en cada diferente change. solo me falta sincronizar, si todo esta bien?

Referente a la duda anterior, tenia en mente que por lógica solo había modificado la versión de texto ya que eso es lo que hace el merge, leí el documento que me indico y efectivamente solo tenia que regenerar los binarios en pa pantalla de cambios pendientes y en la pantalla de merge quitar los binarios.

saludos
mergeSustra.PNG

Fer

unread,
Apr 8, 2014, 4:37:07 PM4/8/14
to publice...@googlegroups.com
Perfecto Antonio! Ya podés sincronizar entonces! =)

Antonio Meza

unread,
Apr 8, 2014, 5:41:42 PM4/8/14
to publice...@googlegroups.com
Listo profe!!

sincronizado!!! y ya estoy leyendo el otro paso.

saludos

Fernando D. Bozzo

unread,
Apr 10, 2014, 3:51:51 PM4/10/14
to publice...@googlegroups.com
Hola chicos:

Quería comentarles que ando con bastante trabajo, incluyendo fines de semana, y que por eso no estoy muy presente por aquí, aunque sí leo y contesto mensajes.

En cuanto me desocupe, seguimos con este y otros temas.


Saludos!




El domingo, 30 de marzo de 2014 21:04:58 UTC+2, Fernando D. Bozzo escribió:
Hola:

Esta parte es continuación de la anterior, aunque seguramente va a ser más corta. En esta ocasión vamos a ver el merge sustractivo, que se usa para deshacer un changeset o un grupo de changesets.


Fidel Charny

unread,
Apr 10, 2014, 4:09:51 PM4/10/14
to publice...@googlegroups.com
Mientras lo puedas cobrar, enhorabuena! Y si no, pues... todo sirve.
Un abrazo.

francisco prieto

unread,
Apr 11, 2014, 7:09:16 AM4/11/14
to publice...@googlegroups.com
Fer,

Tomate tu tiempo desde aca te estaremos haciendo el aguante.

Saludos,

Pancho
Córdoba

Fernando D. Bozzo

unread,
Jun 28, 2014, 5:14:33 AM6/28/14
to publice...@googlegroups.com
Hola!

Este post es un poco para hacer un balance y sacar algunas conclusiones de todo lo que hemos hecho.

Bueno, como les había comentado, estuve con bastante trabajo, y aún sigo, aunque el ritmo ya es menor.

Desde abril estoy gestionando y ayudando con la migración de repositorios CVS, SVN (Subversion) y VSS (SourceSafe) a Plastic en mi sitio de trabajo, ya que las ventajas de trabajar con esta herramienta de SCM son evidentes, como habrán podido comprobar durante las prácticas en el grupo, en general hemos bajado los tiempos de integración, en el caso de SourceSafe, de más de 2 hs a 10 minutos. También ayudé a implementar y normalizar la forma de trabajo en ramas.

De cara a lo que estuvimos haciendo aquí, la idea principal era por un lado permitir que aquellos que nunca han trabajado con una herramienta SCM puedan tomar contacto con la misma, de forma que la puedan utilizar en su trabajo diario para trabajar tanto en solitario como en grupo, y por el otro lado era que quienes ya trabajan con herramientas SCM tengan la oportunidad de conocer Plastic y así poder comparar la forma de trabajar de otros SCM con este, ya que desde que tuve la ocasión de conocerlo y probarlo, vi un potencial enorme de lo que se podía hacer y por eso, junto a que permite ser usado de forma gratuita hasta 15 personas, no quería dejar pasar la oportunidad de mostrarlo al grupo.

Durante las prácticas hemos visto todos los temas importantes de trabajar con control de código fuente: checkin, checkout, merge, merge sustractivo, ramas, resolución de conflictos manuales y automáticos, etc. Creo que con esto ya tienen las bases para seguir por vuestra cuenta. Si bien hay varias cosas más por conocer de este SCM, como la potente línea de comandos "CM" que permite automatizar scripts, dejo eso para que cada uno lo vea e investigue por su cuenta, que no es complejo.

Espero que esto haya ayudado, al menos, a algunos de ustedes a poder comenzar a trabajar con un SCM como parte de la rutina diaria de la programación.
Creo que ya no hay excusa para no hacerlo y que quienes han probado, habrán podido comprobar el tiempo que se puede ganar (o dejar de perder) respecto del antiguo sistema de copiar en zip o en distintos directorios (...no hay comparación:) y que con un SCM tienen estas ventajas:

- Tener Control de las versiones de la aplicación
- Tener Control de los parches
- Tener Versiones en paralelo y poder trabajarlas por separado usando ramas
- Tener ramas por tarea (o por funcionalidad)
- Poder trabajar de forma individual o en grupo de forma similar
- Poder comparar versiones de una aplicación o incluso poder comparar versiones de un archivo (Diff)
- Poder mezclar los cambios propios de la rama de trabajo en la principal o en la rama de release
- Poder resolver los conflictos manuales o automáticos, teniendo el control de qué se sube
- Poder deshacer cambios, tanto borrando changesets como usando el merge sustractivo
- Tener un backup del código fuente
- Poder sincronizar un repositorio con otros, tanto internos (otros Plastic) como externos (GitHub, BitBucket, etc)
- Poder exportar el repositorio en el formato abierto de Git (fast export / fast import)
- No estar atado a una tecnología propietaria
- Poder usarlo con cualquier lenguaje de programación (Incluyendo FoxPro :-)

En fin, creo que tienen la idea de todo lo que se gana.

Si tienen alguna duda o alguna inquietud, no duden en preguntar por aquí, que seguramente habrá más de una respuesta.

Si tienen alguna anécdota o han implementado un SCM en su dia a dia, me gustaría que comenten sus experiencias.


Saludos!
Reply all
Reply to author
Forward
0 new messages