Introduzione a GIT, il Version Control System by Linus Torvalds

Posted by Dibi Store Sat, 22 Dec 2007 10:27:00 GMT

Git è uno strumento che permette di tenere traccia delle versioni di sviluppo (e non solo) dei nostri files, in parole povere è un ottimo sostituto di svn.

Git è molto utile in quanto permette di tenere traccia dei nostri lavori in locale, senza quindi la necessità di un repository online, e sta avendo molti consensi da parte della community, in particolare, potete trovare un ottimo screencast nel sito peepcode.

In questo tutorial partirò dall' installazione di git, alla configurazione ed infine ad un esempio d'uso, che comunque vi consiglio di prendere in seria considerazione, ossia di tenere sempre una versione di rails a disposizione, completa di tutti i plugin che usiamo sempre, e ovviamente i nostri files di configurazione, come tra l'altro suggerito nel nuovo libro advanced rails recipes.

Installazione di GIT

Potete installare git direttamente da sorgente, scaricandolo direttamente dal sito ufficiale, oppure con il vostro packet manager preferito (in base alla vostra distribuzione).
In questo esempio mostrerò il semplice comando da eseguire nel caso abbiate a disposizione mac ports:

sudo port install git-core

Configurazione

La configurazione base di Git è semplice, di default vi basterà indicare il vostro nome e il vostro indirizzo email, in modo che possa essere visualizzato nel repository, comunque le configurazione potrete poi vederle nel file ~/.gitconfig

git config --global user.name "Del Ben Oscar"
git config --global user.email 'my@email.com'

Creiamo il progetto rails

Questo è semplice e dovreste già saperlo fare, comunque ora creerò un progetto rails, rinominerò il file config/database.yml in config/database.example.yml, rimuoverò i logs, i files temp e public/index.html:

rails rails
cd rails
mv config/database{,.example}.yml
rm log/*
rake tmp:clear
rm public/index.html

Pronti con Git!

Ora viene il bello, con il semplice comando git init, creeremo i files necessari per git, in pratica una directory .git contenente alcuni files interessanti, che siete liberi (anzi consiglio) di guardare, invece cosa molto utile è creare nella root del progetto il file .gitignore, in qui potremmo scrivere tutti i files che git dovrà ignorare:

touch .gitignore

Io ho aggiunto *.log ad esempio, ma nei vostri progetti aggiungete pure se necessario i files di database e informazioni che non devono essere contenuti nella versione salvata nel repository. Ora siamo pronti al primo commit (nel nostro repository locale), quindi con il prossimo comando, prima aggiungerò tutti i files (dobbiamo dire a git cosa includere) e poi eseguirò il commit:

git add .
git commit -m "Primo commit rails"

Ora è vostro compito aggiungere tutti quei plugin e files (anche javascript, css, ecc) che usate comunemente in tutte le vostre applicazioni, come titolo di esempio mostro come aggiungere il plugin will paginate:

./script/plugin install svn://errtheblog.com/svn/plugins/will_paginate
git status
git add vendor/
git commit -m "Aggiunto plugin will paginate"

Il comando git status vi dice che i files dovete aggiungerli a git, se volete salvarli nel repository ovviamente. Molto simile il comando git rm vi permette di rimuovere files se necessario ovviamente. Ripete l'operazione per tutti i plugins, files ecc che vi servono

La potenza dei branch

Qualunque persona che segua un progetto di qualsiasi dimensione, è abituato ad utilizzare almeno 2 versioni, una di sviluppo, e una di produzione. Ovviamente per fare cio, vengono solitamente tenute due directory separate, con git invece, abbiamo a disposizione una nuova feauture chiamata brench. In questo modo potremo usare piu versioni contemporaneamente, per vedere la versione che state usando, digitate semplicemente git brench. Per darvi un idea di cosa potete fare, create un nuovo branch con il comando:

git checkout test

Ora create un file qualsiasi dentro l'applicazione, salvatelo e aggiungetelo con il comando git add /path/to/file. Ovviamente committate, e poi tornate al branch master (quello creato di default), con il comando:

  git checkout master

Magnifico! Il file non c'è più! Questo significa che avete a disposizione 2 ambienti completamente separati, e potete spostarvi da un all'altro quando volete. Vi starete domandando cosa accade se aggiungete un pezzo di codice in un file esistente nell'altro branch, provate pure! Inutile dire che potete poi aggiornare l'altro branch con le modifiche che nel frattempo avete fatto, in questo caso il comando è git rebase nome_branch, ma questo è già un concetto più avanzato (seppur semplice).

Conclusione

Ora sarete in grado di creare una copia della vostra applicazione in qualsiasi momento semplicemente con il comando git clone rails path/to/new/app. Ovviamente potrete nel corso del tempo modificare la vostra versione di rails in base alle vostre esigenze.

Posted in  | Tags  | 2 comments | no trackbacks

Comments

  1. Avatar Reggie said 12 days later:
    Ottimo articolo, anche se sarei non poco curioso di vedere utilizzi pratici. Io del tema non ne so molto anzi, ma vorrei capire come git gestisca la pox di avere diversi progetti, di mixarli per creare l'applicazione completa, o altre situazioni un pizzico più complesse. Se mi mandi a leggere la doc, mi sa che non ci vado :D. Bell'articolo!
  2. Avatar Del Ben Oscar said 13 days later:
    Diciamo che in effetti la doc non può farti capire il vantaggio di uno strumento il più delle volte. Ti faccio un esempio pratico: immagina di avere 2 versioni dello stesso software, una stabile e una trunk che contiene una versione futura. Ora immagina che per qualche motivo (che alla fine rispecchia il più delle volte) esegui dei bug fixing o delle aggiunte alla versione stabile. Come fai ad allineare le versioni? Svn non è lo strumento adatto perchè non è stato pensato per quello, in quel caso ti serve un sistema distribuito, come ad esempio git o mercurial.

Trackbacks

Use the following link to trackback from your own site:
http://www.dibistore.com/trackbacks?month=12&year=2007&article_id=introduzione-a-git-il-version-control-system-by-linus-torvalds&day=22

(leave url/email »)

   Preview comment