La stesura di software, firmware e codice in generale, non coinvolge solo la conoscenza dei linguaggi di programmazione, le capacità di debug e di ottimizzazione del codice, ma anche anche la corretta e coerente gestione delle versioni del codice stesso (versioning).

Che si tratti del lavoro di un singolo sviluppatore, o di un team magari anche distribuito dal punto di vista geografico, il versioning è diventato un aspetto fondamentale per lo sviluppo, anche in virtù di software sempre più vasti e con decine di migliaia di righe di codice da gestire. In questo contesto sono nate alcune piattaforme specializzate, tra cui spitta Git: un motore di versioning gestibile da interfaccia grafica, sia localmente sia via Web. Sulla base di Git si sono poi sviluppati diversi prodotti, come Gitlab e Bitbuket per citare le due più famose.

git logo

In questo articolo andremo a conoscere gradualmente Git – sfruttando Gitlab come ambiente di test - in tutti i suoi aspetti fondamentali e operativi: che cos’è GIT e come funziona, cosa sono i commit, i repository e i branch e le differenze tra la versione Cloud e on-premises.

Cosa si intende per sistema di controllo di versione

In linea generale si può definire sistema di controllo di versione (o versioning oppure VCS, acronimo di Version Control Systems) tutto ciò che permette di gestire le versioni, modifiche, release di software e codice in generale. Lo scopo principale è quello di tracciare in modo completo e in ordine cronologico le modifiche effettuate nel tempo, per poter agire in modo coerente in caso di rollback, integrazioni, rilevazioni di errori etc. La possibilità di aggiungere commenti e aprire sotto-rami di sviluppo sono altre funzioni disponibili e fondamentali per accompagnare ogni modifica con una documentazione adeguata.

Riassumendo in modo sintetico, possiamo dire che un sistema di controllo versioni si occupa di tenere traccia delle modifiche apportate nel tempo e dei relativi autori, di effettuare il rollback in qualsiasi punto e di consentire lo sviluppo collaborativo in modo coerente.Git si distingue da altri software in commercio, in quanto considera i propri dati come una serie di instantanee di un mini file-system. Quindi non lavora basandosi sulla clonazione e successiva integrazione del file di origine, ma traccia in modo incrementale tutti i file del repository.

Cos'è e come funziona Git

Nato dalla mente di Linus Torvalds durante lo sviluppo del kernel Linux, Git è un software di controllo di versione che permette ad ogni utente (client) di fare anche da server per sé stesso. Inoltre possiede una copia locale del repository ed è il motore della piattaforma GitLab.

Git è un sistema di controllo delle versioni distribuito ed utilizzabile gratuitamente (open source), veloce, sicuro e costituisce un ottimo supporto allo sviluppo non-lineare ed è inoltre disponibile per Windows, MacOs e, naturalmente, Linux. Di base Git funziona tramite linea di comando, perciò per renderne l’utilizzo più agevole è conveniente ricorrere a un’interfaccia grafica che semplifichi l’utilizzo: l'interfaccia può anche essere implementata in un servizio web accessibile via Internet, che ne espande ulteriormente le potenzialità. I tre concetti base di Git sono: snapshot, commit, repository e branch

Snapshot

Gli snapshot (istantanee) sono il modo in cui Git mantiene traccia della cronologia del codice. Uno snapshot essenzialmente registra lo stato attuale di tutti i file in un dato momento. Con Git l’utente può decidere quando e su quali file creare uno snapshot, in modo da poter effettuare il rollback o identificare modifiche e bug.

Commit

Il commit è l’azione con la quale si genera uno snapshot: i commit rappresentano il modo in cui si “salvano” le modifiche fatte al codice. Nello specifico il commit corrisponde al salvataggio di uno o più file aggiornati, sul repository.

Repository

Letteralmente tradotto in deposito o magazzino (ma anche contenitore, se vogliamo) il repository è una collezione di tutti i file, compresi di cronologia e storico dei commit. La parola repository indica un archivio ordinato dove sono raccolti i file del progetto. Il repository può risiedere su un computer locale o su un server remoto come, è nel caso di GitLab o di tutte quelle piattaforme Web che si basano su Git per offrire servizi di versioning: esistono quattro azioni chiave che l’utente può applicare al repository:

  • Init: inizializza un nuovo repository all’interno della cartella corrente
  • Clone: clona un repository Git esistente dal server remoto
  • Pull: scarica dati da un repository remoto
  • Push: invia branch e dati a un repository remoto

git branc graph

Branch

Letteralmente tradotto in “ramo”, il branch è una branca o diramazione nella struttura ad albero del repository, come mostrato nella figura sottostante. Git archivia i file e li tiene ordinati ad albero, evidenziando come sia facile ed intuitivo poter vedere le differenze di un file (o progetto) dopo che è stato modificato dal primo salvataggio “commit”. È bene ricordare che tutti i commit devono risiedere su qualche branch, possono esserci branch multipli in un singolo repository e per impostazione predefinita il branch primario si chiama master.

GitLab: dalla teoria alla pratica

Si tratta di una piattaforma on-line basata su Git, che facilita lo sviluppo collaborativo di firmware e Per evitare confusione tra GitLab e GitHub, è bene specificare come il secondo sia nato per ospitare progetti – naturalmente sviluppati con Git – a pagamento nel caso siano privati e gratuitamente se open source. GitLab è invece un prodotto completamente free e disponibile in due modalità: self-hosted e SaaS.

La prima modalità consente di installare GitLab su un proprio server locale o su un servizio di cloud privato con pieno controllo della piattaforma e dei propri dati: è l’ideale per le aziende che necessitano di accedere esclusivamente e in ogni momento ai propri progetti, in quanto offre più sicurezza dagli attacchi esterni e maggiore velocità di accesso, data l’esclusività dell’utilizzo del server. Tale versione è totalmente gratuita.

La versione SaaS (Software as a Service, appoggiato a gitlab.com) risiede completamente in ambiente cloud, seppur con significative differenze rispetto agli altri servizi citati in precedenza (GitHub e BitBucket). Ad esempio troviamo un numero illimitato di repository privati senza limiti per numero di collaboratori su singolo progetto, oltre ad offrire continuous integration e continuous delivery (per contesti DevOps) e Container Registry (per gestire immagini Docker). A questo si aggiunge la presenza di Mastermost, una soluzione open source per la comunicazione in team, alternativa a prodotti come Slack.

In informatica DevOps (dalla contrazione dei termini Development e operations, inteso come deployment o rilascio) è una metodologia di sviluppo del software che punta alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle operations dell'information technology. DevOps vuole rispondere all'interdipendenza tra sviluppo software e IT operations, puntando ad aiutare a sviluppare in modo più rapido ed efficiente prodotti e servizi software.

Nel prossimo numero andremo ad approcciare in pratica Git e GitLab, con un articolo-tutorial dedicato.

banner5

fb icon evo twitter icon evo

Parola del giorno

L'acronimo SoC  (System on a Chip) nasce per descrivere quei circuiti integrati che, all'interno di un singolo chip fisico, contengono un...

>

YAML è un formato utilizzato per serializzare (ovvero salvare oggetti su supporti di memoria ad accesso seriale) dati, in modo...

>

Il termine Edge Computing descrive, all'interno di infrastrutture cloud-based, l'insieme di dispositivi e di tecnologie che permettono l'elaborazione dei dati ai...

>

L'acronimo FPGA  (Field Programmable Gate Array), descrive quei dispositivi hardware formati da un circuito integrato e con funzionalità programmabili tramite...

>

Il termine Agentless (computing) descrive operazioni dove non è necessaria la presenza e l'esecuzione di un servizio software (demone o...

>
Leggi anche le altre...

Download del giorno

Fiddler

Fiddler è un server proxy che può girare in locale per consentire il debug delle applicazioni e il...

>

Adapter Watch

Adapter Watch è uno strumento che permette di visualizzare un riepilogo completo e dettagliato delle informazioni riguardanti una determinata...

>

DNS DataView

DNS Lookup  è un tool a interfaccia grafica per effettuare il lookup DNS dal proprio PC, sfruttando i...

>

SolarWinds Traceroute NG

SolarWinds Traceroute NG è un tool a linea di comando per effettuare traceroute avanzati in ambiente Windows...

>

Network Inventory Advisor

Network Inventory Advisor  è uno strumento che permette di scansionare la rete e acquisire informazioni riguardanti tutti i...

>
Tutti i Download del giorno...

Archivio numeri

  • GURU advisor: numero 21 - maggio 2019

    GURU advisor: numero 21 - maggio 2019

  • GURU advisor: numero 20 - dicembre 2018

    GURU advisor: numero 20 - dicembre 2018

  • GURU advisor: numero 19 - luglio 2018

    GURU advisor: numero 19 - luglio 2018

  • GURU advisor: numero 18 - aprile 2018

    GURU advisor: numero 18 - aprile 2018

  • GURU advisor: numero 17 - gennaio 2018

    GURU advisor: numero 17 - gennaio 2018

  • GURU advisor: numero 16 - ottobre 2017

    GURU advisor: numero 16 - ottobre 2017

  • GURU advisor: numero 15 - luglio 2017

    GURU advisor: numero 15 - luglio 2017

  • GURU advisor: numero 14 - maggio 2017

    GURU advisor: numero 14 - maggio 2017

  • 1
  • 2
  • 3
  • Teslacrypt: rilasciata la chiave

    Gli sviluppatori del temuto ransomware TeslaCrypt hanno deciso di terminare il progetto di diffusione e sviluppo e consegnare al pubblico la chiave universale per decifrare i file. Read More
  • Proxmox 4.1 sfida vSphere

    Proxmox VE (da qui in avanti semplicemente Proxmox) è basato sul sistema operativo Debian e porta con sé vantaggi e svantaggi di questa nota distribuzione Linux: un sistema operativo stabile, sicuro, diffuso e ben collaudato. Read More
  • Malware: risvolti legali

    tutti i virus e in particolare i più recenti Ransomware, che rubano i vostri dati e vi chiedono un riscatto, violano la legge. Vediamo insieme come comportarsi, per capire anche se e quando bisogna sporgere denuncia. Read More
  • 1