Repository: tutto quello che c’è da sapere sulla directory per gli archivi digitali
Un repository memorizza i dati permettendo di recuperarli e modificarli in seguito. Esistono diversi tipi di repository che possono essere utilizzati per il controllo delle versioni, per i metadati e per innumerevoli altri scopi.
Che cos’è un repository?
“Repository” significa “deposito” e deriva dal termine latino repositorium. Nella tecnologia del software, un repository è un archivio digitale in cui è possibile memorizzare e condividere dati, documenti, progressi di sviluppo, metadati e programmi. Un’altra sua caratteristica è il controllo delle versioni. A seconda dell’uso che se ne intende fare, questa tecnologia consente a grandi team o community che lavorano in tutto il mondo di collaborare a un progetto condiviso. I tipi di repository disponibili differiscono in termini di approccio e struttura e tra i più noti vi sono GitHub e Google Repository.
La base di un repository è solitamente un database che, a seconda dei requisiti, può essere installato su un disco rigido locale o su un server, oppure può essere distribuito su numerosi server in una Content Delivery Network (CDN). A partire da questo punto vengono creati dei cataloghi di dati che contengono le forme e le rappresentazioni dei vari oggetti memorizzati e forniscono informazioni sulle loro relazioni reciproche. Tutte queste informazioni sono memorizzate sotto forma di metadati e possono essere cercate, recuperate, modificate e adattate in qualsiasi momento con l’autorizzazione appropriata.
Com’è strutturato un repository?
Per illustrare la struttura di un repository visualizziamo un albero. Nello sviluppo software, questa immagine si riflette anche nella terminologia in cui si fa una distinzione tra il tronco (in inglese: “trunk”), che contiene la versione corrente di un progetto e il codice sorgente, e i rami (in inglese: “branches”), dove vengono memorizzate le modifiche. Queste vengono successivamente aggiunte al tronco in modo che tutti i partecipanti possano accedervi. L’archiviazione dei dati funziona tramite tag.
Quali tipi di repository esistono?
Non tutti i repository sono uguali, ma si differenziano per il tipo di archivio. Esistono diversi approcci, tra cui i seguenti sono i più noti.
Repository per la gestione delle versioni
Nella gestione delle versioni, l’obiettivo è quello di memorizzare i dati in modo chiaro, elaborando logicamente i passaggi e le connessioni in un archivio comune. I file del codice sorgente e altri dati vengono memorizzati e archiviati. I dati possono essere copiati dal repository a un disco rigido locale per consentire agli sviluppatori di continuare a lavorarvi. Questo processo viene definito “check-out”. Lo sviluppatore lavora quindi con i dati locali apportando modifiche o scartando quelle precedenti. Una volta terminato il lavoro, l’ultimo stato del progetto viene caricato nuovamente sul repository. In questo caso si parla di “check-in”. Durante questo processo tutte le modifiche e i commenti vengono registrati.
Questo approccio presenta diversi vantaggi. Ad esempio, più utenti possono collaborare a un progetto senza sovrascriverne le versioni precedenti. Infatti, tutti gli aggiornamenti di stato vengono registrati, rendendo possibile il ritorno a una versione precedente. Un repository consente a team piccoli e grandi di collaborare allo stesso progetto. Gli aggiornamenti possono essere effettuati simultaneamente senza sovrascrivere gli stati precedenti o perdere le modifiche apportate. In teoria, tutti gli utenti possono continuare un progetto a partire da un qualsiasi stato senza alcun rischio.
I sistemi di controllo delle versioni più diffusi sono CVS, GitHub e SVN.
Repository per metadati
Un repository per metadati tende a essere utilizzato su infrastrutture IT molto complesse. Questo tipo di repository contiene i dati dell’intero sistema e le informazioni sul contesto e sull’ambiente dell’infrastruttura. Il vantaggio di questo tipo di archivio è che consente di apportare modifiche senza alterare il codice sorgente o senza dover implementare programmi aggiuntivi poiché la tabella del database, che è la base del rispettivo sistema, viene adattata in modo semplice. Questo repository è tendenzialmente utilizzato nell’integrazione delle applicazioni aziendali (EAI, dall’inglese “Enterprise Application Integration”) e nei data warehouse.
Repository per software
Un repository per software è particolarmente importante per gli utenti Linux e contiene sia pacchetti di applicazioni che i metadati corrispondenti, come spiegazioni, annotazioni, dipendenze e modifiche. L’installazione e gli aggiornamenti vengono eseguiti utilizzando un gestore di pacchetti. In questo modo, gli utenti non devono preoccuparsi di aggiornare le loro applicazioni poiché il sistema viene aggiornato automaticamente. Gli stessi aggiornamenti sono spesso forniti dalla community. Gli utenti che mantengono i pacchetti, noti come manutentori dei pacchetti, in genere forniscono i dati aggiornati e si occupano della manutenzione del rispettivo repository di software.
Repository per server di documenti
Il termine repository si applica anche alle pubblicazioni in rete e ai server di documenti, almeno in senso figurato. Sebbene alcune caratteristiche speciali del principio alla base del repository non vengano adottate una per una, la procedura viene adattata all’uso. I server di documenti ben noti, come arXiv, divulgano pubblicazioni nel campo della biologia, dell’informatica, della matematica, della fisica e della statistica. A questo punto un esperto esamina i nuovi articoli e li approva o li rifiuta rendendo nel primo caso i saggi scientifici disponibili per il download. Tuttavia, a differenza di un repository di controllo di versione, nel caso del repository per server di documenti non è possibile modificare i file.
Repository per CASE
Un repository è usato frequentemente anche nello sviluppo del software assistito dal computer, ma in questa istanza viene utilizzato principalmente per memorizzare i dati del progetto, la documentazione e il codice sorgente.
Quali sono i repository più utili?
Sono disponibili numerosi tipi di repository per scopi diversi e vi sono sia soluzioni open source che altre offerte a livello commerciale. Il repository open source più conosciuto è GitHub. Tuttavia, esistono varie alternative a GitHub, come Apache Allura, Bazaar, Gitolite, Mercurial o SourceForge. Trovate un dettagliato confronto tra GitHub e GitLab nella Digital Guide. Tra i repository proprietari più noti vi sono Alienbrain, Bitkeeper, IBM Rational Synergy e MySQL Yum.
Per capire se un repository è adatto al vostro progetto dovrete considerare le vostre esigenze e il vostro modo di lavorare. Per il lavoro di gruppo, un repository può migliorare i processi di lavoro e ottimizzarne il flusso. Anche se i dipendenti accedono a un progetto e apportano modifiche in momenti diversi e da luoghi diversi, il tronco è sempre sicuro e le soluzioni possono essere testate senza compromettere i progressi precedenti. È tuttavia consigliato testare una soluzione open source prima di acquistare un’opzione commerciale.
Come funziona un repository?
Se usato correttamente, un repository offre diversi vantaggi. GitHub ne è un ottimo esempio. Dopo l’installazione e la configurazione di GitHub, avete a disposizione l’intuitiva interfaccia utente per assegnare ed elaborare i compiti. A questo punto per le modifiche elencate vengono utilizzati commit e pull. In questo modo, il responsabile del team può seguire tutte le fasi di lavoro e i membri possono seguire il progetto fin nei minimi dettagli. Per saperne di più su questa piattaforma, date un’occhiata al nostro tutorial su Git.