2. Git / Why should I care?
http://www.google.com/trends/explore#cat=0-5-32&q=git%2C%20subversion%2C%20mercurial&cmpt=q
3. Git / What is Git ?
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
4. Git / What is Git ?
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
7. Git / Open Source
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
8. Git / Distributed
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
9. Git / Central vs Distributed
Computer A
checkout
file
Computer
checkout
file
Central VCS
version database
version 1
version 2
version 3
10. Git / Central vs Distributed
Computer A
version
database
file
version 1
version 2
Computer A
version
database
file
version 1
version 2
Server Computer
version
database
version 1
version 2
11. Git / Efficiency
Git is an open source distributed version
control system designed for speed and efficiency.
Initially designed and developed by Linus Torvalds
for Linux kernel development.
12. Git / Efficiency
Not a shrink wrap product, so not quite what we are doing, however facebook have 700 developers, with new code
pushed out daily
http://venturebeat.com/2012/08/03/facebook-code/
Our merging process seems to have slowed down, where merges are now held until the end of the iteration. We need to
become more rapid and have user stories accepted earlier in the iteration cycle, with more regular and smaller merges
taking place throughout the iteration.
Cheers,
XXX
Software Development Engineering Manager
15. Git /Efficiency
$
time to deliver (time to market) + additional costs (disk space,..)
=
methodologies
version control system
open-source projects
programming languages (functional/lambda = less code)
modular architecture
continuous integration
test automation
continuous deployment
monitoring driven development
36. Git / Object database / Tag
tag
tree
blob
commit
37. object 0576fa
type commit
tag v0.1
tagger Marek Prochera
<marek.prochera@gmail.com> 1205624655
this is my v0.1 tag
Git / Object database / Tag
tag [content size]0
tag : 0c819c
zlib::deflate
http://alblue.bandlem.com/2011/04/git-tip-of-week-tags.html
38. Git / Object database
blob tree
immutable! fuck yea!
commit tag
43. Git / Treeish
alternate ways to refer to
objects or ranges of objects
• full sha-1
• partial sha-1
• branch or tag name
• date spec
• ordinal spec
• carrot parent
• tilde spec
• tree pointer
• blob spec
• ranges
44. Git / Treeish / Full sha-1
6e453f523fa1da50ecb04431101112b3611c6a4d
53. Git / Index
working directory
repository
index
git add ...
git commit ...
http://alblue.bandlem.com/2011/10/git-tip-of-week-understanding-index.html
73. Git / Repos
Provider Git Mercurial Free Priv Rep Premium
github
bitbucket
X
X !!!
X
X X
your own EC2 !!! !!!!!! !!!
http://www.wikivs.com/wiki/Git_vs_Mercurial#Hosting_Provider_Support
74. Git / Git as a SVN client
git as a client:
do not mess in history !
sudo apt-get install git-svn
git svn init svn://repo.path/trunk
git svn fetch -r HEAD
pull:
git svn rebase
push:
git svn dcommit
http://trac.parrot.org/parrot/wiki/git-svn-tutorial
76. Git / Tools/IDE support / Git alias
#make "com" alias for "commit"
git config alias.com commit
#make "co" alias for checkout
git config alias.co checkout
#make "br" alias for branch
git config alias.br branch
# When you want to see just the differences of one function in one file in two different commits
git config alias.funcdiff '!sh -c "git show "$1:$3" | sed -n "/^[^ t].*$4(/,/^}/p" > .tmp1 &&
git show "$2:$3" | sed -n "/^[^ t].*$4(/,/^}/p" > .tmp2 &&
git diff --no-index .tmp1 .tmp2"' -
77. Git / Tools/IDE support / bash
https://github.com/magicmonty/bash-git-prompt
78. Git / Tools/IDE support
Repository management (ssh keys, privileges ): gitosis
https://wiki.archlinux.org/index.php/Gitosis
Web based browsers:
https://wiki.archlinux.org/index.php/Gitweb
Browser + code review:
https://code.google.com/p/gerrit/
http://www.codebrag.com/
79. Git / Tools/IDE support
IntelliJ IDEA as always the best :)
egit in eclipse sucks
most of good GUI tools for git are dedicated for Mac OSX :/
http://git-scm.com/downloads/guis
linux
gitk / gitg
(http://git.gnome.org/browse/gitg)
80. Git / Tools/IDE support
IntelliJ IDEA as always the best :)
egit in eclipse sucks
most of good GUI tools for git are dedicated for Mac OSX :/
http://git-scm.com/downloads/guis
linux
gitk / gitg
(http://git.gnome.org/browse/gitg)
81. Git / Tools/IDE support
but if you like ponies ... you're lucky!
SourceTree @ Atlassian
http://www.atlassian.com/software/sourcetree/overview
Git Bash!
82. Git / Git vs Hg
If you just give them a chance....
http://felipec.wordpress.com/2012/05/26/no-mercurial-branches-are-still-not-better-than-git-ones-response-to-jhws-more-on-
mercurial-vs-git-with-graphs/