Christian Couder <chriscool@xxxxxxxxxxxxx> writes: > Many entries with the same key but distinct values can be configured > using: > > if_exists = add_if_different > if_missing = add > > Many entries with the same key but values that can be the same can be > configured using: > > if_exists = add > if_missing = add While the above certainly can express the combinations, I am still puzzled about the value of having "under this condition" (i.e. if-exists/if-missing) and "do this" (i.e. add/add-if-different) as two separate concepts. If you do not have an existing entry with the same key, no new entry can be the same as an existing one---therefore, the former "allow only distinct values for the same key" can just say trailer."Fixes".action = add_if_different or something, without any if_exists/if_missing. In a similar way, the latter "duplicated values allowed for the same key" can say trailer."Sob".action = add You can throw into the mix other actions like "add_if_missing", you can also express "only one value allowed for the same key---the first one wins", "replace" to mean "replace if there is one with the same key", and "replace_or_add" to mean "same as 'replace', but add if there is no existing entries with the same key". Will we lose expressiveness by simplifying the semantics, getting rid of this "under this condition" part and instead making "do this" part more intelligent? Even if we assume, for the sake of discussion, that it *is* a good idea to separate "under this condition" part and "do this" part, I do not think the above is the only or the best way to express "distinct values allowed for the same key". How do we argue that this from your example if_exists = add_if_different if_missing = add is a better design than this, for example? if_key_value_exists = ignore ; exact matching <key,val> exists if_key_exists = add ; otherwise if_missing = add The latter splits remaining conditional logic from "do this" part (no more "add_if_different" that causes "add" action to see if there is the same key and act differently) and moves it to "under this condition" part. I am trying to illustrate that the line to split the "under this condition" and "do this" looks arbitrary and fuzzy here, and because of this arbitrary-ness and fuzziness, it is not very obvious to me why it is a good idea to have "under this condition" as a separate concept from "do this" settings. What is the advantage of having such an extra axis? Does it make it easier to manage? Does it allow us to express more? I can see that the location where a new entry (or a duplicated one) is added (i.e. do we prepend? do we append?) can be orthogonal to any of the above; no need to bring up 'where' in the discussion. -- 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