In elektra-tools a three-way merging was implemented. It can also use be used for two-way merging, e.g. for importing.
Note: For a two-way merge, the ours version of the keys is used
in place of base
-
base: ThebaseKeySet is the original version of the KeySet. -
ours: TheoursKeySet represents the user's current version of the KeySet. This KeySet differs frombasefor every key you changed. -
theirs: ThetheirsKeySet usually represents the default version of a KeySet (usually the package maintainer's version). This KeySet differs frombasefor every key someone has changed.
The three-way merge works by comparing the ours KeySet and the theirs KeySet to the base KeySet. By looking for differences in these KeySets, a new KeySet called result is created that represents a merge of these KeySets.
Currently the following strategies exist:
-
preserve: Automerge only those keys where just one side deviates from base (default).
-
ours: Whenever a conflict exists, use our version.
-
theirs: Whenever a conflict exists, use their version.
-
cut: Removes existing keys below the resultpath and replaces them with the merged keyset.
-
unchanged: (EXPERIMENTAL, only for kdb-mount) Do not fail if the operation does not change anything.
-
import: (DEPRECATED, avoid using it) Preserves existing keys in the resultpath if they do not exist in the merged keyset. If the key does exist in the merged keyset, it will be overwritten.