git
Post on 03-Sep-2014
759 Views
Preview:
DESCRIPTION
TRANSCRIPT
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• Ruby on Rails• jQuery• node.js• Twitter bootstrap• Diaspora SN• Symfony (requires it!)• Facebook OS projects
• less.js• Elastic search• Eclipse• Gnome• KDE• Qt• Android (!!!)• 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
Can have local
branches
Team branches(feature,
release, maintenance)
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 RequiredSVN Git
• Centralized server• Client software• TortoiseSVN• IDE/plugin• Command line
SVN client
• Centralized server• Client software• TortoiseGit• IDE/plugin• Command line git
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
top related