Re: Design of multiple hash support
- Date: Mon, 5 Nov 2018 20:03:39 +0100
- From: Duy Nguyen <pclouds@xxxxxxxxx>
- Subject: Re: Design of multiple hash support
On Mon, Nov 5, 2018 at 2:02 AM brian m. carlson
> I'm currently working on getting Git to support multiple hash algorithms
> in the same binary (SHA-1 and SHA-256). In order to have a fully
> functional binary, we'll need to have some way of indicating to certain
> commands (such as init and show-index) that they should assume a certain
> hash algorithm.
> There are basically two approaches I can take. The first is to provide
> each command that needs to learn about this with its own --hash
> argument. So we'd have:
> git init --hash=sha256
> git show-index --hash=sha256 <some-file
> The other alternative is that we provide a global option to git, which
> is parsed by all programs, like so:
> git --hash=sha256 init
> git --hash=sha256 show-index <some-file
I suppose this is about the "no repository/standalone" mode, because
- it's hard to pass global arguments down to builtin commands (we
often have to rely on global variables which are on the way out)
- global options confuse new people and also harder to reorder (if
you forget it, you have to alt-b all the way back to near the
beginning of the command line and add it there, instead of near the
- there aren't that many standalone commands
I'm leaning towards "git foo --hash=".
> There's also the question of what we want to call the option. The
> obvious name is --hash, which is intuitive and straightforward.
> However, the transition plan names the config option
> extensions.objectFormat, so --object-format is also a possibility. If
> we ever decide to support, say, zstd compression instead of zlib, we
> could leverage the same option (say, --object-format=sha256:zstd) and
> avoid the need for an additional option. This might be planning for a
> future that never occurs, though.
--object-format is less vague than --hash. The downside is it's longer
(more to type) but I'm counting on git-completion.bash and the guess
that people rarely need to use this option.