Git is omnipresent these days from open source and startups to enterprises. This talk will demystify Git architecture and cover Windows specific integration. We will explore free options like Git Extensions, TortoiseGit, Command Line, GitHub for Windows and Visual Studio Tools for Git. We will also cover using Git as TFS client when you want to take advantages of Git's features but the source repository is TFS.
3. About @odimulescu
• Working on the Web since 1997
•
• Organizer for JaxMUG.com
• Co-Organizer for Jax Big Data meetup
4. SCMs Evolution
1st Generation - RCS, SCCS
• Single file-based operations
• Local only
2nd Generation – CVS, SVN, TFS
• Multi-file based operations
• Centralized client / server architecture
• Merge before commit
3rd Generation – Git, Hg, Bzr, Arch
• Multi-file based operations
• Decentralized / Distributed architecture
• Commit before merge
5. Trends
• Tendency towards more concurrency
• DVCS get most of the buzz and innovation
Open Source: Git, Mercurial
Commercial: Kiln,Veracity, PlasticSCM
• 2nd Gen VCS advances are slowing down
Last SVN major release took 2 years
6. Git Benefits - By Marketplace
• Actively developed ecosystem
• Ton of free good docs
• Cool kids are doing it:
• Hosted repos:
• Cross-platform:
• Deployment tool:
• Marketable skill
7. Git Benefits - For Developers
• Fast (logs, diffs, etc.)
• Facilitates experimentation
– Fast branch creation and switching
– Easy merge and re-merge
– Stashing Commit before merge
• Code artist, driver seat
• Multitasking
8. ?
• Large binaries that change often: games, CAD, etc.
– git-annex
– git-media
• Security concerns, entire repository is stored locally
• Extremely large projects, a full local copy is not feasible
– shallow clones
– sparse checkouts
– submodules
– subtree
11. Storage Model - Internals
• Each file revision is stored as a unique BLOB object. The
object identifier is an SHA-1 hash of its content.
• Git is content-addressable file-system that has a
notion of versions
• Versions are snapshots of the entire tree
• Object database: BLOBs, TREEs, COMMITs, TAGs
12. Repositories Layout - Centralized
• Everyone has direct commit access
• Uses a familiar paradigm
• Minimal overhead and bottlenecks
• Works well for most teams
13. Repositories Layout - Hierarchical
1. Project maintainer is sole committer to the reference repository
2. Contributors clone (fork) that repository and makes changes
3. Contributor commits those changes to their own public copy
4. Contributor asks the projects maintainer to apply changes
5. Project maintainer reviews, merges & commits to ref. repository
20. Configuration Basics
Hierarchical
System wide
Per User
Per Project
Common Settings
• Identity - Name + Email
• Ignored files
• End of line settings
21. Configuration Basics - EOL
Since 1.7.2 - Attributes
text - on / off
eol - how
Pre 1.7.2 - core.autocrlf
true
false
input
* Images Credit: http://blog.subgit.com/tag/autocrlf/
22. Clients - Gratis
Official client - git-scm.com
GitHub for Windows - windows.github.com
Tortoise Git - code.google.com/p/tortoisegit
Git Extensions - code.google.com/p/gitextensions
EGit for Eclipse - www.eclipse.org/egit
Visual Studio Tools for Git - bit.ly/VvYiak *
SourceTree - www.sourcetreeapp.com *
23. Clients - Have you ?
SmartGit - http://www.syntevo.com/smartgit/index.html
24. Bridges to other VCSes
Git <-> Svn - Built-in
Git <-> TFS - www.git-tfs.com, 3rd Party, Win only
Git <-> TF - gittf.codeplex.com, MS, Java based
Git <-> Hg - hg-git.github.com
Git <-> Perforce - Built-in
25. Clients - Side by Side
CLI, Git-GUI, Gitk
Built-in bridges: svn, perforce
Official Git WinExplorer integration (git-cheetah)
Aliases support
UI tools limited
Easy integration with GitHub
All in one installer (Git, Posh-Git)
Github for Windows
“Clone in Windows” browser button
Dumbed down functionality
All in one installer (Git, KDiff3)
Visual Studio integration, 2005 - 2012
Git Extensions
WinExplorer integration
Staging support
Good interface
TortoiseGit WinExplorer integration
Hides Git operations
26. Clients - Exciting*
Visual Studio Tools for Git - bit.ly/vstools4git
2012 Update 2 (CTP)
SourceTree - www.sourcetreeapp.com
Mac only
Windows Private Beta
27. Summary
• Uber fast, full history & versioning locally
• Commit before merge is liberating
• Multi-platform, enables different workflows
• Well documented and integrated
• Marketable skill
28. References
Visual Studio Tools for Git, MSDN
Git Extensions, Henk Westhuis
Git-TF, CodePlex
Git Presentations, Steve Chacon
Pro Git Book, Steve Chacon
Pragmatic Guide to Git, Travis Swicegood