Re: Design of multiple hash support
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Nov 5, 2018, 19:03 UTC
- Message-ID
- <CACsJy8B+WAyjrthKs9nr=kLpx7f8k_Dug4rRdYDoBR+mmLHCuQ@mail.gmail.com>
- In-Reply-To
- <20181105010032.GN731755@genre.crustytoothpaste.net>
On Mon, Nov 5, 2018 at 2:02 AM brian m. carlson <sandals@crustytoothpaste.net> wrote:
Show 20 quoted lines
> > 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 end)
- there aren't that many standalone commands
I'm leaning towards "git foo --hash=".
Show 8 quoted lines
> 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.
-- Duy