Wiki
Distribución
Copiar archivos (plugins, contenido compartido) de un repositorio origen a un repositorio destino mediante patrones de ruta. Publicación, remapeo, bloqueos omitidos.
Introducción
La distribución copia archivos (un plugin, un paquete de contenido compartido) de un repositorio origen a un repositorio destino, limitándose a patrones de ruta. Crea nuevas revisiones en el destino, de modo que la sincronización incremental habitual propaga el contenido a los clientes. Es la manera de compartir un mismo plugin entre varios proyectos sin copiar y pegar manualmente.
Acceso y roles
manage_rules, que poseen admin y lead en todo el servidor. Un
project_admin, que no posee ninguna capacidad, no tiene acceso. Un
lead, en cambio, puede vincular cualquier repositorio con cualquier otro.
Crear un vínculo
1. Abrir la pestaña Distribution
La pestaña Distribution está en la fila SERVER: un vínculo conecta dos repositorios, por lo que no depende del repositorio elegido en la fila PROJECT. Haga clic en + New Link, arriba a la derecha: se abre la ventana New Distribution Link.
2. Elegir el origen, el destino y las rutas
Source Repository es el repositorio del que provienen los archivos, Target Repository
el de destino: el origen elegido desaparece de la lista de destinos, un vínculo no puede volver sobre sí mismo.
Path Patterns toma un patrón por línea (por ejemplo
Plugins/MyPlugin/, Content/SharedAssets/), y se requiere al menos uno: sin patrón, no se
copiaría nada.
3. Confirmar con Create Link
El vínculo aparece de inmediato en la lista. Un vínculo que ya existe entre los mismos dos repositorios se rechaza (conflicto): edite el existente en lugar de crear un segundo.
Patrones de ruta
Un patrón coincide con una ruta si aparece en cualquier parte de ella (búsqueda de tipo «contiene»).
Así, un patrón Plugins/uVersion coincide con
DefaultProject/Plugins/uVersion/Source/Foo.cpp sea cual sea el prefijo de proyecto. La barra final no
cambia nada.
Publicar
1. Localizar el vínculo y sus acciones
Cada vínculo ocupa una fila de la lista: source → cible, sus patrones en forma de píldoras, quién lo
creó y la fecha de la última publicación. Las acciones se agrupan a la derecha de la fila:
Show pending files (icono de archivo), Publish history (reloj),
Publish, el interruptor que activa o desactiva el vínculo, y la eliminación.
2. Comprobar lo que va a salir
Show pending files despliega, bajo la fila, la lista de los archivos que difieren, con su revisión de origen y un total en el título (Pending Files (N)). Cada uno lleva su estado: new, modified o locked. Si todo está al día, el panel lo indica.
3. Publicar
El botón Publish ejecuta la copia. Un aviso verde resume «Published: X source files found, Y updated, Z skipped (locked), W unchanged». El botón está deshabilitado mientras el vínculo esté inactivo, y publicar un vínculo inactivo devuelve un error explícito.
Un archivo bloqueado en el destino se omite, no se sobrescribe. Un archivo con contenido idéntico (mismo hash) se cuenta como sin cambios y se omite. La publicación es atómica (una sola transacción).
Publish history (reloj) da luego las 50 últimas publicaciones: cuántos archivos actualizados y omitidos, por quién y cuándo.
Remapeo y revisiones
La ruta se reescribe para el destino: uVersion retira lo que precede al patrón que coincidió y luego
añade el prefijo detectado en el destino. Ejemplo: origen
DefaultProject/Plugins/uVersion/foo.cpp, patrón Plugins/uVersion, prefijo de destino
CineDroneStudio/ → CineDroneStudio/Plugins/uVersion/foo.cpp. El prefijo de destino se deduce
de un archivo existente del destino (gestiona repositorios con o sin subcarpeta de proyecto).
Errores frecuentes
«Publish» está en gris
El vínculo está inactivo. Actívelo primero. Publicar un vínculo inactivo devuelve un error explícito.
Un archivo no se actualiza en el destino
O bien está bloqueado en el lado del destino (entonces se omite y se cuenta como «locked»), o bien su contenido ya es idéntico (contado como «unchanged»). Consulte el resumen de publicación y la lista de pending files.
Un project_admin no ve la pestaña
Es intencionado: la distribución requiere manage_rules (admin o lead). Un project_admin no tiene acceso,
ni siquiera en sus propios repositorios.