Re: [PATCH v2 3/4] Integrate hash algorithm support with repo setup
- From
brian m. carlson <sandals@crustytoothpaste.net>
- Date
- Oct 30, 2017, 02:54 UTC
- Message-ID
- <20171030025405.53f4sqxlc53vqake@genre.crustytoothpaste.net>
- In-Reply-To
- <xmqq7evd8jsa.fsf@gitster.mtv.corp.google.com>
On Mon, Oct 30, 2017 at 11:13:41AM +0900, Junio C Hamano wrote:
Show 20 quoted lines
> Is the plan to allow running with multiple hash algorithms in > parallel? I thought what we want to see in the future codebase was > to have the default hash algorithm used for everything except for a > select few codepaths, and assumed that the way we achieve it is to > > - allow very low level helper functions (e.g. read_sha1_file(), > write_sha1_file_prepare(), etc.) to take a pointer to the hash > algorithm structure; > > - have higher level helper functions to call these low level > helpers with a fixed singleton instance of hash algorithm > structure that represents that default one (SHA2-something?); and > > - a few selected codepaths (e.g. index-pack that reads SHA-1 stream > and converts it into NewHash pack/index while building the object > name mapping) use an additional singleton instance of hash > algorithm structure that represents the SHA-1 hash, and the way > they use it is *NOT* by replacing "the current" one with SHA-1, > but by explicitly passing the instance to the low level helpers > as parameter.
This is consistent with my understanding as well.
Show 6 quoted lines
> So, "current" does indeed sound quite wrong, as it makes it sound as > if you can swap it anytime and ask "which one is in effect now?". > If we do not want to call the default instance "SHA-2" because we > want to prepare for migrating again by not having the name of a > concrete hash algorithm sprinkled in the codebase all over like we > currently do, why not call the instance "the_hash_algo"?
My original plan was to handle different algorithms in different submodules, but I think with the current transition plan, that becomes unnecessary, since we're going to paper over any differences that might show up. the_hash_algo should be fine, and it's consistent with the_repository and the_index as well.
Thanks for a sensible suggestion.
-- brian m. carlson / brian with sandals: Houston, Texas, US https://www.crustytoothpaste.net/~bmc | My opinion only OpenPGP: https://keybase.io/bk2204