From: Jon Seymour <jon.seymour@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: Linus Torvalds <torvalds@osdl.org>
Subject: Core and Not-So Core
Date: Wed, 11 May 2005 01:00:33 +1000 [thread overview]
Message-ID: <2cfc40320505100800426d38ca@mail.gmail.com> (raw)
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/
next reply other threads:[~2005-05-10 14:54 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-10 15:00 Jon Seymour [this message]
2005-05-10 15:38 ` Core and Not-So Core 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2cfc40320505100800426d38ca@mail.gmail.com \
--to=jon.seymour@gmail.com \
--cc=git@vger.kernel.org \
--cc=jon@blackcubes.dyndns.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.