Subject: Re: confused about preserved permissions

From: Mike Hommey <[email-masked]>
Date: Mon, 20 Aug 2007 20:48:29 +0200

On Mon, Aug 20, 2007 at 08:40:13PM +0200, David Kastrup <[email-masked]> wrote:
> Mike Hommey <[email-masked]> writes:
> 
> > On Mon, Aug 20, 2007 at 07:58:43PM +0200, David Kastrup <[email-masked]> wrote:
> >> > I also never understood why there were no permissions set on
> >> > directories in trees...
> >> 
> >> Because directories are not actually tracked.  They are created and
> >> deleted as-needed.
> >
> > I don't see why it would prevent to have a permission set to
> > it... the permission technically can be recorded in the parent tree,
> > along its sha1. Filesystems are also like this.
> 
> No, they aren't.  Filesystems don't create and delete directories on
> the fly.  If we record any information about a directory, deleting it
> automagically would not be appropriate since we would lose information
> that has not been explicitly deleted.

git doesn't magically create directories either. It actually stores
something about them: the hash of the tree object that represents them.
And it has permissions associated with these hashes.

What it doesn't have, though, is tracking of the directory's history.

(...)
> > I think i wasn't clear enough... I just wondered why the format for tree
> > entries is something like (if you'd write it in perl):
> > sprintf "%06o %s\0%s", $mode, $file, pack("H[40]", $sha1)
> 
> Now I am sure I don't get your point.

See what a raw tree object looks like:
git-cat-file tree 708453d64796eb617cb8a1602959e00356693315

Mike