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
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
- Scheda Distribution → New Link.
- Source Repository: il repository da cui provengono i file.
- Target Repository: il repository di destinazione (l'origine scelta viene rimossa dall'elenco; origine e destinazione non possono coincidere).
- Path Patterns: un pattern per riga (es.
Plugins/MyPlugin/,Content/SharedAssets/). Ne è richiesto almeno uno. - 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
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).
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.