git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Core and Not-So Core
@ 2005-05-10 15:00 Jon Seymour
  2005-05-10 15:38 ` David Woodhouse
                   ` (4 more replies)
  0 siblings, 5 replies; 41+ messages in thread
From: Jon Seymour @ 2005-05-10 15:00 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Linus Torvalds

I have been experimenting with pure-Java implementation of GIT
concepts with a goal of eventually providing plugins to Eclipse to
allow the Eclipse GUI to interact with GIT repositories.

One thing I noticed when doing this is that the present index/cache
structure is rather arbitrary and the optimum index structure is
determined by the structure of the tools that use a GIT repository
rather than the structure of the GIT repository itself.

To give a concrete example: the cache currently contains most of the
posix stat structure primarily to allow quick change detection. In the
Java world, most of the posix stat structure is not directly
accessible via the pure-Java file system abstractions. However, for
most purposes detecting changes to files modification time and file
size would be enough. Given this is the case, a Java-GIT client
doesn't need to bother getting access to a posix stat structure and
could therefore get away with a simpler  index structure, provided it
doesn't need to interoperate with a 'C'-GIT client that shared the
same workspace. A Java-GIT client might also choose to represent an
index cache as a complex serialized Java object graph or (perhaps) an
XML document.

Another example: I can imagine a variant of the index file structure
that recorded all the parents which have been merged into the cache
and automatically include this information when performing the commit.

The point is that many different index file structures are possible
and will be determined in part by the tooling created in the porcelain
layer - there really is no one true index file format as there is a
one true repository format. Different tools can use different index
file formats and still interoperate at the repository level because
only the repository format needs to have a solid, unchanging
definition.

Currently the GIT stack is structured as follows:

cogito
git-core 

I think it would be worthwhile if care was taken to draw a distinction
between the repository and the cache aspects of the git core, perhaps
even going to the extreme of moving all knowledge of the  cache into
cogito itself. By clearly drawing this distinction, we will more
easily enable the creation of different kind of tools sets atop the
foundation of the GIT repository format.

e.g., either:

cogito
git-cache
git-respository

or:

cogito-tools
cogito-cache
git-repository

Anyway, I offer this as food for thought - chew or flame away as appropriate!

jon.
-- 
homepage: http://www.zeta.org.au/~jon/
blog: http://orwelliantremors.blogspot.com/

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2005-05-18 18:41 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-10 15:00 Core and Not-So Core Jon Seymour
2005-05-10 15:38 ` David Woodhouse
2005-05-10 15:50   ` Eduardo Teixeira Dias
2005-05-10 16:00     ` David Woodhouse
2005-05-10 16:19       ` Eduardo Teixeira Dias
2005-05-10 21:45         ` Diego Calleja
2005-05-10 22:33           ` Eduardo Teixeira Dias
2005-05-10 23:03             ` Diego Calleja
2005-05-10 23:11               ` Horst von Brand
2005-05-10 22:33           ` Eduardo Teixeira Dias
2005-05-10 22:34           ` Eduardo Teixeira Dias
2005-05-10 22:44           ` Petr Baudis
2005-05-10 22:54             ` Andreas Gal
2005-05-10 23:04             ` James Purser
2005-05-11  7:17           ` Christoph Hellwig
2005-05-11  7:42             ` Jon Seymour
2005-05-10 16:22   ` Jon Seymour
2005-05-10 17:03     ` David Woodhouse
     [not found]       ` <2cfc403205051010151304d88a@mail.gmail.com>
2005-05-10 17:15         ` Jon Seymour
2005-05-10 17:25           ` David Woodhouse
2005-05-10 17:36             ` Jon Seymour
2005-05-10 17:41               ` Christoph Hellwig
     [not found]                 ` <2cfc40320505101051207c9ce4@mail.gmail.com>
2005-05-10 17:51                   ` Jon Seymour
2005-05-10 18:01                     ` Davide Libenzi
2005-05-11  1:59           ` Rik van Riel
2005-05-11  2:09             ` Jon Seymour
2005-05-11  2:14               ` Petr Baudis
2005-05-10 22:18 ` Daniel Barkalow
     [not found]   ` <2cfc40320505101605721420@mail.gmail.com>
2005-05-10 23:05     ` Jon Seymour
2005-05-10 23:08       ` Petr Baudis
2005-05-10 23:20         ` Jon Seymour
2005-05-11 16:45           ` Daniel Barkalow
     [not found]             ` <2cfc403205051114087d283279@mail.gmail.com>
2005-05-11 21:09               ` Jon Seymour
2005-05-10 22:52 ` Petr Baudis
2005-05-11  0:50   ` Jon Seymour
2005-05-11  1:17     ` Peter Williams
2005-05-11  2:30     ` Nicolas Pitre
2005-05-11  3:02       ` Jon Seymour
2005-05-11 11:21 ` Noel Grandin
2005-05-11 14:40   ` Jon Seymour
2005-05-18 18:35 ` Juliusz Chroboczek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).