Nuevas características del plugin para Eclipse

19:25 0 Comments

Esta semana hemos estado trabajando para ampliar y mejorar las características que ofrece la integración de PlasticSCM con el entorno de desarrollo Eclipse. Éstas son las nuevas características:

  • Modificados los menus de team para mejorar la usabilidad.
  • Añadida opción para ver diferencias con la versión anterior.
  • Las diferencias y árbol de versiones se muestran en hilos independientes (anteriormente se quedaba sin pintar la ventana principal).
  • Soporte para español
  • Añadida una preferencia para hacer checkout automáticamente.
  • Soporte para movidos, borrados y renombrados, tanto de ficheros como de directorios.
  • Soporte para refactoring.
A continuación, se muestran algunas capturas:


Para modificar el idioma en el que se muestra el plugin:




0 comentarios:

Importador de CVS

18:39 0 Comments

Ya esta lista la primera versión del importador de CVS a Plastic. Hace toda la migración de un proyecto de CVS a un repositorio Plastic, lo cual incluye: etiquetas, ramas, revisiones (contenido, fecha, autor, comentarios y etiquetado).

Los mayores problemas han sido ser capaces de manejar las opciones menos comunes de CVS, como el cambio de numeración en una rama, el borrado de ramas dejando revisiones que no pertenecen a ninguna rama, etc.

Para el caso de las revisiones huerfanas de rama, no existe una correspondecia en Plastic, ya que en nuestro sistema toda revisión pertenece a una rama, no puede estar descolgada. En este caso se ha dispuesto un mecanismo para que estas revisiones se guarden en una especie de rama papelera, de modo que pueda accederse a sus comentarios, contenido, etc. manteniendo además sus relaciones con el resto de revisiones, igual que lo hacia en CVS.

Aquí os muestro un ejemplo de como queda el arbol de revisiones de un fichero en CVS y su correspondiente importación en Plastic:



0 comentarios:

¿Qué pasa cuándo necesito algo de otra tarea?

14:31 1 Comments

Los usuarios de Plastic SCM que han comenzado a usar el patrón de rama por tarea han visto enseguida la ventaja de poder aislar sus cambios, y sobretodo de poder elegir qué tareas se integran y que tareas quedan fuera en una release concreta.
Sin embargo, el concepto es mucho más sencillo de asimilar para antiguos usuarios de Clearcase (acostumbrados a los viejos config_specs los selectores les parecen sencillos...) que para ex-sufridores de SourceSafe. Para los segundos su ciclo habitual de trabajo era "necesito tu cambio, haz check-in y lo cojo para seguir ...". Simple, pero muy propenso a propagar errores, por no hablar de la imposibilidad de elegir qué se integra y qué no cuando todo está ya en la línea principal.
Se trata, no obstante, de algo totalmente normal. Cuando alguien trabaja sin control de versiones o con uno muy primitivo, está acostumbrado a tener que actualizar continuamente su copia de trabajo (en el mejor de los casos, cuando no la copia global de todo el equipo) para coger los cambios de los demás. El bloqueo mútuo es constante, y las ventajas de no estar limitado por él evidentes. Pero cambiar los hábitos cuesta trabajo.
Realmente tener que coger algo de una tarea de otro programador es algo que ocurre excepcionalmente, quizá inversamente proporcional al estado del desarrollo del proyecto (es decir, puede ocurrir más al principio y mucho menos en mantenimiento). La idea es que las tareas sean independientes entre sí siempre que se pueda (hasta que se llega a una release intermedia, que puede ocurrir cada día, una vez a la semana, etc, etc).
El problema es que los programadores que comienzan a usar el nuevo patrón de trabajo tienen una sensación de urgencia que les lleva a querer incorporar todo lo que hacen sus compañeros a la rama de su tarea actual. Se trata, como decía, de algo totalmente normal. De hecho, mirando alguno de nuestros árboles de versiones, de cuando comenzamos a usar Plastic para gestionar su propio desarrollo y alguno de los miembros del equipo pasaba por una fase similar, se puede apreciar perfectamente el patrón de merge excesivo entre ramas.

La imagen muestra uno de nuestros ficheros, en una fase muy inicial del desarrollo, y cómo se producen merges sucesivos entre dos ramas (de dos tareas diferentes).


En ocasiones es inevitable (y correcto) que esto ocurra, pero en otras no.
Veamos un ejemplo: la semana pasada estuve trabajando en dos tareas diferentes, por un lado la tarea SCM1457 en la que introduje unas modificaciones en la herramienta gráfica para que funcionase correctamente en Linux, por otro una mejora (SCM1461) que permite fijar el selector para trabajar en una rama o en una etiqueta sin tener que editarlo a mano, sólo con el menú contextual. Más tarde necesitaba grabar un vídeo del sistema funcionando en Linux, y pensé que estaría bien poder mostrar la nueva funcionalidad de cambio de selector. Así que había varias opciones:

  • Integrar los cambios de SCM1457 sobre SCM1461 (o viceversa), compilar y grabar el vídeo. Es la opción más sencilla, pero no siempre la más adecuada. ¿Por qué? Supongamos que las correcciones para funcionar en Linux (SCM1457) se integran sobre SCM1461. ¿Qué pasa si posteriormente se descubre que esas correcciones no son correctas en Windows? La tarea 1461 queda afectada por esos cambios, y ya no se puede decidir integrar 1461 y excluir 1457 (como se haría en el escenario habitual), ya que 1461 incluye 1457.
  • Crear una nueva rama e integrar ambas sobre ella. Es una opción adecuada, ya que evita los problemas de la aproximación anterior. No obstante en mi caso sólo necesitaba ambas tareas juntas para realizar una simple compilación, sin tener que esperar a la próxima release.
  • Usar el selector para coger los contenidos de ambas ramas.

El tercer caso es el que finalmente utilicé, y el que voy a explicar. Observando los contenidos de ambas ramas se veía que no tocaban los mismos ficheros, así que era posible cargar ambos sin necesidad de hacer un merge. De hecho en la tarea para las correcciones en Linux sólo había modificado 2 ficheros, con cargarlos y coger también la rama 1461, sería suficiente.



repository "codice"
// coger el fichero SeidUtils.cs y Optionsform.cs de 1467
path "/01nerva/src/client/security/linuxseid/SeidUtils.cs"
br "/main/FixBL047/SCM1457"
path "/01nerva/src/plastic/OptionsForm.cs"
br "/main/FixBL047/SCM1457"
// el resto de 1461
path "/"
br "/main/FixBL047/SCM1461" lb "BL047.5"


De este modo, sin necesidad de hacer un merge,
se pueden cargar contenidos de más de una ubicación.


Una demostración más de la potencia de los selectores.

1 comentarios:

Integración de Visual Studio y Plastic SCM

10:07 0 Comments

Todos los que han usado Visual Studio 2003 con algún control de versiones sabrán que no está preparado para soportar movidos y renombrados de elementos. Se trata de una limitación heredada de Visual Source Safe, que no controla versiones de directorios, y por tanto tiene graves problemas tanto moviendo como renombrando ficheros.

Sin embargo, en la versión 2005, el IDE si soporta esta funcionalidad, informando al control de código fuente que tenga por debajo de los elementos movidos renombrados desde Visual Studio.

A partir de la versión 47.5, los usuarios de Plastic podrán disfrutar de esta funcionalidad, que la mayoría de controles de versiones no soportan en su integración con Visual Studio: sólo teneis que echar un vistazo a Perforce, SurroundSCM, AccuRev, Hansky ...

En versiones posteriores, iremos mejorando las posibilidades para que el trabajo con PlasticSCM desde los entornos de desarrollo sean completamente funcionales.

Por otro lado, se ha dado soporte para integrar PlasticSCM con MSAccess. Tan sólo hay que instalar un Add-in proporcionado por Microsoft, e instalar el Plugin de Visual Studio de Plastic.

0 comentarios: