Heiko Voigt wrote: > On Tue, Mar 11, 2014 at 07:28:52PM -0700, Jonathan Nieder wrote: >> Heiko Voigt wrote: >>> +static unsigned int hash_sha1_string(const unsigned char *sha1, const char *string) >>> +{ >>> + return memhash(sha1, 20) + strhash(string); >>> +} >> >> Feels a bit unconventional. I can't find a strong reason to mind. > > Well I did not think much about this. I simply thought: hash -> kind of > random value. Adding the two together is as good as anything (even > overflow does not matter). [...] > I am fine with a switch to something different. We could use classic XOR > in case that feels better. Either + or ^ is fine with me (yeah, '^' is what I expected so '+' forced me to think for a few seconds). I don't think we have to worry much about hostile people making repos that force git to spend a long time dealing with hash collisions, so anything more complicated is probably overkill. :) [...] >> [...] >>> +static void warn_multiple_config(struct submodule_config *config, const char *option) >>> +{ >>> + warning("%s:.gitmodules, multiple configurations found for submodule.%s.%s. " >>> + "Skipping second one!", sha1_to_hex(config->gitmodule_sha1), >>> + option, config->name.buf); >> >> Ah, so gitmodule_sha1 is a commit id? > > No, this output is a bug. gitmodule_sha1 is actually the sha1 of the > .gitmodule blob we read. Thanks for noticing will fix. Should I also add > a comment to the gitmodule_sha1 field to explain what it is? [...] > with > the clarification does the name make sense now? Yep. Suggested fixes: - call it gitmodules_sha1 instead of gitmodule_sha1 (it's the blob name for .gitmodules, not the name of a module) - add a comment where the field is declared (this would make it clear that it's a blob name instead of e.g. just the SHA-1 of the text) Thanks for your thoughtfulness. Jonathan -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html