Git & GitHub - Leverage your open source projects
Upcoming SlideShare
Loading in...5
×
 

Git & GitHub - Leverage your open source projects

on

  • 2,180 views

 

Statistics

Views

Total Views
2,180
Views on SlideShare
2,172
Embed Views
8

Actions

Likes
2
Downloads
19
Comments
0

4 Embeds 8

http://a0.twimg.com 3
http://paper.li 3
http://www.linkedin.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Git & GitHub - Leverage your open source projects Git & GitHub - Leverage your open source projects Presentation Transcript

  •         &   Leverage your open source projects 07 october 2011 Mickaël Tricot
  • Version Control System
    • In the centre of release management
    Version Feature Release Branch Deploy Backport Merge Patch Fork Changes
  • VCS before Git 1972 SCCS 1982 RCSS Rewriting of SCCS for Unix 1986 CVS Based on RCS 2001 Bitkeeper First DVCS, commercial 2002 Darcs DVCS 2002 Subversion Based on CVS 2003 Monotone DVCS View slide
  • What is a DVCS ?
    • Distributed Version Control System
      • Works offline
      • 3 (flexible) workflows
        • Personal (local sandbox)
        • Interpersonal (peer 2 peer)
        • Organisational (shared repository)
      • New terminology
        • Push
        • Pull
    View slide
  • Git genesis
      • Designed by Linus Torvalds in 2005
        • For the Linux kernel development
        • 15 years of experience of open-source projects
        • 4 years of experience of DVCS
    •  
      • Requirements
        • Distributed workflow
        • High performance
        • Safe (no corruption possible)
  • Git model
      • Objects
        • Content = blob
        • File system = tree (file name)
        • History = commit (date, user)
    •  
      • Identified by a hash (SHA1) for uniqueness and safety
    •  
      • Stored in a directed acyclic graph (no sequence number)
    •  
      • Branches are pointers to a commit ("cheap branching") Same for tags but unmovable
  • Git usage
      • Linux philosophy (command line)
        • Plumbing: ~ 100 low level commands
        • Porcelain: ~ 50 high level commands
    Clone Get the full history locally Commit Change the local repository (can be file chunks) Rebase Clean the history: edit, fusion, delete, reorder Push Changes to a shared repository Pull Changes to the local repository Stash Save work to a temporary location
  • Git assets
      • Full history is not much bigger than a single revision
      • Operations are much faster than with Subversion
      • Single .git configuration (no more .svn pollution)
      • Branching and merging are fast and easy
      • Workflow is flexible
        • non linear
        • not restricted by the limitations of the VCS
        • tools built on top of it...
    •  
  • GitHub
      • Web hosting service based on Git started in 2008
      • Free open source repositories (with wiki, bug tracker...)
      • Empower Git flexibility
        • Branch graphical visualization
        • Share, edit, comment, index code snippets ( Gists )
    •  
      • With a great user experience
        • Statistics
        • Image visualizer 
        • Keyboard shortcuts
  • GitHub social coding
      • Follow (timeline, RSS)
        • Projects
        • Users
      • Comments
        • Notes or code review
        • With markup
        • Mention people, they will be notified
        • Reply directly by e-mail
  • GitHub killer features
      • In a few clicks
        • Create a repository
        • Fork
        • Edit and push files
        • Pull request 
        • Merge
    •  
      • Easy collaboration
        • Everybody has commit rights (no heavy process)
        • Code ready to be merged (no diff patches)
      • Low contribution barrier = more participation
  • GitHub ecosystem
      • Pages
        • Generate pages for your projects
        • Use your own domain name
      • API
        • Access your account and project data
        • Via REST calls or the Java or Perl API
      • Maven plugin
        • Upload artifacts to the GitHub repository
        • Upload Maven site to the GitHub project pages
    •  
      • Many possibilities to leverage your projects
        • Example: Building directory of plugins hosted on GitHub
  • Why switching to Git ?
      • The biggest code hosting platform now supports Git
        • Sourceforge (2009)
        • Google code (July 2011)
        • BitBucket (October 2011)
    •  
      • The Apache Software Foundation
        • Hosts all the projects in Subversion
        • Accepts Subversion as a top level project in 2010
        • But mirrors all the projects in GitHub
        • Then starts experimenting with real hosting on Git...
  • Why switching to Git ?
      • Imagine your own workflow
        • Features branching: for new features being developed
        • Code review: waiting for a review
        • Bug fixes: to be merged into different branches
        • Master: definition of done
        • Deployment: for continuous delivery
      • Or adopt "a successful Git branching model"
        • gitflow has been chosen for projects like Spring and JBoss
  • Why switching to GitHub ?
      • Growing fast
        • Only 3 years of existence
        • Over 1 million users
        • Over 2 million repositories (60% projects, 40% Gists)
        • More commits than GoogleCode + SourceForge
    •  
      • Give visibility and get participation to your projects
        • Jenkins: 800 watchers, 300 forks
        • Linus Torvalds: 3700 followers
  • Impediments for developers
      • Learning curve
        • Forget about Subversion
        • Training?
      • Linux philosophy
        • Complex commands
        • GUI tools still to be improved
    •  
      • Workflow to be decided
  • Impediments for companies
      • User management
        • Every employee must have a GitHub account
      • Migration to Git
        • Subversion to Git is a common use case (but slow)
    •  
      • Closed projects
        • Hosted on GitHub: $100 / month for 50 repositories
        • Self hosted GitHub: dissuasive pricing!
        • Self hosted Git repositories?
    •  
      • Dependency to a third company (data privacy, stability)
  • Quotes
    • Thoughtworks (Martin Fowler) - July 2011 "Git embodies a well architected , high performance implementation of distributed version control. Git is powerful , so it should be used with respect, but that power enables agile engineering workflows that simply cannot exist with other tools."
    • Joel on Software (Joel Spolsky) - March 2010
    • "Distributed Version Control is here to stay , baby"
  • Kudos
    • @ github
    • http:// github.com
    •   @ chacon http:// scottchacon.com http:// git-scm.com http:// progit.org   @ gitfr @ sdouche http:// gitfr.net