Git And Social Coding

Git And Social Coding
Chris Gomez
@SpaceShot
www.chrisgomez.com
Chris Gomez
• Microsoft MVP in Visual Studio Tools and Technologies (ASP.NET)
• Co-host of the Static Void Podcast
• Philly Game Works - www.phillygameworks.org - @phillygameworks
Git
• Created by Linus Torvalds
https://www.youtube.com/watch?v=4XpnKHJAok8
Goals
• Suitable for Open Source collaboration
• No central server, lack of connectivity to contributors
• Don’t want to have to know and trust all the contributors
• Intended for Linus to have a “web of trust” in dealing with Linux
• Something that is not CVS or SVN
• Intense dislike of CVS and SVN
• Top complaint seems to be “intelligent merging”
• Also complaint that merge pain often fell on a victim rather than perpetrator
It’s just a Directed Acyclic Graph!
• A very complicated way of saying something very simple:
http://xkcd.com/1597/
Exploring the git filesystem
But how are you really going to use Git?
git rebase – when the world moved on…
feature
C1
C2
C3
C6
C4
C5
C7
master
git rebase – time travel your work
feature
C1
C2
C4
C5
C7
master
C3
C6
git rebase interactive – Why?
feature
C3
C1
C2
master
C4
C5
C6
C7
git rebase interactive – rewrite history
feature
C3/C4 squashed
C1
C2
master
C6 better commit
message
C7
C5 was dumped.
Can rewrite commits
Squash commits
Pick commits
Some great resources
https://www.youtube.com/watch?v=SiokK8Q1wo0
https://www.youtube.com/watch?v=dBSHLb1B8sw
https://www.youtube.com/watch?v=duqBHik7nRo
But how are you really going to use Git?
But how are you really going to use Git?
• You are probably going to use… a central server!
• You might use GitHub, BitBucket, Visual Studio Team Services
in the cloud (among others)
• You might use TFS on premises, GitLab, GitHub Enterprise,
BitBucket Enterprise
Wait, doesn’t this just make it SVN, CVS, TFS, VSS all over
again?!?!
To the Cloud!...
libgit2
• A reimplementation of Git in C with many bindings:
• C#, Python, Ruby, Java
• “re-entrant linkable library with a solid API”
• This means it’s okay to use it in your application. It is respectful of system resources and
tries to keep from bringing down your application
https://libgit2.github.com/
Git Man Page Generator (Fun)
• https://git-man-page-generator.lokaltog.net/
• Please note this is not real git documentation, but a joke about Git
documentation.