Plastic SCM es un sistema de control de versiones distribuido propietario desarrollado por la empresa española Códice Software. Como objetivos fundamentales, Plastic trata de dar un mayor soporte al desarrollo paralelo, creación de ramas, integración (merge) de ramas, seguridad y desarrollo distribuido.
Plastic SCM | ||
---|---|---|
Información general | ||
Tipo de programa | Control de versiones | |
Desarrollador | Códice Software | |
Licencia | propietaria | |
Información técnica | ||
Plataformas admitidas | .NET / Mono | |
Versiones | ||
Última versión estable | 5.4.16.644 (Freiburg) ( 10 de febrero de 2015 (10 años, 1 mes y 21 días)) | |
Enlaces | ||
Sitio web oficial
| ||
Para favorecer el desarrollo paralelo, Plastic se centra en dar soporte al branching, que consiste en dividir el desarrollo en distintas ramas, siguiendo una determinada política de uso, protección, desprotección, contenidos, etc. La principal diferencia entre el modelo de branching de Plastic y los implementados por sistemas tales como CVS, Perforce o Team Foundation Server estriba en que en lugar de realizar una copia de todo (o solamente de los metadatos) a cada nueva rama que se genera, las ramas son creadas como objetos vacíos. Solamente cuando un ítem es modificado, la nueva revisión creada es asignada a la rama. Subversion implementa el branching creando copias de toda la rama, pero posponiendo la copia hasta que el fichero es realmente modificado (lo que se conoce como copy-on-write).
De este modo la rama contiene solamente ficheros y directorios que se han modificado o creado con respecto a su rama padre.
Este enfoque permite crear muchas ramas de forma sencilla, haciendo posible la implementación de patrones de branching como por ejemplo el de “rama por tarea”, detallado en el libro SCM Patterns (referencia) y en CM Crossroads (referencia).
El modelo de branching utilizado en Plastic puede compararse con el implementado en Clearcase.
Debido al soporte que la infraestructura del modelo de branching de Plastic aporta, este sistema puede manejar miles de ramas en un solo repositorio sin pérdida notable en el rendimiento.
Plastic 2.5 (Julio de 2008) introduce el concepto de ramas inteligentes.
Las ramas inteligentes consisten en ramas en las cuales el usuario puede definir una jerarquía de ramas, con soporte de los mecanismos de herencia.
Es importante anotar que una rama en Plastic es simplemente un nuevo objeto en el sistema. Como hemos señalado antes, está vacía desde su creación, pero virtualmente contiene los ficheros y directorios de su progenitor (o progenitores si se utiliza una jerarquía multinivel).
Una rama inteligente puede crearse a partir de una etiqueta específica, un conjunto de cambios (changeset) o una rama particular.
La herencia de ramas puede ser configurada en la interfaz gráfica de usuario de Plastic. Pueden establecerse múltiples niveles de herencia a gusto del usuario.
El explorador de ramas es una interfaz de usuario que dibuja todas las ramas de un repositorio. Además representa las relaciones de fusión (merge) entre ramas y las relaciones de herencia.
El explorador de ramas fue introducido por primera vez en Plastic 1.5 y ha sido progresivamente mejorado desde entonces. En la versión 2.0 se introdujo soporte interactivo, de este modo las operaciones comunes entre ramas como por ejemplo la creación, merging o ejecución de consultas comunes pueden ser realizadas desde el propio explorador.
El explorador dibuja:
El explorador permite visualizar los cambios realizados en las ramas o en los conjuntos de cambios.
Plastic provee mecanismos para visualizar árboles de revisiones de archivos y directorios. El árbol de revisiones 3D muestra la evolución de un fichero o directorio dado, incluyendo enlaces de las operaciones de merge sufridas (las flechas verdes). Otro tipo de información incluida son las etiquetas y demás datos adicionales.
Más recientemente se han introducido nuevos tipos de información:
Plastic soporta directory versioning. Tanto renombrado como cambios de ubicación de los directorios también están soportados.
Cada vez que se realiza una operación de merge, se crea un vínculo entre las revisiones origen y destino de la fusión. Tal vínculo es importante no sólo para visualizar el proceso (mostrado en el árbol antes descrito), sino también para que Plastic lo utilice internamente en las siguientes operaciones de merge.
Cuando se funde una rama, se crean vínculos de merge, para que si se vuelve a intentar realizar el merge de nuevo Plastic notifique que no quedan fusiones que realizar.
Plastic incluye las siguientes herramientas:
Cada objeto ubicado en un repositorio de Plastic tiene una Lista de Control de Acceso (Access Control List, ACL en inglés) asociada. Se incluyen unos 25 tipos de permisos diferentes para permitir o denegar operaciones como por ejemplo protecciones, desprotecciones, fusiones, aplicación de etiquetas, creación de repositorios o espacios de trabajo, etc.
Plastic almacena toda su información y metadatos en bases de datos. Actualmente (versión 2.0), Plastic soporta:
Plastic utiliza tres tipos de bases de datos diferentes:
Las bases de datos pueden consultarse directamente mediante herramientas externas o utilizando el comando de consultas que el propio Plastic ofrece (cm query).
Por defecto Plastic despliega una base de datos Firebird tanto en Windows como en Linux. Esta solución funciona razonablemente bien en entornos pequeños y medianos.
MySQL y SQL Server tienen mejor desempeño en entornos con grandes cargas de trabajo, aportando a Plastic una escalabilidad mayor.
Un espacio de trabajo es un directorio donde se mapean los contenidos del repositorio. Para seleccionar exactamente qué debe descargarse en el disco del usuario, cada espacio de trabajo tiene un selector asociado. Este selector es bastante similar al config_spec de ClearCase, proporcionando múltiples posibilidades de personalización.
Se han lanzado cinco versiones oficiales de Plastic SCM: