Using External Version Control

La forma più avanzata di lavorare con i progetti sotto controllo di versione consiste nello sfruttare le funzionalità di un Workspace connesso. Un Workspace offre la struttura avanzata di un progetto, che mette a disposizione un flusso di lavoro e un'archiviazione semplificati, funzionalità di collaborazione migliorate e altro ancora.

Il repository VCS di destinazione in un Workspace è strettamente integrato sia con il Workspace sia con Altium Designer (quando si è connessi), eliminando la necessità di impostare e configurare repository VCS separati. L'accesso degli utenti, il contenuto del repository e lo stato dei progetti possono essere gestiti tramite l'interfaccia browser del Workspace. Se si utilizza il VCS interno di un Workspace connesso, le informazioni in questa pagina non si applicano al proprio caso.

Questo documento descrive l'approccio fondamentale all'uso del controllo di versione esterno, in cui il repository non è ospitato in un Workspace connesso. Ciò include repository di controllo di versione disponibili localmente, tramite una rete connessa o da un prodotto server VCS dedicato. Se si utilizza un VCS esterno, continuare a leggere.

Uno dei maggiori punti di forza di un ambiente di creazione e modifica elettronica è la facilità con cui è possibile creare e modificare un file. Questa capacità consente di acquisire, esplorare e sviluppare rapidamente le idee, ma significa anche che può essere difficile tenere traccia delle modifiche apportate a file di valore come il codice sorgente e i dati di progettazione elettronica.

La necessità di tenere traccia delle modifiche apportate a un file, unita all'esigenza di una soluzione sistematica per gestire le sorgenti acquisite in forma elettronica, ha portato alla nascita dei sistemi di controllo di versione (VCS). I sistemi di controllo di versione sono strumenti software che non solo sono in grado di mantenere una cronologia delle varie versioni di un file, ma supportano anche l'apertura di qualsiasi revisione di quel file, nonché il confronto delle modifiche apportate tra due qualsiasi versioni del file. Un VCS generalmente si integra con il sistema operativo (OS) locale fornendo funzioni e operazioni di versioning aggiuntive per cartelle e file.

I sistemi di controllo di versione possono essere utilizzati in modo completamente indipendente dall'ambiente di creazione e modifica usato per creare un file. In genere offrono un'interfaccia che consente di eseguire Add e poi Commit dei file in un'area di archiviazione centrale chiamata repository, una funzione Checkout per copiare un file dal repository a una cartella di lavoro, una funzione Commit per reinviare al repository eventuali modifiche, un metodo per registrare informazioni su una modifica e molto altro.

Queste funzionalità si trovano nelle estensioni della shell di Windows come il client Tortoise e sono incluse anche nello stesso Altium Designer. Le operazioni VCS possono essere eseguite all'interno dell'ambiente Altium Designer senza la necessità di accedere al file system del sistema operativo.

È utile comprendere la terminologia utilizzata con i sistemi di controllo di versione. Anche se sono disponibili numerosi sistemi, in generale usano tutti termini simili per descrivere le proprie funzionalità.

Elementi essenziali del controllo di versione

Altium Designer supporta i sistemi di controllo di versione (VCS) Subversion (SVN) e Git. Poiché dispone di supporto interno per questi sistemi, fornisce accesso ai comuni comandi di gestione file SVN/Git come Commit, Update, ecc. all'interno di Altium Designer, insieme a funzionalità aggiuntive di Subversion come la possibilità di creare un repository SVN. Questo si integra con le funzionalità di confronto di schemi e PCB, rendendo semplice confrontare rapidamente e identificare le differenze tra due revisioni di uno schema o di un documento PCB e, per i progetti PCB, risolvere i conflitti tra revisioni concorrenti.

L'approccio di base al lavoro con un sistema di controllo di versione (VCS) consiste nell'accedere dal repository a una copia dei file di progetto su cui si desidera lavorare, modificare i file in Altium Designer e quindi eseguire il "commit" dei file modificati nel repository. L'interazione con il repository avviene tramite un'interfaccia del sistema di controllo di versione, che Altium Designer ha integrato nel proprio pannello Storage Manager e nel pannello Projects.

La chiave del funzionamento di un sistema di controllo di versione è che monitora lo stato dei file a cui si è avuto accesso dal repository, tramite una cartella di lavoro, e quindi tiene traccia della revisione su cui si sta lavorando e del fatto che sia stata modificata. Sebbene il risultato sia lo stesso, la disposizione del repository e dei file di lavoro differisce tra i tipi di sistemi di controllo di versione: Git o SVN.

Assicurarsi che le estensioni software VCS Provider - SVN e VCS Provider - Git siano installate in Altium Designer. Queste estensioni sono installate in Altium Designer per impostazione predefinita e possono essere installate o rimosse manualmente.

Per ulteriori informazioni sulla gestione delle estensioni, fare riferimento alla pagina Extending Your Installation (Altium Designer Develop, Altium Designer Agile, Altium Designer).

Git VCS

La figura seguente illustra il concetto di una condivisione di repository Git remoto che contiene una sequenza di revisioni dei file di progetto (fino alla revisione 5), il cui contenuto è stato copiato in un repository Git di lavoro locale, in genere clonando il repository remoto o eseguendo il pull dei suoi dati nel repository di lavoro. Quando i file nel repository di lavoro vengono aperti nell'ambiente Altium Designer, Altium Designer riconosce che un file di progetto è sotto controllo di versione Git, con il relativo stato corrente del controllo di versione mostrato sia nel pannello Storage Manager sia nel pannello Projects.

Concept image showing how the files are managed by the Git Version Control System

► Vedere la pagina Controllo di versione basato su Git per ulteriori informazioni.

Subversion VCS

La figura seguente illustra il concetto di un repository Subversion che contiene una sequenza di revisioni dei file di progetto (fino alla revisione 5), con l'ultima copia estratta (File » Check Out) in una cartella di lavoro. Quando i file nella cartella di lavoro vengono aperti nell'ambiente Altium Designer, Altium Designer riconosce che un file di progetto è sotto controllo di versione SVN, con il relativo stato corrente del controllo di versione mostrato sia nel pannello Storage Manager sia nel pannello Projects.

Concept image showing how the files are managed by the Subversion Version Control System

► Vedere la pagina Controllo di versione basato su SVN per ulteriori informazioni.

In entrambi i sistemi VCS sopra indicati, il collegamento tra il repository sorgente e la posizione di lavoro è referenziato nel database VCS di quest'ultima (nella sottocartella di sistema .svn o .git).

Quando i file di lavoro VCS sono aperti in Altium Designer, il menu del tasto destro nel pannello Storage Manager (e nel pannello Projects) consente di eseguire azioni VCS standard, come il commit di un file modificato nel repository centrale (SVN) o nel repository di lavoro (Git).

Accesso al controllo di versione

In Altium Designer, le azioni relative al VCS possono essere eseguite tramite i pannelli Projects e Storage Manager, con quest'ultimo che fornisce accesso diretto a comandi e informazioni VCS aggiuntivi. I pannelli vengono popolati con i documenti di progetto e il relativo stato VCS quando vengono aperti in Altium Designer.

I pannelli possono essere aperti dal menu del pulsante in basso a destra dell'area di lavoro oppure dal menu principale View » Panels.

Pannello Projects

Il pannello Projects visualizza tutti i progetti attualmente aperti in Altium Designer, insieme ai documenti che li compongono e allo stato del controllo di versione associato a ciascun file.

Lo stato VCS dei file nel pannello è indicato tramite una serie di icone che corrispondono a specifiche condizioni dei file rilevate dal sistema di controllo di versione. Lo stato della condizione per ciascun file è, in termini generali, relativo al suo equivalente esistente sotto controllo di versione nel repository collegato. I comandi VCS nel pannello Projects sono accessibili dall'opzione Version Control nel menu contestuale del pannello richiamabile con il tasto destro.

Icone del controllo di versione come appaiono nel pannello Projects Icone del controllo di versione come appaiono nel pannello Projects

Le icone di stato VCS del pannello appariranno solo se l'opzione Show VCS status (in General) è selezionata nella pagina System – Projects Panel della finestra di dialogo Preferences. Potrebbe essere necessario un riavvio affinché la modifica abbia effetto.

► Vedere la pagina pannello Projects per ulteriori informazioni.

Pannello Storage Manager

Il pannello Storage Manager fornisce una vista dettagliata del documento attivo dal punto di vista dell'archiviazione dei file e offre accesso alla funzionalità di cronologia locale del documento e allo stato/comandi del controllo di versione.

Lo stato VCS dei file nel pannello è indicato tramite una serie di descrizioni e icone corrispondenti che si riferiscono a specifiche condizioni dei file rilevate dal sistema di controllo di versione. Lo stato della condizione per ciascun file è, in termini generali, relativo al suo equivalente esistente sotto controllo di versione nel repository collegato.

Il pannello Storage ManagerIl pannello Storage Manager

I comandi VCS nel pannello Storage Manager sono accessibili dal menu contestuale richiamabile con il tasto destro. Per eseguire un'azione VCS su un file specifico, fare clic con il tasto destro sulla relativa voce nel pannello e selezionare il comando desiderato, ad esempio Commit, Update, Resolve conflict, ecc.

La cronologia delle revisioni del file selezionato e la cronologia locale del documento possono essere visualizzate nella sezione inferiore del pannello, oppure come timeline complessiva degli eventi se si passa alla "vista classica" – Switch to Classic View nelle opzioni del tasto destro. Il numero di revisione indicato aumenterà a ogni commit VCS, dove la prima revisione (Revision 1) corrisponde alla creazione delle cartelle del progetto VCS, prima che i file vengano aggiunti.

► Vedere la pagina pannello Storage Manager per ulteriori informazioni.

Stato del controllo di versione

Per entrambi i pannelli Projects e Storage Manager, lo stato VCS corrente di ciascun file sotto controllo di versione viene visualizzato insieme alla relativa voce nel pannello.

Il sistema di controllo di versione monitora e confronta essenzialmente i file nella cartella di lavoro con le rispettive controparti nel repository di progetto. Altium Designer richiede e scambia informazioni con il sistema di controllo di versione tramite la propria interfaccia VCS e risponde di conseguenza alle condizioni comparative dello stato dei file. In pratica, ciò si manifesta nelle icone dei file nei pannelli Projects e Storage Manager, attraverso una gamma di avvisi VCS e mediante opportune modifiche ai comandi disponibili per la gestione dei file.

Le icone e il loro significato sono descritti nella sezione Version Control Status Icons della pagina Managing Project Documents.

Accesso multiutente

Nella maggior parte dei casi, l'infrastruttura di controllo versione di un'azienda sarà basata su repository SVN o Git centrali, serviti sulla rete utilizzando uno dei metodi di protocollo disponibili – svn, svn+ssh, https, ecc. Questo fornisce accesso a tutti gli utenti della rete, in base alle autorizzazioni, e un mezzo per lo sviluppo collaborativo dei progetti a partire da un'unica fonte.

A loro volta, le funzionalità di accesso multiplo consentono ai diversi membri del team di continuare a lavorare su un progetto in modo indipendente, senza dover aspettare che qualcun altro reintegri un file prima di poterci lavorare. Un sistema di Git version control system distribuito porta questo vantaggio ancora oltre, consentendo di eseguire il commit dei file nel repository di lavoro locale mentre si lavora e di “pushare” tali modifiche confermate nel repository Git centrale in un secondo momento – e, di conseguenza, non richiede una connessione di rete fino ad allora.

Tuttavia, un VCS compatibile con il lavoro di squadra richiede che siano disponibili strumenti e tecniche per risolvere l'inevitabile situazione in cui due utenti hanno modificato lo stesso file. Quando queste funzionalità sono disponibili, sono poste le basi per una vera collaborazione di progettazione multiutente e per i relativi vantaggi.

Per supportare questa situazione, Altium Designer include funzionalità di confronto (o "diff") tra schemi e PCB, disponibili tramite il Storage Manager panel.

Repository VCS

Il modo migliore per lavorare a partire da un insieme noto di file sorgente è archiviare il progetto di progettazione in un ambiente controllato, come un repository di controllo versione. Questo è importante perché l'unico modo per garantire che gli output provengano dai file sorgente corretti è:

  1. Confermare che l'insieme dei file sorgente sia aggiornato.
  2. Farne un'istantanea.
  3. Generare gli output da tale istantanea.

In Altium Designer, tale repository è indicato come Design Repository. Di proprietà del team di progettazione, il Design Repository contiene una vista ad alta risoluzione della cronologia del processo di progettazione ed è il principale strumento di collaborazione utilizzato dal team di progettazione.

Il Design Repository diventa il repository centrale dal quale più membri del team possono effettuare check-in e check-out dei dati, mantenendo nel contempo una cronologia completa delle revisioni di tutte le modifiche apportate al progetto. Un progetto viene quindi archiviato come una serie di versioni dei documenti di progetto e sorgente che lo compongono, costruendo nel tempo un quadro progressivo dell'intento del progettista. Utilizzando un Design Repository sotto controllo versione, si ha la garanzia intrinseca che nessuna revisione di un progetto venga mai persa, consentendo una collaborazione sicura sullo stesso progetto tra membri di un team che possono trovarsi in sedi geograficamente disperse. La natura stessa del sistema di controllo versione fornisce una traccia di audit per il progetto. La piena responsabilità deriva dalla trasparenza su chi ha modificato cosa, in quale documento sorgente e quando. Il sistema può supportare più Design Repository sotto controllo versione, con il collegamento a un particolare repository stabilito tramite il link di controllo versione all'interno della cartella del progetto.

Collegandosi a un Design Repository si sta, di fatto, registrando quel repository nel sistema, ovvero si sta comunicando ad Altium Designer la sua esistenza. Inoltre, non è prevista la specifica manuale dei percorsi verso repository non ufficiali o “rogue”. Tramite Altium Designer, è possibile interagire solo con quei Design Repository basati su VCS che sono stati volutamente collegati al sistema.

Prima di utilizzare il controllo versione, i file di progetto devono essere riconosciuti sia dal VCS sia da Altium Designer come sottoposti a controllo versione. Questo processo può variare a seconda dei diversi metodi e applicazioni VCS, ma in sostanza comporta la creazione e/o la connessione a un repository di progettazione e l'aggiunta dei file del progetto di progettazione a tale repository.

I repository di progettazione si basano su una struttura di database e memorizzano internamente le informazioni in una gerarchia di file e directory, detta albero dei file. Il repository effettivo a cui ci si collega può essere un repository SVN centrale, un repository di lavoro Git (associato a un repository Git remoto), oppure uno creato in una posizione accessibile, ad esempio sul PC locale o in una posizione di rete condivisa.

VCS del Workspace connesso

La forma più avanzata di lavoro con progetti sotto controllo versione consiste nello sfruttare le funzionalità di un connected Workspace. Un Workspace offre il costrutto avanzato di un project, che mette a disposizione un flusso di lavoro e un'archiviazione semplificati, funzionalità di collaborazione avanzate e altro ancora.

Il repository VCS di destinazione in un Workspace è strettamente integrato sia con il Workspace sia con Altium Designer (quando si è autenticati), eliminando così la necessità di configurare repository VCS separati. L'accesso degli utenti, il contenuto del repository e lo stato dei progetti possono essere gestiti tramite l'interfaccia browser del Workspace.

Aggiornare il controllo versione con nuove modifiche

Quando un progetto è stato aggiunto al controllo versione, la relativa cartella di lavoro locale del progetto è ora collegata alla sua controparte nel repository VCS, come indicato dall'icona di collegamento associata alle voci della cartella del progetto nel pannello Storage Manager. Per confermare le posizioni della cartella collegata e del repository, fare clic con il pulsante destro su una qualsiasi voce di file nel pannello e selezionare l'opzione VCS Properties (non disponibile quando si utilizza Git). La seguente finestra di dialogo Properties include i percorsi delle posizioni collegate e informazioni sull'ultima revisione VCS.

File indicato dall'icona di collegamento e corrispondente pannello Properties  che contiene informazioni sull'ultima revisione VCS File indicato dall'icona di collegamento e corrispondente pannello Properties che contiene informazioni sull'ultima revisione VCS

La finestra di dialogo Properties fornisce le seguenti informazioni (solo a scopo di visualizzazione; non sono consentite modifiche): 

  • Path - il percorso del documento locale nella cartella di lavoro).
  • URL - l'URL della posizione del documento nel repository VCS.
  • Repository Root - la radice del repository.
  • Repository UUID - l'UUID del repository.
  • Revision - la revisione corrente del documento nella cartella di lavoro locale.
  • Last Change Author - l'autore dell'ultima modifica.
  • Last Change Revision - la revisione dell'ultima modifica
  • Last Change Time - la data e l'ora dell'ultima modifica.
  • Conflicted - se il documento è in conflitto oppure no.

Come risultato del collegamento VCS registrato, il sistema di controllo versione può monitorare e rilevare eventuali differenze tra i file nella cartella del progetto locale e i rispettivi equivalenti nella cartella del repository VCS. Quando viene rilevata una differenza, ad esempio quando un file di progettazione è stato modificato e salvato in Altium Designer, il sistema di controllo versione cambierà lo stato del file locale in Modified () e Altium Designer offrirà un insieme appropriato di comandi VCS nel menu contestuale accessibile con il pulsante destro nei pannelli.

Eseguire il commit delle modifiche

Dopo che un file documento di progetto è stato modificato e salvato in Altium Designer, viene contrassegnato come Modified e indicato come tale () sia nei pannelli Projects sia Storage Manager. Per eseguire il commit di tali modifiche come nuova revisione nel VCS, fare clic con il pulsante destro sulla voce del file nel pannello e selezionare il comando Commit dal menu contestuale oppure selezionare il comando Project » History & Version Control » Commit dai menu principali.

Quando si esegue il commit di una modifica a un file, si aprirà la finestra di dialogo Edit Comment dialog. Utilizzare questa finestra di dialogo per aggiungere un commento che indichi il motivo del commit, il che può aiutare gli altri a capire quali modifiche sono state apportate. Se sono stati aggiunti commenti precedenti, è possibile selezionarne rapidamente uno da riutilizzare.

Il comando Commit Il comando Commit

Si può utilizzare anche il comando Commit Whole Project, che eseguirà il commit di tutti i file modificati nel progetto. Quando si esegue il commit dell'intero progetto, si aprirà la finestra di dialogo Commit to Version Control.

La finestra di dialogo Commit to Version Control
La finestra di dialogo Commit to Version Control

  • When using Subversion (SVN): Il processo di commit copia il file aggiornato dalla cartella locale nel repository, incrementando il numero di revisione della voce VCS e riportando lo stato del file a No Modification ().
  • When using Git:Il processo di commit aggiorna il repository di lavoro locale del VCS, incrementando al contempo il numero di revisione della voce e impostando lo stato del file su Ahead of Server (). È possibile continuare a modificare, salvare ed eseguire il commit dei file nel repository di lavoro oppure ratificare le nuove modifiche utilizzando il comando Push per aggiornare il repository Git remoto: lo stato del file tornerà quindi a No Modification ().

Si noti che per i progetti Workspace basati su Git, i comandi Commit e Commit Whole Project non sono disponibili. È possibile utilizzare il comando Save to Server dal menu contestuale accessibile con il tasto destro sulla voce del progetto nel pannello Projects per eseguire il commit del progetto Workspace nel repository locale e inviarlo al repository remoto in un'unica operazione.

Se necessario, i comandi Commit e Commit Whole Project possono essere resi disponibili abilitando l'opzione VCS.AllowGitCommit nella finestra di dialogo Advanced Settings dialog.

Una volta che un progetto è stato aggiunto al controllo di versione, ulteriori file possono essere aggiunti ed essere sottoposti a commit nel controllo di versione singolarmente, utilizzando i comandi singoli Add to Version Control e Commit. Analogamente, file specifici possono essere rimossi singolarmente dal controllo di versione (ma mantenuti nel progetto di lavoro locale) con il comando Remove from Version Control.

Visualizzare il pannello Storage Manager per vedere la sequenza di azioni nella sezione VCS Revisions, che includerà la creazione di una nuova revisione VCS (con numero di revisione incrementato) per quel file, in questo caso la revisione 3 e il relativo commento aggiunto. L'icona indica la revisione più recente e quella corrente del file selezionato, ovvero, in termini di controllo di versione, la revisione Head.

La sezione VCS Revisions del pannello Storage Manager La sezione VCS Revisions del pannello Storage Manager

Per una vista combinata sia delle voci di revisione sia degli eventi della cronologia, passare alla vista singola Timeline selezionando Switch to Combined View dal menu contestuale accessibile con il tasto destro.

Check out dal controllo di versione

Come illustrato sopra, un progetto locale aggiunto al controllo di versione può essere modificato da Altium Designer dalla cartella locale del progetto, e le modifiche vengono quindi aggiornate nel repository VCS. La cartella locale e la cartella del repository sono collegate e infine sincronizzate dal VCS.

Un altro utente, che non avrà accesso al progetto dalla relativa cartella sorgente (locale sul tuo PC), può utilizzare il processo Clone (Git) oppure Check Out (SVN) per ottenere una propria copia dei file dal repository VCS che ospita il progetto. Tutti gli utenti che desiderano collaborare alla progettazione del progetto dovranno connettersi a quel repository di progettazione comune, che in genere è configurato per essere accessibile tramite la rete locale o da un server.

La cartella del progetto del repository selezionato e i file che la compongono verranno estratti nella cartella locale specificata e aperti in Altium Designer. Si noti che la cartella locale è quella definita come cartella di checkout per il repository selezionato e che il progetto estratto viene successivamente collegato alla sua controparte nel repository VCS. Il collegamento VCS istruisce il sistema di controllo di versione a monitorare e rilevare eventuali differenze tra i file nella cartella di checkout locale e i rispettivi equivalenti nella cartella del repository VCS.

Eseguire il commit delle modifiche quando le modifiche ai file sono complete; in questo modo i file nel repository di progettazione verranno sincronizzati con quelli nella cartella di checkout, creando una nuova revisione VCS.

Checkout vs Open Project

Quando un progetto local è stato aggiunto al controllo di versione, esistono in effetti due modi per modificarlo e aggiornarlo nel VCS:

  • Aprendo il progetto locale (File » Open Project) in Altium Designer e quindi eseguendo il commit delle modifiche salvate nel repository VCS. In questo caso, la cartella del progetto locale e la sua controparte nel repository sono collegate dal VCS.

  • Effettuando il checkout del progetto (File » Check Out) dal repository VCS e quindi eseguendo il commit nel repository delle modifiche salvate effettuate in Altium Designer. In questo caso, il progetto nella cartella di checkout designata e la sua controparte nel repository sono collegati dal VCS.

Il progetto locale è la sorgente, o origine, del progetto VCS condiviso con altri utenti. A seconda di come si desidera lavorare, questa versione sorgente locale potrebbe essere rimossa o bloccata come sorgente di progetto archiviata, e si potrebbe quindi utilizzare l'approccio Check Out per apportare ulteriori modifiche. Oppure si potrebbe continuare ad aprire e utilizzare i file del progetto dalla cartella sorgente locale (Open Project).

L'approccio migliore è attenersi a un solo metodo (si consiglia il check out), poiché le due opzioni gestiscono una cartella di lavoro in posizioni diverse: la cartella del progetto sorgente locale oppure la cartella di checkout VCS designata. Al contrario, se vengono utilizzati entrambi i metodi, sul PC locale saranno presenti più copie attive dello stesso progetto. Se tuttavia queste versioni vengono diligentemente sottoposte a Commit nel repository VCS centralizzato dopo ogni modifica, il repository conterrà sempre la revisione più recente del progetto, come previsto.

Quando il progetto non è disponibile localmente, come nel caso di un altro utente, l'unica scelta è eseguire il Check Out del progetto dal repository VCS.

Si noti inoltre che, una volta che un progetto è stato inizialmente estratto dal repository VCS, esso esiste poi localmente e può essere riaperto direttamente dalla cartella di checkout (File » Open Project). In questo caso, vi è nuovamente la scelta tra eseguire il checkout di un progetto dal VCS oppure aprire la versione locale; tuttavia, esiste sempre e solo una copia locale. In termini pratici di VCS, i due metodi sono molto simili ma si comportano in modo diverso in alcune circostanze, ad esempio quando manca un file locale: in tal caso verrà ripristinato dal processo di check out, mentre verrà rimosso dal progetto da un comando Open Project.

Revisioni del controllo di versione

Nel corso del lavoro con documenti di progettazione in Altium Designer sottoposti a controllo di versione, i file di progettazione a cui si è avuto accesso dal repository VCS centrale (condiviso) rappresenteranno la revisione più recente di tali file. Quando le modifiche locali sono complete e sono state sottoposte a commit (oppure, con Git, inviate con push) al repository VCS condiviso, queste versioni dei file diventano quindi le revisioni più recenti.

Di conseguenza, la normale sequenza di check out, modifica, salvataggio e commit (e Push, con Git) aggiunge progressivamente nuove revisioni dei file al VCS centrale man mano che la progettazione del progetto si sviluppa. Tuttavia, quando un progetto viene sviluppato in collaborazione da più progettisti, nuove revisioni possono essere sottoposte a commit nel repository centrale (condiviso) in qualsiasi momento, da qualsiasi progettista.

Revisione non aggiornata

L'interazione tra più progettisti e il repository centrale può manifestarsi in diversi modi; uno di questi è che un progetto aperto localmente non è più la revisione più recente: un progetto estratto dal repository o aperto dalla cartella di lavoro locale ha uno stato di Out of date () nel pannello Projects.

File etichettato come Out of fateFile etichettato come Out of fate

In questo caso, un altro utente ha modificato ed eseguito il commit dello stesso progetto nel repository da quando è stato modificato l'ultima volta localmente. Ad esempio, un utente locale Barry sta lavorando al progetto e ha eseguito il commit, ad esempio, di Revision 14, ma un altro utente Harold ha eseguito il commit di Revision 15 successivamente, come indicato nel pannello Storage Manager mostrato di seguito. Poiché il VCS rileva la differenza tra un file nella cartella di lavoro locale e la sua controparte nel repository (che in questo caso è più recente), il sistema considera la revisione più recente local (indicata dall'icona ) come non aggiornata.

Diversi stati di revisione nel Storage ManagerDiversi stati di revisione nel Storage Manager

È possibile utilizzare la funzione Compare function di Altium Designer per determinare le differenze tra le revisioni dei file.

Questa situazione viene corretta aggiornando i file locali in modo che corrispondano a quelli nel repository VCS centrale utilizzando il comando Update dal menu contestuale accessibile con il tasto destro del pannello Projects o Storage Manager. Le due versioni del file vengono quindi sincronizzate, con la versione locale (per l'utente Barry) aggiornata alla versione della revisione più recente, in questo esempio Revision 15. Si noti che se si esegue il Save di un file mentre è designato come Out of date, si creerà una situazione VCS di Conflict, in cui il VCS rileva che una revisione precedente di un file è stata aggiornata nella cartella di lavoro.

Il repository centrale e la revisione locale nel Storage ManagerIl repository centrale e la revisione locale nel Storage Manager

È inoltre possibile selezionare il comando Update Whole Project per accedere alla finestra di dialogo Update from Version Control che consente di selezionare i file da estrarre da un repository condiviso. Tutti i documenti del progetto che non sono aggiornati o che contengono conflitti vengono visualizzati nella finestra di dialogo. È possibile selezionare documenti specifici da aggiornare oppure scegliere di aggiornarli tutti in una sola volta. I documenti selezionati vengono aggiornati dal repository e tutti i documenti non aggiornati sono selezionati per impostazione predefinita. Tutti i documenti selezionati verranno aggiornati alla versione più recente nel repository.

La finestra di dialogo Update from Version Control
La finestra di dialogo Update from Version Control

La colonna Path mostra la directory del file. La colonna Status mostra lo stato corrente del file. Se lo stato di un file è visualizzato come Conflict, facendo clic su OK per aggiornare i file verrà richiesto un dialogo di conferma. Fare clic su OK per aggiornare alla versione più recente nel repository oppure su Cancel per uscire e salvare le modifiche alla versione attualmente presente nel repository.

Un file di progettazione non mostrerà uno stato Out of date se il progetto è stato aperto dalla cartella di checkout locale, anziché essere stato estratto dal repository. Il comando Refresh del pannello Storage Manager (o il tasto F5) può correggere questo problema attivando il confronto tra le cartelle collegate da parte del VCS; tuttavia, questa situazione è un'ulteriore indicazione del fatto che i progetti dovrebbero essere estratti dal repository (e non aperti direttamente in locale) quando si lavora in collaborazione con un repository SVN centrale.

Conflitto di revisione

L'interazione tra più progettisti e il repository centrale può anche creare una situazione in cui lo stesso file è stato modificato e salvato localmente da due utenti di Altium Designer, e uno di loro ha eseguito il commit di tali modifiche.

Ciò significa che la sequenza di passaggi di un progettista (check out, modifica, salvataggio, commit) si è intercalata con quella di un altro progettista, quindi un file che un utente ha prelevato dal repository per modificarlo potrebbe non remain risultare come revisione più recente mentre è in lavorazione: nel frattempo un altro utente ha aggiornato la revisione. In questo caso, chi esegue per primo il commit delle modifiche nel repository prevarrà creando una nuova revisione, mentre un altro utente che ha modificato e salvato lo stesso file si troverà in una situazione di Conflict, indicata dall'icona .

Esempio di conflitto di revisioneEsempio di conflitto di revisione

Dal punto di vista di un VCS, che confronta i file della cartella di lavoro con quelli del repository, un Conflict rappresenta la condizione in cui una revisione non aggiornata di un file nella cartella di lavoro è stata modificata e salvata.

Quando si utilizza il controllo di versione Git, viene creato un Conflict quando due progettisti hanno modificato, salvato ed eseguito il commit dello stesso file nella loro cartella del repository Git locale, e uno dei due poi invia tali modifiche al repository Git centrale (il Remote). Si noti che le Git VCS Revisions verranno mostrate nel pannello Storage come stringhe GUID.

Git VCS Revisions nel pannello Storage ManagerGit VCS Revisions nel pannello Storage Manager

Esistono diverse opzioni di comando accessibili dal menu contestuale con clic destro History & Version Control del pannello Projects, dal menu principale Project » History & Version Control e dal pannello Storage Manager, che possono essere utilizzate quando un file ha lo stato Conflict:

  • Commit – questa opzione genererà un errore di Subversion, poiché eseguire il commit della revisione modificata localmente (ad esempio, Revision 15) sovrascriverebbe la revisione più recente (Revision 16) già sottoposta a commit da un altro utente.
  • Update – questa opzione aggiornerà la revisione del file locale alla versione più recente dal repository centrale (Revision 16), perdendo così tutte le modifiche locali apportate a Revision 15.
  • Resolve Conflict – questa opzione scarterà le modifiche sottoposte a commit nel repository dall'ultimo aggiornamento. Dopo aver avviato il comando, verrà visualizzata una finestra di conferma: fare clic su Yes per procedere. Il file di progetto nella cartella di lavoro verrà aggiornato alla revisione più recente registrata nel repository dall'altro utente, ma l'editor manterrà le modifiche apportate alla revisione precedente. Il file locale, pertanto, acquisisce uno stato di Modified, consentendo di eseguire il commit di tali modifiche come nuova revisione nel repository, utilizzando il comando Commit oppure il comando Commit Whole Project. Una volta eseguito il commit del file di progetto, l'altro utente vedrà il/i file come Out of date, poiché è stata creata una revisione più recente nel repository.

    Questa opzione è consigliata solo quando un file text è in conflitto, poiché il sistema Subversion tenterà di eseguire il Merge delle differenze nel file locale. Tale processo potrebbe corrompere altri tipi di file, come i documenti di progetto, quindi è preferibile risolvere un Conflict aggiornando alla revisione sorgente più recente oppure annullando le modifiche locali.

    Quando si utilizza Git, il comando Resolve Conflict aggirerà la condizione di conflitto eseguendo il commit del file nella cartella del repository locale. Quando il file viene poi inviato con Push al repository remoto, il file dell'altro progettista verrà contrassegnato come Out of Date e dovrà essere aggiornato. Come con Subversion, tuttavia, il percorso più sicuro è Update il file in conflitto alla revisione sorgente più recente (una Pull in termini Git) oppure Revert le modifiche locali.
  • Revert – questa opzione comporterà la perdita (annullamento) delle modifiche locali, ripristinando il file locale alla sua revisione di base, qui Revision 15. Il conflitto di revisione viene quindi risolto, ma il file verrà poi contrassegnato come Out of date poiché nel repository esiste una revisione più recente (Revision 16).

Confrontare le revisioni

Un vantaggio importante del lavoro con il controllo di versione è la possibilità di confrontare revisioni storiche dei file di progetto, funzionalità fornita dal Difference Comparator integrato di Altium Designer e accessibile dal pannello Storage Manager. Se utilizzato insieme al pannello Differences, è possibile eseguire un confronto logico o grafico tra revisioni VCS esplorando in modo interattivo gli oggetti interessati. È possibile confrontare sia revisioni Schematic sia PCB.

Per avviare un confronto tra due revisioni, selezionare entrambe le voci (utilizzando il metodo standard Ctrl+click) nell'elenco Storage Manager del pannello VCS Revisions, quindi selezionare il comando Compare dal menu contestuale del pannello accessibile con clic destro.

È inoltre possibile utilizzare il comando History & Version Control » Compare with Head  dal menu con clic destro del documento nel pannello Projects per confrontare il documento attivo con la revisione head di quel documento dal repository VCS.

Il comando Compare  nel pannello Storage ManagerIl comando Compare nel pannello Storage Manager

Entrambe le revisioni del file verranno aperte in modalità schermo diviso, dove potranno essere confrontate visivamente. Le differenze mostrate sono determinate dalle opzioni selezionate per i tipi di confronto fisico nella scheda Comparator tab della finestra di dialogo Options for ProjectProject » Project Options.

La chiave per individuare e visualizzare le differenze del confronto si trova nel pannello Differences, che fornisce un elenco selezionabile delle differenze logiche o grafiche tra i documenti. Le voci elencate nel pannello per ciascuna revisione del documento interagiscono con l'editor, consentendo di evidenziare graficamente una differenza rilevata (come un oggetto spostato) quando viene selezionata.

L'individuazione e la visualizzazione delle differenze del confronto avvengono nel pannello DifferencesL'individuazione e la visualizzazione delle differenze del confronto avvengono nel pannello Differences

La funzionalità Compare si applica anche alle revisioni dei documenti PCB, oltre che alle revisioni dei documenti Schematic e dei documenti basati su testo.

  • Per i documenti schematici o PCB (di progetto o di libreria), viene eseguito un confronto grafico e le differenze rilevate vengono elencate nel pannello Differences. Con le due versioni del documento aperte affiancate nella finestra dell'editor di progettazione, è possibile esaminare graficamente le differenze. Facendo clic su una cartella di livello superiore relativa a una differenza rilevata, tale differenza verrà evidenziata simultaneamente in entrambi i documenti.
  • Per i documenti ASCII basati su testo, verrà visualizzata la finestra di dialogo CompareForm, che mostra un 'diff' grafico delle due versioni del documento. I documenti scelti vengono visualizzati affiancati. La finestra di dialogo è solo per il confronto: non è possibile apportare modifiche a un documento caricato. Tramite codifica a colori, la finestra evidenzia le varie differenze tra le due versioni del documento: righe aggiunte (rosa), righe modificate (verde) e righe eliminate (blu). Un riepilogo delle modifiche e la legenda dei colori sono presentati nella parte inferiore sinistra della finestra di dialogo.

La funzionalità CompareLa funzionalità Compare

Il comando Compare può essere applicato a qualsiasi coppia di revisioni, inclusa quella tra la revisione locale corrente (nella cartella di lavoro) e una revisione più recente nel repository. In questa situazione, la revisione locale più recente è indicata nel pannello Storage Manager come Out of date (), ma può comunque essere confrontata con una revisione più recente aggiunta al repository da un altro utente.

La revisione locale è indicata nel pannello Storage Manager come Out of dateLa revisione locale è indicata nel pannello Storage Manager come Out of date

Questo approccio consente di visualizzare in anteprima, graficamente, le modifiche che verranno applicate aggiornando alla nuova revisione. Nell'immagine di esempio sopra, la revisione locale corrente (indicata dall'icona ) è Revision 19, ma un altro utente ha eseguito il commit di una nuova revisione nel repository (Revision 22). Avviando un confronto visivo tra Revision 19 e Revision 22 è possibile prendere una decisione informata sull'accettazione delle nuove modifiche dal repository e, implicitamente, se applicare il comando Update oppure forzare una condizione di Conflict, gh risalvando il file locale e risolvendo il conflitto a favore della propria versione locale.

Terminologia del controllo di versione

Termine Significato
Base

La revisione nel repository che è stata prelevata per diventare la propria Working Copy locale. Chiamata anche revisione checked out.

Check-in

Salvare la propria copia di lavoro del file nel repository. Indicato come Commit in Altium Designer.

Check-out

Prelevare una copia di un file dal repository VCS in una cartella di lavoro. In genere si tratta della revisione più recente del file, ma è possibile prelevare anche tutte le revisioni precedenti. A seconda del VCS, il file può essere contrassegnato come semplicemente checked-out oppure checked-out in modo esclusivo (bloccato).

Clone

Un comando Git che copia (clona) un repository Git remoto in un repository Git di lavoro in una cartella locale, eseguendo automaticamente il check out della versione HEAD (più recente) nella cartella. Il repository locale include il riferimento di collegamento al repository remoto (origin in questo caso), quindi i file aggiornati nel repository di lavoro locale possono essere caricati nel repository remoto utilizzando il comando Push.

Commit

Salvare nuovamente nel repository la copia di lavoro del file. In alcuni sistemi di controllo di versione è indicato come Check-in. Nel software di progettazione Altium, il normale comando Save salva un file modificato nella cartella di lavoro, mentre Commit salva quel file della cartella nel repository come nuova revisione (versione).

Conflict

La situazione in cui due utenti di Altium Designer tentano di eseguire il commit di modifiche che interessano la stessa area dello stesso file. Queste devono essere risolte, utilizzando uno strumento di Merge, manualmente oppure determinando quale versione prevarrà (diventerà la nuova revisione).

Database

L'archivio principale di tutti i file sotto controllo di versione (o del codice sorgente), noto anche in pratica come Repository .

Git

Git è un sistema di controllo di versione open-source. Altium Designer incorpora funzionalità Git (tramite l'estensione VCS Provider - Git), consentendo di tracciare e accedere direttamente alle revisioni dai pannelli Storage Manager e Projects.

Head

L’ultima revisione registrata nel sistema di controllo versione.

Log message

Un commento relativo alle modifiche apportate a una revisione quando viene reinserita (committed) nel repository. I messaggi di log possono essere usati come riepilogo dell’avanzamento delle modifiche in un file.

Project

Molti sistemi di controllo versione supportano il concetto di progetto. Un progetto VCS è un insieme di file correlati che possono essere sottoposti a check-in/check-out come gruppo. Il VCS può anche supportare altre funzionalità di tipo progetto, come l’impostazione di un numero di versione su tutti i file di un progetto. Questo è distinto dal concetto di progetto di Altium Designer, che può essere aggiunto al controllo versione usando il comando Add Project Folder to Version Control command.

Push

Aggiornare un repository Git remoto con i file presenti nel proprio repository di lavoro locale, ovvero sincronizzare i repository locale e remoto. Questo comando è disponibile quando un file nel repository Git locale è più recente della sua controparte nel repository Git remoto. Concettualmente è il complemento di un comando Git Pull.

Repository

L’archivio principale di tutti i file sotto controllo versione (o controllo del codice sorgente) - può anche essere noto come Database.

Revision

Una modifica registrata nella cronologia di un file o di un insieme di file. Questo è il riferimento alfanumerico fornito dal VCS per tenere traccia delle diverse edizioni (versioni) del file che conserva.

Sandbox

La cartella in cui i file vengono estratti dal repository, in modo da poterci lavorare - indicata anche come Working Folder. I file estratti dal software di progettazione Altium vengono caricati automaticamente.

SVN

Subversion è un sistema di controllo versione open source. Altium Designer incorpora funzionalità SVN (tramite l’estensione VCS Provider - SVN), consentendo di tracciare e accedere direttamente alle revisioni dai pannelli Storage Manager e Projects.

Update

L’atto di verificare e “prelevare” le modifiche dalla versione del repository di un file in una copia di lavoro (il complemento di Commit, o Check-in). Il processo di unione delle eventuali differenze richiede uno strumento di Merge oppure un aggiornamento manuale.

VCS

Version Control System: termine generico applicato a qualsiasi strumento in grado di gestire la cronologia delle versioni dei file e il recupero dei file.

Version

Il termine versione è normalmente usato per riferirsi al numero di riferimento esterno assegnato da una persona ai file sotto controllo, o al loro output (come nel caso del codice sorgente). Nella maggior parte dei casi questo è considerato una revisione.

Working Copy

La copia “locale” di un file su cui vengono apportate modifiche - normalmente risiede nella Working Folder.

Working Folder

La cartella in cui i file vengono estratti dal repository per poterci lavorare – con Git, questo è un repository di lavoro locale. I file estratti da Altium Designer vengono caricati automaticamente.

Riferimenti

AI-LocalizedLocalizzato tramite A
Se trovi un problema, seleziona il testo/l’immagine e premi Ctrl + Invio per inviarci il tuo feedback.
Disponibilità delle funzionalità

Le funzionalità disponibili dipendono dalla soluzione Altium in uso – Altium Develop, un’edizione di Altium Agile (Agile Teams o Agile Enterprise), oppure Altium Designer (con licenza attiva).

Se non vedi nel tuo software una funzionalità descritta,  contatta il team vendite di Altium per saperne di più.

Documentazione legacy

La documentazione di Altium Designer non è più suddivisa per versione. Se è necessario accedere alla documentazione delle versioni precedenti di Altium Designer, visitare la sezione Documentazione legacy della pagina Altri programmi di installazione.

Contenuto