uVersion
Italiano
Scarica →

Wiki

Distribuzione

Copiare file (plugin, contenuti condivisi) da un repository di origine a un repository di destinazione tramite pattern di percorso. Pubblicazione, remapping, blocchi ignorati.

Introduzione

La distribuzione copia file (un plugin, un pacchetto di contenuti condivisi) da un repository di origine a un repository di destinazione, limitandosi a pattern di percorso. Crea nuove revisioni nella destinazione, così che la consueta sincronizzazione incrementale propaghi il contenuto ai client. È il modo per condividere lo stesso plugin tra più progetti senza copia e incolla manuali.

Accesso e ruoli

Un modello di accesso diverso dalle altre schede La distribuzione non è protetta come le altre schede. Richiede la capacità manage_rules, detenuta da admin e lead a livello dell'intero server. Un project_admin, che non detiene alcuna capacità, non vi ha accesso. Un lead, invece, può collegare qualsiasi repository a qualsiasi altro.

Creare un collegamento

Il modulo New Link: Source Repository, Target Repository e l'area Path Patterns.
  1. Scheda DistributionNew Link.
  2. Source Repository: il repository da cui provengono i file.
  3. Target Repository: il repository di destinazione (l'origine scelta viene rimossa dall'elenco; origine e destinazione non possono coincidere).
  4. Path Patterns: un pattern per riga (es. Plugins/MyPlugin/, Content/SharedAssets/). Ne è richiesto almeno uno.
  5. Confermare con Create Link.

Un collegamento già esistente tra gli stessi due repository viene rifiutato (conflitto). Ogni riga mostra source → cible, i suoi pattern, chi lo ha creato e la data dell'ultima pubblicazione.

Pattern di percorso

Un pattern corrisponde a un percorso se compare da qualche parte al suo interno (ricerca di tipo «contiene»). Un pattern Plugins/uVersion corrisponde quindi a DefaultProject/Plugins/uVersion/Source/Foo.cpp qualunque sia il prefisso del progetto. La barra finale non cambia nulla.

Pubblicare

L'elenco dei file in attesa (new/modified/locked) e il banner di riepilogo della pubblicazione.

Tre azioni su ogni collegamento:

  • Show pending files (icona file): elenca i file che differiscono, contrassegnati come new, modified o locked, con la loro revisione.
  • Publish history (orologio): le ultime 50 pubblicazioni (quanti aggiornati / ignorati, chi, quando).
  • Publish (invio): esegue la copia. Un banner riepiloga «X file di origine trovati, Y aggiornati, Z ignorati (bloccati), W invariati». Disabilitato se il collegamento è inattivo.

Un file bloccato nella destinazione viene ignorato, non sovrascritto. Un file con contenuto identico (stesso hash) è conteggiato come invariato e ignorato. La pubblicazione è atomica (un'unica transazione).

È possibile anche attivare / disattivare o eliminare un collegamento.

Remapping e revisioni

Il percorso viene riscritto per la destinazione: uVersion rimuove ciò che precede il pattern che ha corrisposto, quindi aggiunge il prefisso rilevato sulla destinazione. Esempio: origine DefaultProject/Plugins/uVersion/foo.cpp, pattern Plugins/uVersion, prefisso di destinazione CineDroneStudio/CineDroneStudio/Plugins/uVersion/foo.cpp. Il prefisso di destinazione è dedotto da un file esistente nella destinazione (gestione dei repository con o senza sottocartella di progetto).

Numerazione delle revisioni Le revisioni distribuite usano un contatore globale al di sopra della revisione corrente della destinazione, così che la sincronizzazione incrementale le recuperi. La cronologia per file può quindi «saltare» (es. rev 1 poi rev 200): è cosmetico. I chunk sono condivisi (nessuna duplicazione di dati, solo un incremento di riferimento).

Trappole comuni

«Publish» è in grigio

Il collegamento è inattivo. Attivalo prima. Pubblicare un collegamento inattivo restituisce un errore esplicito.

Un file non viene aggiornato nella destinazione

O è bloccato sul lato destinazione (viene quindi ignorato e conteggiato come «locked»), oppure il suo contenuto è già identico (conteggiato come «unchanged»). Guarda il riepilogo di pubblicazione e l'elenco dei pending files.

Un project_admin non vede la scheda

È voluto: la distribuzione richiede manage_rules (admin o lead). Un project_admin non vi ha accesso, nemmeno sui propri repository.