uVersion
Español
Descargar →

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

Un modelo de acceso distinto al de las demás pestañas La distribución no está protegida como las demás pestañas. Requiere la capacidad 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

El formulario New Link: Source Repository, Target Repository y la zona Path Patterns.
  1. Pestaña DistributionNew Link.
  2. Source Repository: el repositorio del que provienen los archivos.
  3. Target Repository: el repositorio de destino (el origen elegido se retira de la lista; origen y destino no pueden ser el mismo).
  4. Path Patterns: un patrón por línea (p. ej. Plugins/MyPlugin/, Content/SharedAssets/). Se requiere al menos uno.
  5. Confirme con Create Link.

Un vínculo que ya existe entre los mismos dos repositorios se rechaza (conflicto). Cada fila muestra source → cible, sus patrones, quién lo creó y la fecha de la última publicación.

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

La lista de archivos pendientes (new/modified/locked) y el aviso de resumen de publicación.

Tres acciones sobre cada vínculo:

  • Show pending files (icono de archivo): lista los archivos que difieren, marcados como new, modified o locked, con su revisión.
  • Publish history (reloj): las 50 últimas publicaciones (cuántos actualizados / omitidos, quién, cuándo).
  • Publish (enviar): ejecuta la copia. Un aviso resume «X archivos de origen encontrados, Y actualizados, Z omitidos (bloqueados), W sin cambios». Deshabilitado si el vínculo está inactivo.

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).

También puede activar / desactivar o eliminar un vínculo.

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).

Numeración de revisión Las revisiones distribuidas usan un contador global por encima de la revisión actual del destino, para que la sincronización incremental las recupere. El historial por archivo puede, por tanto, «saltar» (p. ej. rev 1 y luego rev 200): es cosmético. Los chunks se comparten (sin duplicación de datos, solo un incremento de referencia).

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.