RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Brown bag - Crash course
From «I cloned», to «I p...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Agenda
● Presentation (20’)
o Basic commands
o Br...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Git setup
$ git config --global user.name "FOO BA...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
The very beginning
$ mkdir ccbb-git
$ cd ccbb-git...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Working directory
$ git
usage: git [--version] [-...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Working directory - poking around
$ echo 'The ver...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Working directory - create repository
$ git init
...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Working directory status
$ git status
# On branch...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Staging area
$ git status -s
?? README
$ git add ...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Staging area
$ echo 'This is the second line.' >>...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Staging area
$ git add README
$ git status -s
A R...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Commit to Git repository
$ git commit -m 'First c...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Recap - The three states
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Basic commands
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Tagging
$ git tag v0.1
$ git lg
* 7c23e33 - (HEAD...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Tagging
$ git commit -m 'Second commit'
[master a...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
File status lifecycle
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Agenda
● Presentation (20’)
o Basic commands
o Br...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
$ git init
Initialized empty Git reposi...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
$ echo 'Experimental line' >> README
$ ...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Branching
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Merging
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Merge conflict
$ git merge experiment
Auto-mergin...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Merge conflict
$ cat README
The first line
The se...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Rollback
Current content of README:
Look at repos...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Rollback
How does README look like?
What about re...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Checkout
List branches (?!)
Restore master
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Agenda
● Presentation (20’)
o Basic commands
o Br...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Git repos & sharing code
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Git repos & sharing code
http://gitorious.org
htt...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Git repos & sharing code
● remote
● clone
● pull
...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Remote repository
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Remote repository
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Remote repository
$ git remote
origin
$ git remot...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Remote repository
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
pull
do stuff
push
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Remote repository - README.md
$ cat > README.md <...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Markdown
Markdown cheatsheethttps://github.com/ad...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Remote repository - push
$ git add README.md
$ gi...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Remote repository
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
local actions
and objects
remote actions
and obje...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
A successful branching model
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Git aliases
$ git config --global alias.b branch
...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Agenda
● Presentation (20’)
o Basic commands
o Br...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Agenda
● Presentation (20’)
o Basic commands
o Br...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Quiz
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Give your feedback!
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
References
Git SCMhttp://git-scm.com/
A Visual Gi...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Homework
● Replay examples
● commit result to Git...
RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
Upcoming SlideShare
Loading in …5
×

Git Crash Course

540 views

Published on

"Git Crash Course/Brown Bags" the basics of creating Git repositories, do versioning of files, branching and merging.

Published in: Software, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
540
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Do a minimal set up for your Git environment
  • You enter a directory. That directory is empty. For now, this is just a local directory!
  • How do you turn a local directory into a working directory?
    You type git and get that output
  • Create a file. Ask Git about the working directory… Git says this is not a working directory. There is no ‘.git’ directory.
  • Create a repository: the local directory turns into a working directory.
  • This is kinda verbose
  • Add README file to staging are
  • Add README file to staging are
  • Add README file to staging are
  • Add README file to staging are
  • TODO: provide step-by-step examples on that
  • For now do not care of the ‘detached HEAD’ state message
  • It seems that there is no master anymore, but wait...
  • submit a patch
  • TODO - describe, streamline and exemplify
  • Git aliases used in this presentation
  • Please, give your feedback!
  • Git Crash Course

    1. 1. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Brown bag - Crash course From «I cloned», to «I push»
    2. 2. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Agenda ● Presentation (20’) o Basic commands o Branching and merging o Git repositories and sharing code ● Q&A (5’) ● Quiz (5’)
    3. 3. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Git setup $ git config --global user.name "FOO BAR" $ git config --global user.email foobar@acme.com
    4. 4. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk The very beginning $ mkdir ccbb-git $ cd ccbb-git $ ll total 0 drwxr-xr-x 2 simo6545 1604020879 68 Feb 1 09:01 ./ drwxr-xr-x 117 simo6545 1604020879 3978 Feb 1 09:01 ../ local directory
    5. 5. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Working directory $ git usage: git [--version] [--help] [-c name=value] [--exec-path[=<path>]] [--html-path] [--man-path] [--info- path] [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>] The most commonly used git commands are: add Add file contents to the index bisect Find by binary search the change that introduced a bug branch List, create, or delete branches ...
    6. 6. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Working directory - poking around $ echo 'The very beginning' > README $ git status fatal: Not a git repository (or any of the parent directories): .git $ ls -la total 8 drwxr-xr-x 3 simo6545 1604020879 102 Feb 1 09:28 . drwxr-xr-x 117 simo6545 1604020879 3978 Feb 1 09:01 .. -rw-r--r-- 1 simo6545 1604020879 19 Feb 1 09:28 README
    7. 7. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Working directory - create repository $ git init Initialized empty Git repository in /Users/simo6545/tmp/20140201-090152/.git/ $ ll total 8 drwxr-xr-x 4 simo6545 1604020879 136 Feb 1 09:38 ./ drwxr-xr-x 117 simo6545 1604020879 3978 Feb 1 09:01 ../ drwxr-xr-x 9 simo6545 1604020879 306 Feb 1 09:39 .git/ -rw-r--r-- 1 simo6545 1604020879 19 Feb 1 09:28 README working directory
    8. 8. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Working directory status $ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # README nothing added to commit but untracked files present (use "git add" to track)
    9. 9. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Staging area $ git status -s ?? README $ git add README $ git status -s A README stage changes
    10. 10. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Staging area $ echo 'This is the second line.' >> README $ git status -s AM README $ git diff diff --git a/README b/README index 939d82f..9e92fed 100644 --- a/README +++ b/README @@ -1 +1,2 @@ The very beginning +This is the second line.
    11. 11. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Staging area $ git add README $ git status -s A README Stage changes again: $ git diff
    12. 12. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Commit to Git repository $ git commit -m 'First commit' [master (root-commit) 7c23e33] First commit 1 file changed, 2 insertions(+) create mode 100644 README $ git log commit 7c23e33b09b4863dbf59dbaec7bb023f7ff15c70 Author: Simone Soldateschi <simone.soldateschi@gmail.com> Date: Sat Feb 1 10:10:48 2014 +0000 First commit
    13. 13. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Recap - The three states
    14. 14. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Basic commands
    15. 15. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Tagging $ git tag v0.1 $ git lg * 7c23e33 - (HEAD, tag: v0.1, master) First commit (63 minutes ago) $ echo 'Still working...' >> README $ git status -s M README $ git add README $ git status -s M README
    16. 16. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Tagging $ git commit -m 'Second commit' [master a0a8c4b] Second commit 1 file changed, 1 insertion(+) $ git status -s $ git lg * a0a8c4b - (HEAD, master) Second commit (6 seconds ago) * 7c23e33 - (tag: v0.1) First commit (67 minutes ago) $ git tag v0.2 $ git lg * a0a8c4b - (HEAD, tag: v0.2, master) Second commit (6 seconds ago) * 7c23e33 - (tag: v0.1) First commit (67 minutes ago)
    17. 17. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk File status lifecycle
    18. 18. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Agenda ● Presentation (20’) o Basic commands o Branching and merging o Git repositories and sharing code ● Q&A (5’) ● Quiz (5’)
    19. 19. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching $ git init Initialized empty Git repository in /Users/simo6545/tmp/20140201-090152/.git/ $ echo 'The first line' > README $ git add README $ git commit -m 'C0' [master (root-commit) 38e3df8] C0 1 file changed, 1 insertion(+) create mode 100644 README $ echo 'The second line' >> README $ git add README $ git commit -m 'C1' [master 836e142] C1 1 file changed, 1 insertion(+)
    20. 20. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching
    21. 21. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching $ echo 'Experimental line' >> README $ git add README $ git commit -m "C2" [experiment 18c3f30] C2 1 file changed, 1 insertion(+)
    22. 22. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching
    23. 23. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching
    24. 24. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching
    25. 25. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching
    26. 26. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Branching
    27. 27. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Merging
    28. 28. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Merge conflict $ git merge experiment Auto-merging README CONFLICT (content): Merge conflict in README Automatic merge failed; fix conflicts and then commit the result. $ cat README The first line The second line <<<<<<< HEAD The third line ======= Experimental line Another experimental line The last experimental line >>>>>>> experiment
    29. 29. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Merge conflict $ cat README The first line The second line The third line Experimental line Another experimental line The last experimental line $ git add README $ git commit -m ‘C6’
    30. 30. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Rollback Current content of README: Look at repository logs: Rollback:
    31. 31. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Rollback How does README look like? What about repository logs?
    32. 32. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Checkout List branches (?!) Restore master
    33. 33. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Agenda ● Presentation (20’) o Basic commands o Branching and merging o Git repositories and sharing code ● Q&A (5’) ● Quiz (5’)
    34. 34. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Git repos & sharing code
    35. 35. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Git repos & sharing code http://gitorious.org http://gna.org/projects/savane/
    36. 36. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Git repos & sharing code ● remote ● clone ● pull ● push
    37. 37. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Remote repository
    38. 38. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Remote repository
    39. 39. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Remote repository $ git remote origin $ git remote -v origin git@github.com:siso/ccbbgit.git (fetch) origin git@github.com:siso/ccbbgit.git (push)
    40. 40. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Remote repository
    41. 41. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk pull do stuff push
    42. 42. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Remote repository - README.md $ cat > README.md << EOF # Git Crash Course - Brown Bag ## Paragraph 1 * **Lorem ipsum dolor sit amet**, consectetur adipiscing elit. Donec tempor justo vitae nisi condimentum, id lobortis turpis tincidunt. ## Paragraph 2 * Duis egestas arcu quis elit posuere, vel iaculis lacus lobortis. Duis ultricies sem in diam facilisis, eget blandit mi rutrum. EOF
    43. 43. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Markdown Markdown cheatsheethttps://github.com/adam-p/markdown- here/wiki/Markdown-Cheatsheet
    44. 44. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Remote repository - push $ git add README.md $ git commit -m 'first release' [master e0b1158] first release 1 file changed, 6 insertions(+) $ git push origin master Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 464 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@github.com:siso/ccbbgit.git 5df3dad..e0b1158 master -> master
    45. 45. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Remote repository
    46. 46. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk local actions and objects remote actions and objects
    47. 47. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
    48. 48. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk A successful branching model
    49. 49. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Git aliases $ git config --global alias.b branch $ git config --global alias.lg log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative $ git config --global alias.serve !git daemon --reuseaddr --verbose --base- path=. --export-all ./.git $ git config --global alias.st status st
    50. 50. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Agenda ● Presentation (20’) o Basic commands o Branching and merging o Git repositories and sharing code ● Q&A (5’) ● Quiz (5’)
    51. 51. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk
    52. 52. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Agenda ● Presentation (20’) o Basic commands o Branching and merging o Git repositories and sharing code ● Q&A (5’) ● Quiz (5’)
    53. 53. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Quiz
    54. 54. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Give your feedback!
    55. 55. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk References Git SCMhttp://git-scm.com/ A Visual Git Referencehttp://marklodato.github.io/visual-git-guide/index- en.html Git Workflowshttps://www.atlassian.com/git/workflows
    56. 56. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk Homework ● Replay examples ● commit result to GitHub ● send me a message
    57. 57. RACKSPACE® HOSTING | WWW.RACKSPACE.COMsimone.soldateschi@rackspace.co.uk

    ×