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
1. Aprire la scheda Distribution
La scheda Distribution si trova nella riga SERVER: un collegamento unisce due repository, quindi non dipende dal repository scelto nella riga PROJECT. Fai clic su + New Link, in alto a destra: si apre la finestra New Distribution Link.
2. Scegliere l'origine, la destinazione e i percorsi
Source Repository è il repository da cui provengono i file, Target Repository quello
di destinazione: l'origine scelta scompare dall'elenco delle destinazioni, un collegamento non può ripiegarsi su se
stesso. Path Patterns accetta un pattern per riga (per esempio
Plugins/MyPlugin/, Content/SharedAssets/), e ne è richiesto almeno uno: senza pattern non
verrebbe copiato nulla.
3. Confermare con Create Link
Il collegamento compare subito nell'elenco. Un collegamento già esistente tra gli stessi due repository viene rifiutato (conflitto): modifica quello esistente invece di crearne un secondo.
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
1. Individuare il collegamento e le sue azioni
Ogni collegamento occupa una riga dell'elenco: source → cible, i suoi pattern come pillole, chi lo ha
creato e la data dell'ultima pubblicazione. Le azioni sono raggruppate a destra della riga:
Show pending files (icona file), Publish history (orologio),
Publish, l'interruttore che attiva o disattiva il collegamento, e l'eliminazione.
2. Verificare cosa sta per partire
Show pending files espande, sotto la riga, l'elenco dei file che differiscono, con la loro revisione di origine e un totale nel titolo (Pending Files (N)). Ciascuno riporta il proprio stato: new, modified o locked. Se tutto è aggiornato, il pannello lo dice.
3. Pubblicare
Il pulsante Publish esegue la copia. Un banner verde riepiloga «Published: X source files found, Y updated, Z skipped (locked), W unchanged». Il pulsante è disabilitato finché il collegamento è inattivo, e pubblicare un collegamento inattivo restituisce un errore esplicito.
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).
Publish history (orologio) fornisce poi le ultime 50 pubblicazioni: quanti file aggiornati e ignorati, da chi, e quando.
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.