Un re­po­si­to­ry memorizza i dati per­met­ten­do di re­cu­pe­rar­li e mo­di­fi­car­li in seguito. Esistono diversi tipi di re­po­si­to­ry che possono essere uti­liz­za­ti per il controllo delle versioni, per i metadati e per in­nu­me­re­vo­li altri scopi.

Che cos’è un re­po­si­to­ry?

“Re­po­si­to­ry” significa “deposito” e deriva dal termine latino re­po­si­to­rium. Nella tec­no­lo­gia del software, un re­po­si­to­ry è un archivio digitale in cui è possibile me­mo­riz­za­re e con­di­vi­de­re dati, documenti, progressi di sviluppo, metadati e programmi. Un’altra sua ca­rat­te­ri­sti­ca è il controllo delle versioni. A seconda dell’uso che se ne intende fare, questa tec­no­lo­gia consente a grandi team o community che lavorano in tutto il mondo di col­la­bo­ra­re a un progetto condiviso. I tipi di re­po­si­to­ry di­spo­ni­bi­li dif­fe­ri­sco­no in termini di approccio e struttura e tra i più noti vi sono GitHub e Google Re­po­si­to­ry.

La base di un re­po­si­to­ry è so­li­ta­men­te un database che, a seconda dei requisiti, può essere in­stal­la­to su un disco rigido locale o su un server, oppure può essere di­stri­bui­to su numerosi server in una Content Delivery Network (CDN). A partire da questo punto vengono creati dei cataloghi di dati che con­ten­go­no le forme e le rap­pre­sen­ta­zio­ni dei vari oggetti me­mo­riz­za­ti e for­ni­sco­no in­for­ma­zio­ni sulle loro relazioni re­ci­pro­che. Tutte queste in­for­ma­zio­ni sono me­mo­riz­za­te sotto forma di metadati e possono essere cercate, re­cu­pe­ra­te, mo­di­fi­ca­te e adattate in qualsiasi momento con l’au­to­riz­za­zio­ne ap­pro­pria­ta.

Com’è strut­tu­ra­to un re­po­si­to­ry?

Per il­lu­stra­re la struttura di un re­po­si­to­ry vi­sua­liz­zia­mo un albero. Nello sviluppo software, questa immagine si riflette anche nella ter­mi­no­lo­gia in cui si fa una di­stin­zio­ne 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 me­mo­riz­za­te le modifiche. Queste vengono suc­ces­si­va­men­te aggiunte al tronco in modo che tutti i par­te­ci­pan­ti possano accedervi. L’ar­chi­via­zio­ne dei dati funziona tramite tag.

Quali tipi di re­po­si­to­ry esistono?

Non tutti i re­po­si­to­ry sono uguali, ma si dif­fe­ren­zia­no per il tipo di archivio. Esistono diversi approcci, tra cui i seguenti sono i più noti.

Re­po­si­to­ry per la gestione delle versioni

Nella gestione delle versioni, l’obiettivo è quello di me­mo­riz­za­re i dati in modo chiaro, ela­bo­ran­do lo­gi­ca­men­te i passaggi e le con­nes­sio­ni in un archivio comune. I file del codice sorgente e altri dati vengono me­mo­riz­za­ti e ar­chi­via­ti. I dati possono essere copiati dal re­po­si­to­ry a un disco rigido locale per con­sen­ti­re agli svi­lup­pa­to­ri di con­ti­nua­re a lavorarvi. Questo processo viene definito “check-out”. Lo svi­lup­pa­to­re lavora quindi con i dati locali ap­por­tan­do modifiche o scartando quelle pre­ce­den­ti. Una volta terminato il lavoro, l’ultimo stato del progetto viene caricato nuo­va­men­te sul re­po­si­to­ry. In questo caso si parla di “check-in”. Durante questo processo tutte le modifiche e i commenti vengono re­gi­stra­ti.

Questo approccio presenta diversi vantaggi. Ad esempio, più utenti possono col­la­bo­ra­re a un progetto senza so­vra­scri­ver­ne le versioni pre­ce­den­ti. Infatti, tutti gli ag­gior­na­men­ti di stato vengono re­gi­stra­ti, rendendo possibile il ritorno a una versione pre­ce­den­te. Un re­po­si­to­ry consente a team piccoli e grandi di col­la­bo­ra­re allo stesso progetto. Gli ag­gior­na­men­ti possono essere ef­fet­tua­ti si­mul­ta­nea­men­te senza so­vra­scri­ve­re gli stati pre­ce­den­ti o perdere le modifiche apportate. In teoria, tutti gli utenti possono con­ti­nua­re un progetto a partire da un qualsiasi stato senza alcun rischio.

I sistemi di controllo delle versioni più diffusi sono CVS, GitHub e SVN.

Re­po­si­to­ry per metadati

Un re­po­si­to­ry per metadati tende a essere uti­liz­za­to su in­fra­strut­tu­re IT molto complesse. Questo tipo di re­po­si­to­ry contiene i dati dell’intero sistema e le in­for­ma­zio­ni sul contesto e sull’ambiente dell’in­fra­strut­tu­ra. Il vantaggio di questo tipo di archivio è che consente di apportare modifiche senza alterare il codice sorgente o senza dover im­ple­men­ta­re programmi ag­giun­ti­vi poiché la tabella del database, che è la base del ri­spet­ti­vo sistema, viene adattata in modo semplice. Questo re­po­si­to­ry è ten­den­zial­men­te uti­liz­za­to nell’in­te­gra­zio­ne delle ap­pli­ca­zio­ni aziendali (EAI, dall’inglese “En­ter­pri­se Ap­pli­ca­tion In­te­gra­tion”) e nei data warehouse.

Re­po­si­to­ry per software

Un re­po­si­to­ry per software è par­ti­co­lar­men­te im­por­tan­te per gli utenti Linux e contiene sia pacchetti di ap­pli­ca­zio­ni che i metadati cor­ri­spon­den­ti, come spie­ga­zio­ni, an­no­ta­zio­ni, di­pen­den­ze e modifiche. L’in­stal­la­zio­ne e gli ag­gior­na­men­ti vengono eseguiti uti­liz­zan­do un gestore di pacchetti. In questo modo, gli utenti non devono pre­oc­cu­par­si di ag­gior­na­re le loro ap­pli­ca­zio­ni poiché il sistema viene ag­gior­na­to au­to­ma­ti­ca­men­te. Gli stessi ag­gior­na­men­ti sono spesso forniti dalla community. Gli utenti che man­ten­go­no i pacchetti, noti come ma­nu­ten­to­ri dei pacchetti, in genere for­ni­sco­no i dati ag­gior­na­ti e si occupano della ma­nu­ten­zio­ne del ri­spet­ti­vo re­po­si­to­ry di software.

Re­po­si­to­ry per server di documenti

Il termine re­po­si­to­ry si applica anche alle pub­bli­ca­zio­ni in rete e ai server di documenti, almeno in senso figurato. Sebbene alcune ca­rat­te­ri­sti­che speciali del principio alla base del re­po­si­to­ry non vengano adottate una per una, la procedura viene adattata all’uso. I server di documenti ben noti, come arXiv, divulgano pub­bli­ca­zio­ni nel campo della biologia, dell’in­for­ma­ti­ca, della ma­te­ma­ti­ca, della fisica e della sta­ti­sti­ca. A questo punto un esperto esamina i nuovi articoli e li approva o li rifiuta rendendo nel primo caso i saggi scien­ti­fi­ci di­spo­ni­bi­li per il download. Tuttavia, a dif­fe­ren­za di un re­po­si­to­ry di controllo di versione, nel caso del re­po­si­to­ry per server di documenti non è possibile mo­di­fi­ca­re i file.

Re­po­si­to­ry per CASE

Un re­po­si­to­ry è usato fre­quen­te­men­te anche nello sviluppo del software assistito dal computer, ma in questa istanza viene uti­liz­za­to prin­ci­pal­men­te per me­mo­riz­za­re i dati del progetto, la do­cu­men­ta­zio­ne e il codice sorgente.

Quali sono i re­po­si­to­ry più utili?

Sono di­spo­ni­bi­li numerosi tipi di re­po­si­to­ry per scopi diversi e vi sono sia soluzioni open source che altre offerte a livello com­mer­cia­le. Il re­po­si­to­ry open source più co­no­sciu­to è GitHub. Tuttavia, esistono varie al­ter­na­ti­ve a GitHub, come Apache Allura, Bazaar, Gitolite, Mercurial o Sour­ce­For­ge. Trovate un det­ta­glia­to confronto tra GitHub e GitLab nella Digital Guide. Tra i re­po­si­to­ry pro­prie­ta­ri più noti vi sono Alien­brain, Bitkeeper, IBM Rational Synergy e MySQL Yum.

Per capire se un re­po­si­to­ry è adatto al vostro progetto dovrete con­si­de­ra­re le vostre esigenze e il vostro modo di lavorare. Per il lavoro di gruppo, un re­po­si­to­ry può mi­glio­ra­re i processi di lavoro e ot­ti­miz­zar­ne il flusso. Anche se i di­pen­den­ti 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 com­pro­met­te­re i progressi pre­ce­den­ti. È tuttavia con­si­glia­to testare una soluzione open source prima di ac­qui­sta­re un’opzione com­mer­cia­le.

Come funziona un re­po­si­to­ry?

Se usato cor­ret­ta­men­te, un re­po­si­to­ry offre diversi vantaggi. GitHub ne è un ottimo esempio. Dopo l’in­stal­la­zio­ne e la con­fi­gu­ra­zio­ne di GitHub, avete a di­spo­si­zio­ne l’intuitiva in­ter­fac­cia utente per assegnare ed elaborare i compiti. A questo punto per le modifiche elencate vengono uti­liz­za­ti commit e pull. In questo modo, il re­spon­sa­bi­le 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 piat­ta­for­ma, date un’occhiata al nostro tutorial su Git.

Vai al menu prin­ci­pa­le