On Wed, 12 Mar 2014 23:29:21 -0700 (PDT)
rocky1989....@gmail.com wrote:

> > > I want to write a program to store files as git does.But I can't 
> > understand how git works with its objects to do this job. 
> > > I have read some git code but it's difficult to understand,I also
> > > read 
> > some books like pro git,its description is not very detailed. 
> >
> > The classic "Git from the bottom up" [1] looks like what you need. 
> >
> it is nice, is there any other material like this ????

Well, I tend to also recommend "Git for computer scientists" [2]
and "Git concepts simplified" [3] but they try to explain low-level
concepts to people with certain CS background; they do not deal with
exact data representation of a Git repository.

So you might be better off just researching a toy repository yourself
while reading manual pages on plumbing-level Git commands.
I think, basically that's pretty the same [1] suggests.
That is, you start with `git show-ref` and make out how Git resolves
its "refs" (branches, tags etc) then move to `git ls-tree` then move
to `git cat-file`.

You then might dig a little deeper and explore a scarse collection of
plumbing tools which deal with packfiles but Git mostly hides their
existance from the user so there's not much you can do.  And I'm not
exactly sure you need this.

You might also find the design document [5] of bup [4] to be
a pretty enlightening read as it puts the way Git stores data in a
perspective of huge arrays of possibly huge files (Git itself is
optimized for moderately-sized arrays of small-to-medium files).

And by the way, if you find reading C code of Git itself hard, you can
try reading Java code of JGit [6] which works with Git repositories but
does not call out to Git to do so.  Quite possibly, you'll find other
projects striving to do the same thing in different PLs/platforms.

2. http://eagain.net/articles/git-for-computer-scientists/
3. http://gitolite.com/gcs.html
4. https://github.com/bup/bup/
5. https://github.com/bup/bup/blob/master/DESIGN
6. http://www.eclipse.org/jgit/

You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to