What is mergeinfo?

Mergeinfo, the versioned property svn:mergeinfo, is the history of merges made into a given file or directory.

Explicit mergeinfo - When a path has the mergeinfo property set on it, that path is said to have explicit mergeinfo. The path can be a folder or a file.

Subtree mergeinfo - Normally mergeinfo is set only on the merge target. Subtree mergeinfo occurs:
Merge without modifying mergeinfo - There are a few cases where a merge won't create or modify mergeinfo:

Mergeinfo inheritance - If a path doesn't have explicit mergeinfo, it can still have inherited mergeinfo if it has a parent (or grandparent, or great-grandparent, etc.) with explicit mergeinfo. The concept of "nearest parent" is not limited to the working copy. When determining the inherited mergeinfo on a path with no explicit mergeinfo, Subversion will first crawl as far up the working copy as it can looking for a parent with explicit mergeinfo. If it reaches the top of the working copy and can't find such a parent, it will then ask the repository about any other parent paths, going as far as the root of the repository if necessary. Only if no inheritable mergeinfo is found in the repository can we finally say the path has no mergeinfo whatsoever. When a path inherits mergeinfo, it does so only from its nearest parent with explicit mergeinfo.

Empty mergeinfo - Empty mergeinfo is a svn:mergeinfo property that has the empty string as a value. It simply means the state of this path is as if nothing was ever merged into it.

Mergeinfo elision - At the end of every merge Subversion tries to "consolidate" any redundant subtree mergeinfo. This consolidation process is called elision. Once a merge is completed, Subversion walks the working copy tree rooted at the merge target. If it finds a path with explicit mergeinfo that has a subtree with equivalent explicit mergeinfo, then the subtree's mergeinfo is elided (removed).

Related information