On Tue, Feb 13, 2018 at 10:57 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Stefan Beller <sbeller@xxxxxxxxxx> writes: > >> Oh, that is an interesting perspective. Here is how I arrived at the opposite >> conclusion initially: Searching for 'ignore_env' shows that we care about it >> as well for the index and graft paths, which are not the object store, hence >> it would be better kept in the repository. (The alternative would be to >> duplicate it into the raw object store, but I do not like data duplication) >> >> But maybe it is better to duplicate this one bit instead of passing through >> a larger scoped object. > > If a larger scoped repository refers to a smaller scoped > object-store, is there still a need to duplicate that bit, instead > of referring to the bit the smaller scoped one has when asking about > the bit in the larger scoped one? No (in theory). But in practice it may be worthwhile: "What's the value of this ref?" "Oh let me check the ignore_env bit that happens to live in the object store first." would be super confusing to me. > I am not sure if these "do not look at environment variables" is an > attribute of these entities---it sounds more like an attribute for > each invocation of an operation, i.e. "I want to learn where the > index is but would ignore GIT_INDEX environment for this particular > query." and "What's the value of this ref? Please honor the > common-dir environment during this query". That sounds like we want to have a configset struct eventually. For now the ignore_env bit lives in the repository, as that helps when working with submodules, when reading its comments. Unfortunately 359efeffc1 (repository: introduce the repository object, 2017-06-22) did not reason about the existence of the ignore_env flag in its commit message. > So from that point of view, it may not matter where the "bit" lives, > among repository, object-store, or ref-store. It matters on the scale of confusing the developer? Stefan