Normally when a merge sets mergeinfo on a PATH, all of PATH's children without
their own explicit mergeinfo inherit the mergeinfo, path adjusted of course,
from PATH.
Problems arise however if some of PATH's children are missing, due to authz
restrictions, switched children, sparse checkouts, etc. See these threads for a
full discussion:
http://svn.haxx.se/dev/archive-2007-04/0678.shtml
http://svn.haxx.se/dev/archive-2007-06/0595.shtml
http://svn.haxx.se/dev/archive-2007-07/0038.shtml
So we need a way to represent non-inheritable mergeinfo, specifically the
revision ranges, which are non-inheritable. At kameshj's suggestion I'm using a
'*' after the revision ranges in mergeinfo to represent non-inhertiable ranges,
e.g.:
>svn pl -v merge_tests-50\A_COPY\D\H
Properties on 'merge_tests-50\A_COPY\D\H':
svn:mergeinfo : /A/D/H:1,3-5*,7*
We are of course free to bikeshed about the use of '*'.
Supporting non-inheritable ranges in the sqlite db is the easy part.
Identifying missing paths, their parents, their siblings, and applying,
inheriting, and eliding the appropriate mergeinfo is a bit more work. Things
are coming along though and hope to have a complete patch soon.