Adnan Smajlovic
Big Cloud Solutions – DevOps Advisory
Git
Introduction and Overview
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Git repositories are not linear
– Branching already supported
•Branches are trees ...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
3
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Git satire
– A Guide to Git using spatial analogies
• http://tartley.com/?p=1267
•...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Scope
•Background
•Features
•Services
– Github
– GitLab
– Bitbucket
•Resources
•Q&...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Scope
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Purpose
– Introduce distributed version control concept
– Generate some Git intere...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•This is not a…
– Git tutorial
• Plenty of resources out there
– See „Resources‟ se...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•This is not a…
– GitHub tutorial
• There are alternatives
Scope
9
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Background
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Record changes to resources
– Not limited to software code
• e.g. Wiki article ver...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Local
– Copy to another directory
– Patching mechanism
• Recovery based on revisio...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Centralised
– Collaborator count > 1
– Client-server model
– Due diligence
• Audit...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Distributed
– Full mirror
• Clients can restore content to server
• Every copy is ...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Version Control - Who
15
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Linux kernel developers abandoned BitKeeper
– BitMover alleges reverse-engineering...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Features
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
18
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Distributed Version Control System (DVCS)
– Fast version control
– Cheap local bra...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Some goals
– Fast
• Must handle patching of the Linux kernel source/tree
– Fully d...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Snapshots
Git Features
21
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•“Think locally not globally (!)”
– Most operations require local files/resources o...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
23
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Diverge and fix (or break) stuff
•Main line of development unaffected
•Cheap to us...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Good to Know - Branch
25
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Good to Know - Branch
26
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Good to Know - Branch
27
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Good to Know - Branch
28
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Things do not always go smoothly
•Merge a branch with the master
– Same object cha...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
<<<<<<< HEAD:somefile.ext
Go away!
=======
Please go away!
>>>>>>> mybranch:somefil...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Effectively – patching
•Process
– Grab a diff of each commit
– Store in temp files...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Good to Know - Rebase
32
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Good to Know - Rebase
33
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Good to Know - Rebase
34
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Rewrite history every once in a while
•“Dude, I don‟t want to look like an idiot”
...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Fork a repo
•Track changes in parent repo („git remote‟)
– Commits can be quickly ...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Services
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•May be referred to as “Git as a Service”
•Generally public and private repositorie...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Most popular source code repo site
– Social networking concepts
•Public and privat...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Source code in GitHub o_0
•Free (kind of…)
– Self-hosted – you still need a server...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•Free (almost…)
– Up to 5 users
•Unlimited private repos
•Offers Mercurial support
...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Resources
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•The Git SCM book
– From the horses mouth
– Thank you for the images used in this d...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
•The Git SCM tutorial
– http://git-scm.com/docs/gittutorial
•Six Revisions tutorial...
RACKSPACE® HOSTING | WWW.RACKSPACE.COM
Questions?
46
RACKSPACE® HOSTING | © RACKSPACE US, INC. | RACKSPACE® AND FANATICAL SUPPORT® ARE SERVICE MARKS OF RACKSPACE US, INC. R...
Upcoming SlideShare
Loading in...5
×

Git - Introduction and Overview

846

Published on

Quick Git overview presented at a Rackspace Tech Night - it is not a tutorial, no previous knowledge is required, we are simply looking to introduce the concepts of version control and cover some good practice steps when dealing with repositories.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
846
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Git - Introduction and Overview

  1. 1. Adnan Smajlovic Big Cloud Solutions – DevOps Advisory Git Introduction and Overview
  2. 2. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Git repositories are not linear – Branching already supported •Branches are trees of trees •Visualise – The state of your repository as a point in a high- dimensional „code-space‟ – Branches are represented as n-dimensional membranes – Map the spatial loci of successive commits onto the projected manifold of each cloned repository The Simple Stuff 2
  3. 3. RACKSPACE® HOSTING | WWW.RACKSPACE.COM 3
  4. 4. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Git satire – A Guide to Git using spatial analogies • http://tartley.com/?p=1267 • “Tartley, you‟re one sick puppy” Just Kidding 4
  5. 5. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Scope •Background •Features •Services – Github – GitLab – Bitbucket •Resources •Q&A Agenda 5
  6. 6. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Scope
  7. 7. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Purpose – Introduce distributed version control concept – Generate some Git interest • Depending on use will lead to: – awe – fear – hate – suffering • Pass on the stories, don‟t be „that‟ guy – Some useful concepts • Branch, merge, rebase, amend Scope 7
  8. 8. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •This is not a… – Git tutorial • Plenty of resources out there – See „Resources‟ section • Service providers and projects vary • That said… – If there is enough interest • Perhaps a fully-fledged „enabler‟ tech night • “Dude, what the hell is Jenkins and how do I integrate Git with it?” • What is this Selenium and SauceLabs business about?” Scope 8
  9. 9. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •This is not a… – GitHub tutorial • There are alternatives Scope 9
  10. 10. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Background
  11. 11. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Record changes to resources – Not limited to software code • e.g. Wiki article versioning •Recall specific versions – Revert to previous state • File • Image • Project •Tracking – Revision numbers (e.g. 1.0.1, r3893, etc.) Version Control - What 11
  12. 12. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Local – Copy to another directory – Patching mechanism • Recovery based on revision sets • “It‟s so simple” (!) – What if? • Forget where it is stored • Overwrite wrong file • Database is corrupted • Datacentre blows up Version Control - How 12
  13. 13. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Centralised – Collaborator count > 1 – Client-server model – Due diligence • Auditing capabilities – Access control – What if? • Network connection has high latency • Server fails • Datacentre blows up Version Control - How 13
  14. 14. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Distributed – Full mirror • Clients can restore content to server • Every copy is a backup – Hierarchy options • Cross-system collaboration – What if? • Attempt to break it • Datacentre blo…oh, wait Version Control - How 14
  15. 15. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Version Control - Who 15
  16. 16. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Linux kernel developers abandoned BitKeeper – BitMover alleges reverse-engineering of protocols – Withdraws free use •Linus Torvalds sets out to write one – Existing systems do not meet requirements •Emphasis on speed – Patch the Linux kernel tree at a set rate •Avoid conventional approaches – Do the opposite of what CVS did – Name it „git‟ – Torvalds refers to himself as one (!) Birth of Git 16
  17. 17. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Features
  18. 18. RACKSPACE® HOSTING | WWW.RACKSPACE.COM 18
  19. 19. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Distributed Version Control System (DVCS) – Fast version control – Cheap local branching – Easy to learn •Arguable – some experience required to leverage the more useful features – Influenced by BitKeeper and Monotone concepts •Source Code Management (SCM) principles – Change identification via „revision number‟ • Keep an eye out for those alphanumeric strings… Git Features 19
  20. 20. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Some goals – Fast • Must handle patching of the Linux kernel source/tree – Fully distributed • In case the datacentre blows up – Simple design • Compatibility with existing systems and protocols – Strong non-linear development orientation • Rapid branching and merging • Thousands of parallel branches Git Features 20
  21. 21. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Snapshots Git Features 21
  22. 22. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •“Think locally not globally (!)” – Most operations require local files/resources only •Integrity – Checksum all the things •Generally only add data (apologies to Bruce Lee) – Almost everything has an undo action •The Three States – Committed – Modified – Staged Git Features 22
  23. 23. RACKSPACE® HOSTING | WWW.RACKSPACE.COM 23
  24. 24. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Diverge and fix (or break) stuff •Main line of development unaffected •Cheap to use branches – Writing 41 bytes to a file – Old school methods used to copy everything :-/ •Basic merge process – Identify best common ancestor – Three-way merge (new snapshot) – Merged work in a new commit object Good to Know - Branch 24
  25. 25. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Good to Know - Branch 25
  26. 26. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Good to Know - Branch 26
  27. 27. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Good to Know - Branch 27
  28. 28. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Good to Know - Branch 28
  29. 29. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Things do not always go smoothly •Merge a branch with the master – Same object changed in multiple branches – Attempt to merge leads to conflict – „git status‟ shows the list of unmerged objects – Conflicts are marked •Pick the one you want Good to Know - Conflicts 29
  30. 30. RACKSPACE® HOSTING | WWW.RACKSPACE.COM <<<<<<< HEAD:somefile.ext Go away! ======= Please go away! >>>>>>> mybranch:somefile.ext Good to Know - Conflicts 30
  31. 31. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Effectively – patching •Process – Grab a diff of each commit – Store in temp files – Reset current branch as rebase target – Apply changes in turn •Just one rule to remember – “Do not rebase commits that you have pushed to a public repository” Good to Know - Rebase 31
  32. 32. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Good to Know - Rebase 32
  33. 33. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Good to Know - Rebase 33
  34. 34. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Good to Know - Rebase 34
  35. 35. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Rewrite history every once in a while •“Dude, I don‟t want to look like an idiot” •„git commit --amend‟ – Change the commit message – Add or remove objects •This is a mini-rebase – Keep the perils of rebasing in mind Good to Know - Amend 35
  36. 36. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Fork a repo •Track changes in parent repo („git remote‟) – Commits can be quickly pulled back into the fork •Create a branch in the fork („git branch) – Keeps the forked repo clean (see previous point) •Modify branch and push back („git push‟) •Test your changes – Generally recommended unless you take rejection well •Pull request to parent repo from your branch Good Practice 36
  37. 37. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Services
  38. 38. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •May be referred to as “Git as a Service” •Generally public and private repositories •May offer multiple SCM offerings •Additional services – Code review – Issue tracking – Wiki GaaS for the Masses 38
  39. 39. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Most popular source code repo site – Social networking concepts •Public and private repos •Free (well…) – Up to a point – No private repos for the free plan •Enterprise offering available – Bring GitHub to your own servers – Rackspace makes use of it – Not exactly cheap (!) GitHub 39
  40. 40. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Source code in GitHub o_0 •Free (kind of…) – Self-hosted – you still need a server to run it on •GitLab Cloud – Hosted GitLab – Unlimited private repos (10 users) •GitLab CI – Almost-native CI service GitLab 40
  41. 41. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •Free (almost…) – Up to 5 users •Unlimited private repos •Offers Mercurial support – Start-up that was acquired – Atlassian introduced Git support in 2011 •Enterprise offering available – Cheaper than GitHub (at the time of writing) •“Built for JIRA” – Stick a #resolve in your commit message Bitbucket 41
  42. 42. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Resources
  43. 43. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •The Git SCM book – From the horses mouth – Thank you for the images used in this deck – http://git-scm.com/book •Vogella Git Tutorial – Lars Vogel – http://vogella.com/articles/Git/ •Git for computer scientists – If you‟re all about pointers –http://eagain.net/articles/git-for-computer-scientists/ Resources 43
  44. 44. RACKSPACE® HOSTING | WWW.RACKSPACE.COM •The Git SCM tutorial – http://git-scm.com/docs/gittutorial •Six Revisions tutorials –http://sixrevisions.com/resources/git-tutorials-beginners/ •Code School tutorial – Try Git – http://try.github.io/ Resources 44
  45. 45. RACKSPACE® HOSTING | WWW.RACKSPACE.COM Questions?
  46. 46. 46 RACKSPACE® HOSTING | © RACKSPACE US, INC. | RACKSPACE® AND FANATICAL SUPPORT® ARE SERVICE MARKS OF RACKSPACE US, INC. REGISTERED IN TH E UNITED STATES AND OTHER COUNTRIES. | WWW.RACKSPACE.CO.UK RACKSPACE® HOSTING | 5 MILLINGTON ROAD | HAYES, UNITED KINGDOM UB3 4AZ UK SALES: +44 (0)20 8712 6507 | UK SUPPORT: 0800 988 0300 | WWW.RACKSPACE.CO.UK
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×