5. 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
6. 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)
8. But, you can use Git as a centralized
repository as well
Team
branches(feature,
release, maintenance)
Can have
local
branches
9. 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
10. 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
11. 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
12. 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
14. 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)
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 successful Git branching model
http://goo.gl/b1EA7
• Good Git cheatsheet http://goo.gl/vUSlV
• Git website http://goo.gl/D3sxy