git august 2008

53
git

description

talk about git, at the Ninjava meeting, August 2008, Shibuya

Transcript of git august 2008

Page 1: git august 2008

git

Page 2: git august 2008

pre

• sell / convince ?

• does it improve my work conditions ?

• do I know enough ?

• am I convinced enough ?

• no darcs, no hg exp

Page 3: git august 2008

shallow bits about git and github

links to

meaty stuff

included

Page 4: git august 2008

git

• the stupid content tracker

• a fast distributedrevision control system

• tracks history of trees

• has a toolkit design

• not an evolution of svn

Page 6: git august 2008

! svn

Page 7: git august 2008

gns

• git is not svn

• obviously .git instead of .svn

• svn stores delta to files, git doesn’t

• git tracks history of trees...

Page 8: git august 2008

git objects

commit

tree

blob

tree

blobblob

HEAD

commit

/

Rakefile

/lib

engine.rbwhatever.rb

HEAD

Page 9: git august 2008

git objects

• trees

• blobs

• commits

• tags

• (branches / pointers to commits)

Page 10: git august 2008

directed acyclic graph

commit

tree

blob

tree

blobblob

HEAD

commit0

tree

blob

tree

blobblob

HEAD

commit1

blob'

tree

Page 11: git august 2008

every version ?• not storing deltas ?

• wasted space ?

• packed format

from the git peepcode, by Scott Chacon

Page 12: git august 2008

.git

• all those objects reside in .git(no CVS or .svn in each dir)

• .git != .svn

• .git is the [local] repository

• .svn ~= .git/index

Page 13: git august 2008

work copy repository

svn diff

svn commit

svn checkout

svn update

svn

Page 14: git august 2008

git pull / git rebase

git

git diff head

git clone

git diff

git addgit commit

git commit -a

git push

git fetch

work copy local repoindex remote repo

Page 15: git august 2008

work copy local repoindex remote repo

work copy remote repo

.git

.svn(s)

.git/index

Page 16: git august 2008

branching, cheap

c0

t0

b0

t1

b1b2

HEAD

b3

t2

c1

mastertag v0.1.0

Page 17: git august 2008

c0

t0

b0

t1

b1b2

b3

t2

c1

mastertag v0.1.0

HEAD

crazy_idea

git branch crazy_idea; checkout crazy_idea

Page 18: git august 2008

git commit

c0

t0

b0

t1

b1b2

b3

t2

c1

mastertag v0.1.0

HEAD

crazy_idea

c2

...

Page 19: git august 2008

git checkout master

c0

t0

b0

t1

b1b2

b3

t2

c1

mastertag v0.1.0

HEAD

crazy_idea

c2

...

Page 20: git august 2008

git merge crazy_idea

c0

t0

b0

t1

b1b2

b3

t2

c1

mastertag v0.1.0

HEAD

c2

...

c3

Page 21: git august 2008

c0

c1

master

tag v0.1.0

HEAD

c2

c3

crazy_idea

git merge crazy_idea

(another representation)

Page 22: git august 2008

c0

c1

master

tag v0.1.0

HEAD

c2

cZ

crazy_idea

c3lol_branch

c3

(funky graphs)

Page 23: git august 2008

c0

c1

master

tag v0.1.0

HEAD

c2

c3

crazy_idea

git remote add toto git://github.com/toto/project

Page 24: git august 2008

git fetch toto

c0

c1

master

tag v0.1.0

HEAD

c2

c3

crazy_idea

cA

toto/project

Page 25: git august 2008

c0

c1

master

tag v0.1.0

HEAD

c2

c3

crazy_idea

cA

toto/project

c4

git checkout toto/master; vi whatever; git commit

Page 26: git august 2008

links to

meaty stuff

included

Page 27: git august 2008

git people

Page 28: git august 2008

Linus

Page 29: git august 2008

http://video.google.com/videosearch?q=linus+git

video.google.com [ linus git ]

Page 30: git august 2008

Scott Chacon

Page 33: git august 2008

Oliver + Ryan

http://tomayko.com/writings/the-thing-about-git

http://osteele.com/archives/2008/05/my-git-workflow

Page 34: git august 2008

github

Page 35: git august 2008

github

• one of the actors of current git success

• http://github.com/rails

• source code, lots of it

Page 36: git august 2008
Page 37: git august 2008

description

last commit

the code

the readme

(branch)

Page 38: git august 2008

FORK !

Page 39: git august 2008
Page 40: git august 2008

git fetchgit merge

Page 41: git august 2008
Page 42: git august 2008
Page 43: git august 2008

social code hosting

• I follow you, you follow me

• I fork you

• I comment on your commit

• we wiki

Page 44: git august 2008

social code hosting

• no conversations in the issue tracker...

• no conversations in the source code ?

• mailing list integration ?

• “binary” distributions ?

Page 45: git august 2008

On Sun, Aug 10, 2008 at 9:50 PM, Pablo Q. <[email protected]> wrote:>> I have a process that must run on Sunday but by some unknown reason it> doesn't work, here is the code that I'm using:

Hi Pablo,

this was probably fixed in release 1.0.6 of the rufus-scheduler gem :

http://github.com/jmettraux/rufus-scheduler/tree/master/CHANGELOG.txt#L31-32http://rubyforge.org/tracker/index.php?func=detail&aid=20476&group_id=4812&atid=18584

You'll find the mailing list for the rufus-stuff at :

http://groups.google.com/group/rufus-ruby

Best regards,

-- John Mettraux - http://jmettraux.wordpress.com

Page 46: git august 2008

http://github.com/jmettraux/rufus-scheduler/tree/master/CHANGELOG.txt#L31-32

Page 47: git august 2008

! github

Page 50: git august 2008

more git

Page 51: git august 2008

git more

• http://github.com/schacon/ticgit

• http://github.com/orlandov/gitwiki

• http://github.com/sr/git-wiki

• http://github.com/jmettraux/git-expense-tracker

• http://github.com/wesabe/robot-army-git-deploy/

Page 52: git august 2008

not today• behind the firewall, gitorious ?

• no words about rebasing

• nothing about the toolkit aspect

• git stash

• scenarii, dictator and lieutenant, blessed repo, ...

• submodules (trees pointing to commits)

• ...