From: "Shawn O. Pearce" <spearce@spearce.org>
To: Mike Hommey <mh@glandium.org>
Cc: David Kastrup <dak@gnu.org>, git@vger.kernel.org
Subject: Re: confused about preserved permissions
Date: Mon, 20 Aug 2007 21:35:41 -0400 [thread overview]
Message-ID: <20070821013541.GC27913@spearce.org> (raw)
In-Reply-To: <20070820205042.GB10173@glandium.org>
Mike Hommey <mh@glandium.org> wrote:
> > >> > sprintf "%06o %s\0%s", $mode, $file, pack("H[40]", $sha1)
>
> The question here was why the permissions are encoded with "%06o" while
> the hash is packed. Anyways, it's just a boring detail.
Because text format is simple and pretty much everyone understands
it, especially when you are talking about UNIX mode/permission
bits in octal, the name is "text", and then oh, wait, those 40
bytes of hex is a lot of data - we'll just make that 20 bytes of
binary instead. :-)
OK, I don't know if that's really true. Probably only Linus can
speak to why the tree format is what it is. Its just how I have
rationalized it myself.
Pack v4 changes the storage of the mode to be in binary, at least
within the packfile, but it does still have to convert it back to the
"%06o" format when computing the SHA-1 of a tree object. Believe it
or not, pack v4 is being worked on again... so maybe in a future
version of Git the tree modes will take up a tiny bit less space.
I haven't specifically looked at this, but I would also suspect that
within any given tree's zlib dictionary the mode string portion is
given a reasonably short bit sequence. So its doubtful that the
mode takes up 6 bytes when compressed by zlib, its probably more
likely around 1 byte. Pack v4's big win here isn't due to the mode,
its due to the filenames being compressed better across trees.
--
Shawn.
next prev parent reply other threads:[~2007-08-21 1:36 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-20 16:44 confused about preserved permissions martin f krafft
2007-08-20 16:54 ` Pierre Habouzit
2007-08-20 17:38 ` martin f krafft
2007-08-20 17:41 ` Mike Hommey
2007-08-20 17:58 ` David Kastrup
2007-08-20 18:13 ` Mike Hommey
2007-08-20 18:44 ` David Kastrup
[not found] ` <86zm0mgicy.fsf@lola.quinscape.zz>
2007-08-20 18:48 ` Mike Hommey
2007-08-20 19:43 ` Jan Hudec
2007-08-20 19:50 ` Mike Hommey
2007-08-20 20:07 ` Alex Riesen
2007-08-20 20:10 ` Mike Hommey
2007-08-20 20:27 ` Jan Hudec
2007-08-20 20:42 ` David Kastrup
2007-08-20 20:44 ` Mike Hommey
2007-08-20 20:08 ` Jan Hudec
2007-08-20 20:39 ` David Kastrup
2007-08-20 20:50 ` Mike Hommey
2007-08-20 21:03 ` David Kastrup
2007-08-21 1:35 ` Shawn O. Pearce [this message]
2007-08-21 2:06 ` Junio C Hamano
2007-08-21 5:34 ` Mike Hommey
2007-08-21 6:04 ` David Kastrup
2007-08-21 18:01 ` René Scharfe
2007-08-21 18:01 ` [PATCH] Documentation: update tar.umask default René Scharfe
2007-08-21 21:15 ` Mike Hommey
2007-08-22 21:03 ` René Scharfe
2007-08-20 18:35 ` confused about preserved permissions Alex Riesen
2007-08-22 12:18 ` Benoit SIGOURE
2007-08-22 12:52 ` Johannes Sixt
2007-08-22 22:09 ` Junio C Hamano
2007-08-23 6:00 ` martin f krafft
2007-08-23 6:12 ` David Kastrup
2007-08-23 6:23 ` martin f krafft
2007-08-23 7:48 ` Benoit SIGOURE
2007-08-23 7:57 ` Junio C Hamano
2007-08-23 8:08 ` David Kastrup
2007-09-03 18:59 ` Jan Hudec
2007-08-23 7:03 ` Junio C Hamano
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=20070821013541.GC27913@spearce.org \
--to=spearce@spearce.org \
--cc=dak@gnu.org \
--cc=git@vger.kernel.org \
--cc=mh@glandium.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 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).