clearcase: diferencia entre actualización y rebase

Recientemente me interesaron por aprender ClearCase (vengo de un trasbackground con git y svn, los echo de less desesperadamente 🙂 y los he estado mordiendo por un time: en una vista de instantánea, ¿cuál es la diferencia entre un actualizar y una rebase?

Sé que hay diferencias (y sinceramente, he comenzado a ignorar la "actualización" por completo, porque nunca parece hacer lo que quiero (que es networkingucir los cambios que otros desarrolladores han entregado recientemente (git pull, svn update))), simplemente no veo cuál es la diferencia (y los documentos de CC son less útiles al respecto (para puntos de bonificación: cualquier apunta a buenos resources de cc (algo parecido a svn-book o las páginas de git man, por ejemplo))). Sí, esa fue una oración y media docena de paréntesis.

La actualización es estrictamente para la vista de instantánea: vea la diferencia entre la instantánea y la vista dinámica .

Cuando realiza una rebase, utilizando una vista de instantánea, esa operación (que cambia las líneas de base de la secuencia asociada a la vista) se completará con una actualización de dicha vista de instantánea.

Si desea get el desarrollo de otros desarrolladores, puede hacerlo con una actualización solo de dichos desarrolladores que hayan estado verificando su código en la misma twig que la que está monitoreando con su vista de instantánea.
Si está utilizando UCM, esos desarrolladores deben tener su vista asociada con el mismo Stream que la utilizada por su vista de instantánea.

Luego , una actualización le permitirá recuperar (y fusionarse si es necesario) todas las modificaciones hechas por sus colegas.
Pero eso es asumiendo que no usas el "un Stream por model de desarrollador" (que no me parece muy útil )

Para una buena primera lectura:

  • ¿Cuáles son los conceptos claros básicos que todo desarrollador debe saber?
  • Ventajas / desventajas de ClearCase

En caso de que no estemos claros, un flujo = una twig en un término común.

Para UCM, una actualización generalmente solo es útil cuando se trabaja en una transmisión compartida, de modo que otro desarrollador podría verificar los files en esa transmisión en la que se está trabajando. En este escenario, usa "actualizar" para extraer los cambios realizados por ese desarrollador en la misma secuencia.

Una rebase extrae los cambios realizados en la secuencia de integración central que han sido comprometidos por diferentes desarrolladores en su empresa a partir de sus respectivas transmisiones. Un compromiso de substream a flujo de integración se denomina "entrega", que es lo contrario de rebase.

La actualización solo actualiza una vista de instantánea para que coincida con las versiones correspondientes en ClearCase.

Rebase es para proyectos de UCM: fusiona los cambios de la última línea de base recomendada en la secuencia de integración en su flujo de desarrollo personal.

Normalmente, utiliza la actualización para vistas instantáneas de material que no es de UCM, mientras que usa rebase para proyectos de UCM.

Por lo que entiendo, la actualización de Clearcase es como una merge en git.

  • Tira de los cambios y luego los agrega como una nueva confirmación en esa twig.
  • La label base no cambia.

Una rebase por otro lado es como una rebase en git.

  • Si rebase a otra label, es como reescribir su historial para mostrar que esa twig se hizo a partir de esta nueva label.
  • Esto le permite continuar el desarrollo en una twig de características y luego, antes de lanzar sus cambios, puede rebase la rebase su sucursal con la última label oficial.