Re: Re: [ANNOUNCE] git-pasky-0.3

Linus Torvalds
2005-04-13T14:37:01Z

On Wed, 13 Apr 2005, David Woodhouse wrote:
>
> I'd even like to see support for using multiple branches checked out of
> the same .git/ repository.

David, we already can. The objects are _designed_ to be shared.

However, that is the ".git/objects" subdirectory. Not the per-view stuff.
For each _view_ you do need to have view-specific data, and the view index
very much is that. That's ".git/index".

The index file isn't small - it's about 1.6MB for a kernel tree, because
it needs to list every single file we know about, its "stat" information,
and it's sha1 backing store. So multiply 17,000 by ~40, and add in the
size of the name of each file, and avoid compression because this is read
and written _all_ the time, and you end up with 1.6MB.

But you _need_ one per checked-out tree. And it really _is_ private. It's
not supposed to be shared. In fact, it _cannot_ be shared, because it
doesn't have sufficient locking (it has some, but that's just to catch
_errors_ when somebody tries to do two operations that update the index
file at the same time in the same view). But even ignoring the locking
issues, it just isn't appropriate, it's not how that file works.

In other words, that index file simply _cannot_ be shared. Don't even
think about it. Only madness will ensue.

Linus