domingo, 17 de agosto de 2014

PARTE 3- Merge

Link de emergencia (siempre buscar primero aquí cualquier error):

En el panel derecho del Blog tienen el índice de prácticas >>


En la PARTE 2 estuvimos trabajando con ramas, cada uno en la suya, haciendo un form, protegiendo los cambios (checkin) y viendo las diferencias (Diff).

En esta parte veremos el Merge (Mezcla o Integración de código) en detalle.
Recuerden la Terminología común que hay que conocer

Las dudas preguntarlas en el hilo de la PARTE 3 en el foro.


Simulación Real:


La práctica que haremos en este apartado es una simulación de la vida real del trabajo con ramas, donde yo haré el papel de Integrador principal para la rama /main de los desarrollos que ustedes hagan, y ustedes controlarán sus ramas de trabajo y de tarea particular.



Lectura:


Antes de que hagamos los ejercicios de Merge del final, es necesario leer lo siguiente:


[Artículo] - PlasticSCM: ¿Qué es el Merge?

[Artículo] - PlasticSCM: ¿Qué es el Shelve?

[Artículo] - PlasticSCM: Opciones de búsqueda y visualización de ramas y changesets



Ejercicios:


1. Shelve de los cambios


Hagan una modificación en vuestro formulario, luego ciérrenlo (y Clear All), vayan a la vista de Cambios Pendientes y refrésquenla (F5); van a ver los 2 archivos del form, regeneren las versiones texto de los archivos pendientes (verán 3 archivos), y finalmente en el menú del Checkin (flechita a la derecha) elijan Shelve y acepten (obviamente, en la lista verán sus archivos, no los míos):


También cierren el diálogo posterior de confirmación.

Vayan a la vista del Shelve, abran el panel lateral y agreguen un comentario sobre las modificaciones que acaban de guardar:






2. Deshacer archivos modificados "sin querer" :)


Vuelvan a la vista de Cambios Pendientes y deshagan los cambios de del sc2 y del sct "sin querer" :)   (click-derecho sobre los 2 archivos ya marcados -> Deshacer cambios)





Ok, imaginen que lo que acaban de hacer, realmente lo hicieron sin querer, porque se confundieron.

Una anécdota: hace poco me pasó que para una Integración de código de muchos archivos (unos 200), tenía que deshacer todos aquellos a los que no se les generaba el texto tx2 (que significa que no tuvo cambios el binario), por lo que los binarios sin tx2, los deshacía. Habiendo revisado más de 100 archivos y deshecho unos cuántos, en un descuido deshice un grupo de archivos que estaba al lado del que realmente debía deshacer.... como resultado, se invalidó toda la operación, y para peor, como estaba en el paso previo del checkin, los archivos que deshice no estaban en la BDD, por lo que perdí los cambios...



3. Restaurar el Shelve


...pero resulta que como sabía que iba a ser un trabajo propenso a errores, antes guardé todo en un Shelve, por lo que, lo único que tuve que hacer, fue deshacer todos los cambios y a continuación aplicar el Shelve para poder comenzar otra vez sin haber perdido nada más que algo de tiempo :)




Deshagan todos los cambios de la vista de Cambios Pendientes, apliquen el Shelve que guardaron y terminen de hacer el bendito checkin :)

Nota: El Shelve se puede usar para guardar cambios pendientes normales, no los cambios pendientes de un Merge, ya que no puede guardar el link de Merge.



4. Merge a vuestra rama de tarea


Deben hacer un Merge (no Cherry Pick!) desde vuestra rama de trabajo (/main/tarea-nnn/usuario) a la rama de la tarea (/main/tarea-nnn). Cuidado, la casa debe estar en la rama de la /tarea-nnn. No olvidar antes el Clear All / Close All en Fox, si lo tienen abierto, y que en la vista de Cambios Pendientes no debe haber nada (refrescarla con F5).



Y luego no olviden volver a poner la casa en la rama de trabajo, que la rama de tarea es solo para merge:



Nota: Si se preguntan cómo hice para mostrar mi rama sola, sin todo el resto, la respuesta es: prueben hacer click-derecho en la rama de la tarea-nnn (la rama, no un changeset!) -> Explorador de Ramas -> Mostrar las ramas seleccionadas y relacionadas en un nuevo diagrama



5. Replicación de vuestro repositorio local


Una vez hayan hecho el Merge en la tarea, sincronizan desde la vista de Sincronización de repositorios y me avisan, así Integro los cambios de la tarea-nnn de cada uno en la rama principal /main



6. Integración en la rama /main


Cuando yo tenga esos cambios integrados en mi repositorio local, les avisaré a cada uno para que puedan volver a sincronizar y obtener así los cambios integrados.




7. Nueva replicación de vuestro repositorio local




Sin con estas cortas instrucciones lo logran, ya van a tener terminada una pequeña práctica sobre sincronización de repositorios Plastic, que luego pueden usar con sus propios repositorios entre la PC de trabajo y otra en sus propias redes de casa o la oficina (aprovéchenlo, es un backup redundante y barato) :D

Cuando les confirme (a cada uno por separado) que el paso 6 está hecho para sus cambios, deben volver a sincronizar el repositorio de prácticas, y recién ahí podrán ver el resultado de mi integración local en la rama /main, con el trabajo de las tareas de todos.
 Mientras tanto pueden seguir haciendo cambios en sus forms en vuestra rama de trabajo, pero no sigan con los siguientes pasos hasta que les avise.



8. Nivelación de vuestra rama de tarea




Cuando todos tengan sus cosas Integradas en /main (y yo les haya confirmado a cada uno), entonces tendrán que hacer la nivelación de sus ramas de tarea (tarea-nnn) desde la rama /main (cuidado, la casa debe estar en la rama de la tarea-nnn).

Explicación:  Esta nivelación se hace para que vuestra rama de tarea se actualice con el trabajo de los demás que yo Integré en /main, por eso nivelan desde /main





9. Nivelación de vuestra rama de trabajo personal (usuario)


Aquí pueden haber 2 situaciones:


1) Que hayan seguido haciendo modificaciones de sus forms (imagen), en cuyo caso deberán:


    1.a) Hacer un merge de vuestra rama de trabajo (usuario) a la rama de tarea (tarea-nnn).
    Explicación: Esto se hace para que vuestra rama de tarea-nnn se actualice con el trabajo que ustedes siguieron haciendo mientras yo Integraba los cambios de todos




    1.b) Hacer un merge de nivelación de vuestra rama de tarea a la de trabajo (usuario)
    Explicación: Esto se hace para que vuestra rama de trabajo se actualice con el trabajo que integraron en (a) y con el trabajo de los demás que ustedes ya nivelaron en vuestra tarea-nnn.




    2) Que no hayan hech modificaciones al form y no tengan cambios pendientes (imagen), en cuyo caso deberán:



      Solamente hacer un merge de nivelación de vuestra rama de tarea a la de trabajo (usuario)
      Explicación: Esto se hace para que vuestra rama de trabajo se actualice con el trabajo de los demás que ustedes ya nivelaron en vuestra tarea-nnn.





      Para cuando terminen esta parte, ya sabrán:


      - Hacer merge para agregar los cambios hechos en una rama, a otra
      - Hacer merge para nivelar una rama desactualizada
      - Para qué sirve el Shelve
      - Manejarse con las opciones de búsqueda y visualización de ramas y changesets



      Nos vemos en el foro! :D

      No hay comentarios:

      Publicar un comentario