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

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.

La finestra New Distribution Link: i menu Source Repository e Target Repository, l'area Path Patterns (one per line) riempita con due pattern, e i pulsanti Cancel e Create Link.

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.

Il pannello Pending Files espanso sotto una riga di collegamento: i percorsi contrassegnati come new, modified o locked con la loro revisione di origine, e sopra l'elenco il banner verde lasciato dall'ultima pubblicazione.

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

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.