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"  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"  and "Git concepts simplified"  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  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  of bup  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  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.