GIT SCM
Contents • Popularity – Projects that use/require Git • Functionality – Distributed repository – Branching/merging • Learning • Resources required • Support by 3rd party tools • Summary
Git vs SVN on Google Trends
GitHub vs SourceForge on Google Trends
Projects that use Git • Linux kernel • less.js • Ruby on Rails • Elastic search • jQuery • Eclipse • node.js • Gnome • Twitter bootstrap • KDE • Diaspora SN • Qt • Symfony (requires it!) • Android (!!!) • Facebook OS projects • Stanford/Berkley in their learning courses
Git Concepts • Local Repository(just type git init, or right click…) • Commit • Push/pull • Origin ( the place you took the source from) • Tags ( real tags, no space required, made effortlessly) • Branches (actual branches, not copies of code)
Distributed vs Centralized
But, you can use Git as a centralized repository as well Team branches(feature, release, maintenance) Can have local branches
Pros • Git is incredibly faster than SVN cause nearly all operations other than push and pull work locally • Uses compression when storing/sending code over network. As a result pull/clone/push happen a lot faster. • Preserves the actual author of the code during merge • Allows simultaneous storage of several branches in a single folder • Allows offline commits • Branches know where they came from. Merging them is a piece of cake • Does not pollute your repo by creating stupid .svn folders in each folder
Pros continued • Git repos are much smaller than SVN’s (30x smaller in case of Mozilla project) • Git branches are simpler and less resource heavy than SVN's • Git allows you to execute hooks on some events(commit, push, pull) • Allows commit amend (fix your last commit) • Requires the damned comment thing • To be sure that you won’t loose some code you can just commit it locally instead of copying the files • Ignoring files is easier
What people will learn when working with git • A more modern way to do SCM • They will learn to actually do branching. It won’t be a pain in the ass • They would be forced to type in the damned comment when committing. The thing’s important. • They won’t have to learn it anyway when they finally encounter it in the wild (symfony2) • Anyone who knows git can handle SVN anytime • Contributing
Cons • Steep learning curve • Some UI tools do not yet fully support Git • Is harder to configure on client machine ( at least it was a year ago ) • It is impossible to checkout a portion of the project tree (???) • Cumbersome revision numbers
Git performance
Git Branching? • Tracks the project revision the branch started from • Records branch merge events (author, time, date, branch revision info) • Changes made on the branches remain attributed to original authors • Changes made during the merging process are attributed to the merging user • Automatically starts the next merge at the last merge (a branch can be merged twice)
Possible Branching Model
Resources Required SVN Git • Centralized server • Centralized server • Client software • Client software • TortoiseSVN • TortoiseGit • IDE/plugin • IDE/plugin • Command line • Command line git SVN client client • SmartGit if none of the above suits
Setup on windows • mysysgit port of git to windows • Public/private certificates on each user machine for auth • TortoiseGit (so one will have lovely icons on git managed folders) • SmartGit looks like the best UI tool (I haven’t tried eclipse built-in git plugin)
Tools • TortoiseGit • Command line utility • SmartGit • Eclipse git plugin ( EGit ) • Git source control provider for Visual Studio
Resources • A successful Git branching model http://goo.gl/b1EA7 • Good Git cheatsheet http://goo.gl/vUSlV • Git website http://goo.gl/D3sxy

Git

  • 1.
  • 2.
    Contents • Popularity – Projects that use/require Git • Functionality – Distributed repository – Branching/merging • Learning • Resources required • Support by 3rd party tools • Summary
  • 3.
    Git vs SVNon Google Trends
  • 4.
    GitHub vs SourceForgeon Google Trends
  • 5.
    Projects that useGit • Linux kernel • less.js • Ruby on Rails • Elastic search • jQuery • Eclipse • node.js • Gnome • Twitter bootstrap • KDE • Diaspora SN • Qt • Symfony (requires it!) • Android (!!!) • Facebook OS projects • Stanford/Berkley in their learning courses
  • 6.
    Git Concepts • LocalRepository(just type git init, or right click…) • Commit • Push/pull • Origin ( the place you took the source from) • Tags ( real tags, no space required, made effortlessly) • Branches (actual branches, not copies of code)
  • 7.
  • 8.
    But, you canuse Git as a centralized repository as well Team branches(feature, release, maintenance) Can have local branches
  • 9.
    Pros • Git isincredibly faster than SVN cause nearly all operations other than push and pull work locally • Uses compression when storing/sending code over network. As a result pull/clone/push happen a lot faster. • Preserves the actual author of the code during merge • Allows simultaneous storage of several branches in a single folder • Allows offline commits • Branches know where they came from. Merging them is a piece of cake • Does not pollute your repo by creating stupid .svn folders in each folder
  • 10.
    Pros continued • Gitrepos are much smaller than SVN’s (30x smaller in case of Mozilla project) • Git branches are simpler and less resource heavy than SVN's • Git allows you to execute hooks on some events(commit, push, pull) • Allows commit amend (fix your last commit) • Requires the damned comment thing • To be sure that you won’t loose some code you can just commit it locally instead of copying the files • Ignoring files is easier
  • 11.
    What people willlearn when working with git • A more modern way to do SCM • They will learn to actually do branching. It won’t be a pain in the ass • They would be forced to type in the damned comment when committing. The thing’s important. • They won’t have to learn it anyway when they finally encounter it in the wild (symfony2) • Anyone who knows git can handle SVN anytime • Contributing
  • 12.
    Cons • Steep learningcurve • Some UI tools do not yet fully support Git • Is harder to configure on client machine ( at least it was a year ago ) • It is impossible to checkout a portion of the project tree (???) • Cumbersome revision numbers
  • 13.
  • 14.
    Git Branching? • Tracksthe project revision the branch started from • Records branch merge events (author, time, date, branch revision info) • Changes made on the branches remain attributed to original authors • Changes made during the merging process are attributed to the merging user • Automatically starts the next merge at the last merge (a branch can be merged twice)
  • 15.
  • 16.
    Resources Required SVN Git • Centralized server • Centralized server • Client software • Client software • TortoiseSVN • TortoiseGit • IDE/plugin • IDE/plugin • Command line • Command line git SVN client client • SmartGit if none of the above suits
  • 17.
    Setup on windows •mysysgit port of git to windows • Public/private certificates on each user machine for auth • TortoiseGit (so one will have lovely icons on git managed folders) • SmartGit looks like the best UI tool (I haven’t tried eclipse built-in git plugin)
  • 18.
    Tools • TortoiseGit • Command line utility • SmartGit • Eclipse git plugin ( EGit ) • Git source control provider for Visual Studio
  • 19.
    Resources • A successfulGit branching model http://goo.gl/b1EA7 • Good Git cheatsheet http://goo.gl/vUSlV • Git website http://goo.gl/D3sxy