Re: [PATCH] setup: recognise extensions.objectFormat
- From
Stefan Beller <sbeller@google.com>
- Date
- Jan 26, 2018, 18:06 UTC
- Message-ID
- <CAGZ79kbV0-z46O5=E1Y7ZxzvNr+YJG+q-5AunXbEFF=7Od2U3Q@mail.gmail.com>
- In-Reply-To
- <CACsJy8BFsXAMAGYjKp8EBrepqZwgKrAtqRKyiKLOydWbpzZWWA@mail.gmail.com>
On Thu, Jan 25, 2018 at 2:08 AM, Duy Nguyen <pclouds@gmail.com> wrote:
Show 21 quoted lines
> On Wed, Jan 24, 2018 at 8:09 PM, Patryk Obara <patryk.obara@gmail.com> wrote: >> This extension selects which hashing algorithm from vtable should be >> used for reading and writing objects in the object store. At the moment >> supports only single value (sha-1). >> >> In case value of objectFormat is an unknown hashing algorithm, Git >> command will fail with following message: >> >> fatal: unknown repository extensions found: >> objectformat = <value> >> >> To indicate, that this specific objectFormat value is not recognised. >> >> The objectFormat extension is not allowed in repository marked as >> version 0 to prevent any possibility of accidentally writing a NewHash >> object in the sha-1 object store. This extension behaviour is different >> than preciousObjects extension (which is allowed in repo version 0). > > This config is so sensitive I wonder if we should forbid changing it > via git-config. You can't simply change this and expect anything to > work anyway.
You may have a local tool to do so, "git convert-repo-to <newhash>", that would also adjust this setting.
I'd second Johannes to not add special error handling and forbidding git-config to change this setting.
> "git init" can have an option to specify object format.
makes sense.
> "git clone" > naturally inherits the format from the remote repository.
not necessarily. As the hash transition plan suggests, you'd start with a local conversion, so it would make sense to have a "clone --convert-locally-to <newhash>" flag.
Show 6 quoted lines
> Maybe a > future command allows to convert hash algorithm on an existing repo > (*). But other than that nobody is allowed to change this. > > (*) it's probably git-clone that does this job, cloning and converting > at the same time.
I think we also need on-the-fly conversion in fetch/push, so we can work converted locally, but pretend to the outside we speak sha1 just fine.,
Stefan