Selectores a fondo (I)
Uno de los objetivos de Plastic, como hemos comentado ya en alguna ocasión, es proporcionar características realmente avanzadas, a todo tipo de grupos de desarrollo.Una de esas características es la capacidad de configurar totalmente el espacio de trabajo.

Bien, queda más o menos claro lo que es un espacio de trabajo (lo que se suele denominar sandbox en Subversion, vista en Clearcase...), pero, ¿cómo se le especifica qué debe descargar exactamente desde el repositorio?
Entra en juego uno de los conceptos más potentes del sistema: el selector.

El selector por defecto de un espacio de trabajo tiene el siguiente aspecto:
repository "default"
path "/"
branch "/main"
checkout "/main"
¿Qué significa?
El selector es un conjunto de reglas que indican exactamente qué debe descargarse en un espacio de trabajo, y también cómo realizar, o más bien desde dónde, la operación de check out. En el caso del selector por defecto la primera regla que aparece se llama repository e indica contra qué repositorio trabajar. Por defecto se trabaja contra el repositorio que el sistema crea automáticamente durante la instalación, que se llama default. Por eso repository "default" significa vamos a trabajar contra el repositorio "default".
Pero una vez especificado el repositorio, hay que indicar a qué path se aplicarán las reglas. Es decir, directorios (e incluso ficheros) diferentes podrían descargarse aplicando reglas distintas... Eso da muchísima potencia al sistema, pero vayamos paso a paso.
Mediante la regla path "/" lo que se indica es: para todo lo que haya dentro del directorio raíz del repositorio "default", se aplicarán las siguientes reglas.
Y las siguientes reglas son: branch "/main" checkout "/main" que quieren decir: coge lo último de la rama "/main" y cuando sea necesario hacer un check out, hazlo también en "/main".
¿Por qué sabe que tiene que coger lo último? Básicamente porque ese es el comportamiento por defecto, si no quisiéramos lo último sino algo etiquetado de una cierta forma, o una versión concreta, se aplicarían otras reglas diferentes. El siguiente selector tomaría todo desde la etiqueta BL0100.
repository "default"
path "/"
label "BL0100"
checkout "/main"
Símplemente se cambia branch por label.
Pero podría especificarse que se descargue una versión concreta de un fichero o directorio. El siguiente selector descargaría la revisión 10 dentro de la rama /main de /src/main.java, y el resto desde la rama principal. El ejemplo muestra, también, cómo componer diferentes reglas.
repository "default"
path "/src/main.java"
br "/main" revno "10"
path "/"
branch "/main"
checkout "/main"
El sistema va interpretando las reglas de una en una.
Si un elemento no puede cargarse con una regla se intenta con la siguiente, y si ninguna logra cargar el elemento, se descarta.
Hasta aquí la primera entrega sobre selectores, queda mucho más, pero para ir empezando es suficiente.
2 comentarios:
Hola:
Me gustaría saber con qué herramienta has hecho el gráfico que aparece en esta entrada. Ya he visto gráficos similares en otros sitios pero no sé con qué aplicación se hace.
Muchas gracias.
Hola,
Pues ese gráfico está hecho con el programa Visio de Microsoft.
Publicar un comentario