CM AvoidTrivialMerging

Avoid Trivial Merges

The purpose of merging is to achieve convergence, thus to reduce accidental and useless diversity. This is in line with the motto of SCM: Share to Manage, Manage to Share.

Getting insight about resources by sharing them in multiple contexts.

Now, with systematic branching strategies, one often meets the case of so-called trivial merges i.e. also, copy merges -- merges in which the contents of the target happens to be identical to this of either of the two sources.

We'll claim here that this is not a good idea, and should be avoided -- that it is a valuable goal to design one's strategy in order to avoid it.

The rationale: trivial merges result into a useless duplication, an accidental diversity. It is indifferent whether one uses either of two identical versions, therefore, this introduces a harmful noise into the dependency tree of a dependent resource. This noise will make it harder to detect real, meaningful differences.

The noise is particularly noticeable in the context of real merges: they tend to get hidden by the trivial ones. But the worst cost is paid with invalidating derived objects, thus ruining any management strategy based on them.

-- MarcGirod - 12 Sep 2005