Slide 1

Slide 1 text

Git for Windows Orlando Code Camp, 2013 Ovidiu Dimulescu @odimulescu speakerdeck.com/odimulescu

Slide 2

Slide 2 text

• SCMs Evolution • Benefits • Storage Model • Repositories Layout • Operations Flow • Setup • Questions? Agenda

Slide 3

Slide 3 text

About @odimulescu • Working on the Web since 1997 • • Organizer for JaxMUG.com • Co-Organizer for Jax Big Data meetup

Slide 4

Slide 4 text

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 SCMs Evolution

Slide 5

Slide 5 text

• 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 Trends

Slide 6

Slide 6 text

• Actively developed ecosystem • Ton of free good docs • Cool kids are doing it: • Hosted repos: • Cross-platform: • Deployment tool: • Marketable skill Git Benefits - By Marketplace

Slide 7

Slide 7 text

• 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 Git Benefits - For Developers

Slide 8

Slide 8 text

• 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 ?

Slide 9

Slide 9 text

Storage Model

Slide 10

Slide 10 text

Git Other Storage Model - Versioning

Slide 11

Slide 11 text

• 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 Storage Model - Internals

Slide 12

Slide 12 text

• Everyone has direct commit access • Uses a familiar paradigm • Minimal overhead and bottlenecks • Works well for most teams Repositories Layout - Centralized

Slide 13

Slide 13 text

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 Repositories Layout - Hierarchical

Slide 14

Slide 14 text

Operations Flow - Local

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Operations Flow - Merging $ git merge origin

Slide 17

Slide 17 text

$ git rebase origin Operations Flow - Rebasing

Slide 18

Slide 18 text

$ git cherry-pick C3 Operations Flow - Cherry-picking

Slide 19

Slide 19 text

Windows Setup

Slide 20

Slide 20 text

Hierarchical System wide Per User Per Project Common Settings • Identity - Name + Email • Ignored files • End of line settings Configuration Basics

Slide 21

Slide 21 text

Configuration Basics - EOL * Images Credit: http://blog.subgit.com/tag/autocrlf/ Since 1.7.2 - Attributes text - on / off eol - how Pre 1.7.2 - core.autocrlf true false input

Slide 22

Slide 22 text

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 * Clients - Gratis

Slide 23

Slide 23 text

SmartGit - http://www.syntevo.com/smartgit/index.html Clients - Have you ?

Slide 24

Slide 24 text

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 Bridges to other VCSes

Slide 25

Slide 25 text

Clients - Side by Side Official Git CLI, Git-GUI, Gitk Built-in bridges: svn, perforce WinExplorer integration (git-cheetah) Aliases support UI tools limited Github for Windows Easy integration with GitHub All in one installer (Git, Posh-Git) “Clone in Windows” browser button Dumbed down functionality Git Extensions All in one installer (Git, KDiff3) Visual Studio integration, 2005 - 2012 WinExplorer integration Staging support TortoiseGit Good interface WinExplorer integration Hides Git operations

Slide 26

Slide 26 text

Visual Studio Tools for Git - bit.ly/vstools4git 2012 Update 2 (CTP) SourceTree - www.sourcetreeapp.com Mac only Windows Private Beta Clients - Exciting*

Slide 27

Slide 27 text

• Uber fast, full history & versioning locally • Commit before merge is liberating • Multi-platform, enables different workflows • Well documented and integrated • Marketable skill Summary

Slide 28

Slide 28 text

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 References

Slide 29

Slide 29 text

Official Documentation ProGit.org GitMagic GitReady.com GitRef.org Version Control by Example Visual Git Reference Try Git Resources

Slide 30

Slide 30 text

Questions ? Ovidiu Dimulescu @odimulescu speakerdeck.com/odimulescu