aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--introduzione_a_git.rest123
1 files changed, 123 insertions, 0 deletions
diff --git a/introduzione_a_git.rest b/introduzione_a_git.rest
index 000fa44..533b0b5 100644
--- a/introduzione_a_git.rest
+++ b/introduzione_a_git.rest
@@ -379,19 +379,142 @@ gitignore
Aggiungere funzionalità
-----------------------
+.. class:: handout
+
+ Vogliamo aggiungere al nostro progetto la capacità di salutare
+ persone diverse; dato che dobbiamo fare un po' di modifiche,
+ perché non creare un nuovo *feature branch*?
+
+ Questo è il workflow naturale per git: ogni nuova funzionalità
+ viene sviluppata a parte in un branch apposito, e poi
+ integrata nel branch principale, che in questo modo rimane
+ sempre funzionante.
+
+::
+
+ $ git checkout -b people
+
+``greeter/greeter.py``::
+
+ class Greeter:
+ """ """
+
+ def greet(self,greetee="World"):
+ print "Hello %s!"%gretee
+
+::
+
+ $ git add greeter/greeter.py
+
+
Che bel sole là fuori!
----------------------
+.. class:: handout
+
+ Anche se non abbiamo finito di implementare la nuova feature,
+ ci accorgiamo che c'è un bel sole e vogliamo andare a lavorarci
+ al parco (o dobbiamo correre a prendere il treno), e vogliamo
+ spostarci a lavorare sul portatile.
+
+ Niente di più semplice: committiamo quel che abbiam fatto fin'ora,
+ cloniamo il repository su una chiavetta usb, e possiamo lavorare
+ dal portatile senza problemi.
+
+::
+
+ $ git commit -m 'greeter/greeter.py: support for multiple greetees.'
+ $ cd $USB_KEY
+ $ git clone /home/[...]/greeter
+ Cloning into 'greeter'...
+ done.
+ $ cd greeter
+ $ git branch
+ * people
+ $ git branch -a
+ * people
+ remotes/origin/HEAD -> origin/people
+ remotes/origin/master
+ remotes/origin/people
+
+.. class:: handout
+
+ Con il comando ``git branch`` scopriamo che il clone ha già preso
+ come branch corrente quello che stavamo usando sul primo repository,
+ e con l'opzione ``-a`` possiamo vedere tutti i branch che abbiamo
+ a disposizione.
+
+ Con git ogni copia comprende tutta la storia di tutti i branch
+ disponibili nel repository che si è copiato, e quindi è possibile
+ continuare a lavorare anche se ci si dovesse trovare senza connessione
+ ad internet. Inoltre ogni clone del repository è un backup completo,
+ utile nel caso in cui succeda qualcosa ad un hard disk.
+
+Aggiunte successive
+-------------------
+
+.. class:: handout
+
+ Finiamo le modifiche di cui ci stavamo occupando, committiamo.
+
+``greeter.py``::
+
+ #!/usr/bin/env python
+
+ import sys
+
+ import greeter
+
+ def main():
+ grt = greeter.Greeter()
+ try:
+ grt.greet(sys.argv[1])
+ except IndexError:
+ grt.greet()
+
+ if __name__ == '__main__': main()
+
+::
+
+ $ git add greeter.py
+ $ git commit -m 'greeter.py: support for a custom greetee.'
+ [people 59b9d39] greeter.py: support for a custom greetee.
+ 1 file changed. 6 insertions(+). 1 deletion(-)
+
Ora di rientrare
----------------
+.. class:: handout
+
+ Riattacchiamo la chiavetta al PC, cerchiamo di riportare le modifiche
+ dal repository su chiavetta al repository su hard disk con
+ il comando ``git push``.
+
+::
+
+ $git push
+
+.. class:: handout
+
+ C'è un problema:
+
+Reintegriamo in master
+----------------------
+
+.. class:: handout
+
+
Un bel backup
-------------
+.. class:: handout
+
Finalmente pubblichiamo
-----------------------
+.. class:: handout
+
::
$ $BROWSER http://gitorious.org