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)
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 SVNs• 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 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)
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
Gostou de algum slide específico?
Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.