On 6/28/2019 5:42 PM, Junio C Hamano wrote: > "Derrick Stolee via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > >> +struct repo_settings { >> + char core_commit_graph; >> + char gc_write_commit_graph; >> +}; > > I do not see a particular reason to favor type "char" here. "char" > is wider than e.g. "signed int :2", if you wanted to save space > compared to a more obvious and naive type, e.g. "int". More > importantly, the language does not guarantee signedness of "char", > so the sentinel value of "-1" is a bit tricky to use, as you have to > be prepared to see your code used on an "unsigned char" platform. I was unaware that platforms could change the signedness of "char". Thanks for guarding against it. You're right that it probably isn't worth saving space here, as these values are replacing existing globals somewhere anyway. If we start worrying about these being present for each of thousands of submodules then we probably have bigger problems. > Use of "signed char" would be OK, but this is a singleton instance > per repository, so I am not sure how much it matters to save a few > words here by not using the most natural "int" type. I'll use 'int' in v2. Thanks, -Stolee