Eric Wong <e@xxxxxxxxx> writes: > The remote-https process needs to update it's own instance of > `the_repository' when it sees an HTTP(S) remote is using sha256. > Without this, parse_oid_hex() fails to handle sha256 OIDs when > it's eventually called by parse_fetch(). > > Tested with: > > git clone https://yhbt.net/sha256test.git > GIT_SMART_HTTP=0 git clone https://yhbt.net/sha256test.git > (plain http:// also works) > > Cloning the URL via git:// required no changes OK, so smart-http is disabled because it is just a slight variation of the native Git protocol in disguise running over the http transport, while the non-smart-http uses totally different codepath to initialize the repository, and this bug does not appear when the native Git protocol is in use? I guess we use "git clone" over HTTP in many place in our tests, so there is no need to add a new one to safeguard this fix from future breakage (instead we can just run the whole test suite with SHA256)? Will wait for brian to comment. Thanks. > Signed-off-by: Eric Wong <e@xxxxxxxxx> > --- > remote-curl.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/remote-curl.c b/remote-curl.c > index 0290b04891..9d432c299a 100644 > --- a/remote-curl.c > +++ b/remote-curl.c > @@ -555,6 +555,8 @@ static void output_refs(struct ref *refs) > struct ref *posn; > if (options.object_format && options.hash_algo) { > printf(":object-format %s\n", options.hash_algo->name); > + repo_set_hash_algo(the_repository, > + hash_algo_by_ptr(options.hash_algo)); > } > for (posn = refs; posn; posn = posn->next) { > if (posn->symref)