Mostrando entradas con la etiqueta shelve. Mostrar todas las entradas
Mostrando entradas con la etiqueta shelve. Mostrar todas las entradas

miércoles, abril 02, 2014

PlasticSCM: ¿Qué es el Shelve?

Por: Fernando D. Bozzo

La verdad es que a veces se buscan términos que confunden, cuando se podrían utilizar otros que todo el mundo conoce. El Shelve es el concepto del portapapeles (clipboard) aplicado a un changeset.


Si, es el copiar+pegar de un grupo de archivos en la rama que se elija, pero con la diferencia de que:

  • El "pegar" se hace con un merge especial llamado "Cherry Pick"
  • Este portapapeles (Shelves) se ha potenciado para que permita múltiples entradas que se guardan por separado (cada entrada es un changeset)
  • Se les puede poner una descripción, para diferenciarlas de otras entradas
  • Se pueden compartir con los demás desarrolladores que estén en el mismo servidor Plastic, ya que se guardan en la base de datos
  • Se pueden borrar o reutilizar todas las veces que se necesite

Veamos un ejemplo de uso:

1.  Tomamos un form:


2.  Le hacemos un cambio, en este caso solo modificaré el backcolor:



3.  Verificamos los datos cambiados, que mostrará solo los binarios del form, y regeneramos la vista de texto del form, para tener ambas versiones sincronizadas:



 4.  En vez de hacer checkin, hacemos Shelve, lo que lo guarda en el portapapeles que comenté:


Observación al paso: Ya que tenemos este menú abierto, notar que hay una opción "Proteger los cambios a otra rama", que sirve para guardarlos en una nueva rama con el nombre que le demos. Viene bien cuando nos equivocamos e hicimos los cambios en la rama principal y olvidamos crear antes la rama de trabajo, lo resolvemos aquí en un paso ;-)


5.  En la ventana de confirmación que nos aparece, podemos guardar estos cambios y seguir modificando, o guardar estos cambios y deshacerlos de la rama si marcamos el check de abajo, lo que permite mantenerlos solamente en el portapapeles (Shelve):



Como deshice los cambios del workspace, el form volvió a quedar como estaba:




6.  Nos muestra un mensaje confirmando el guardado, donde se puede marcar el check de abajo para que no vuelva a mostrar este mensaje:



7.  Nos muestra la vista de Shelves con los que haya, donde arriba siempre están los más nuevos. Un apunte: Esta vista tiene el panel derecho desactivado por defecto, pero se puede activar del icono indicado en la imagen, y en el mismo panel se puede poner un comentario descriptivo, que es muy útil para saber de qué se trata y no se pierda entre los demás:



 8.  Para aplicar un Shelve en el workspace, se elige desde el menú contextual:



9.  Aquí se muestra el Shelve aplicado, que es el equivalente a haber realizado las modificaciones a mano. Un apunte:  Aplicar un Shelve implica hacer un merge del Shelve sobre el contenido del workspace que, como todo merge, puede ser manual o automático dependiendo de los cambios hechos en el workspace. Como en este ejemplo antes deshice los cambios del workspace, entonces no hay cambios y el merge será automático:


Y a partir de aquí es como cualquier otro cambio merge que hemos hecho antes.

El resultado de aplicar este Shelve, es el cambio de color del form:



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.



Resumen


El Shelve puede ser muy útil usarlo como "backup rápido" cuando se deba hacer un checkin de varios archivos en los que se pretenda deshacer los cambios de los binarios que no tengan su versión texto tx2 (o sea, se indicó generar, pero no se generó), y que por tanto no tienen cambios en el código (esos cambios en los binarios pueden ser por el timestamp interno), y que pueda ocurrir un error que les haga perder los cambios de uno o varios archivos.


Hasta la próxima!

Artículos relacionados:
PlasticSCM: ¿Qué es el Merge?