diff --git a/src/__init__.py b/src/__init__.py --- a/src/__init__.py +++ b/src/__init__.py @@ -38,8 +38,18 @@ configtable = {} configitem = registrar.configitem(configtable) -configitem('narrow', 'serveellipses', +# Narrowhg *has* support for serving ellipsis nodes (which are used at +# least by Google's internal server), but that support is pretty +# fragile and has a lot of problems on real-world repositories that +# have complex graph topologies. This could probably be corrected, but +# absent someone needing the full support for ellipsis nodes in +# repositories with merges, it's unlikely this work will get done. As +# of this writining in late 2017, all repositories large enough for +# ellipsis nodes to be a hard requirement also enforce strictly linear +# history for other scaling reasons. +configitem('experimental', 'narrowservebrokenellipses', default=False, + alias=[('narrow', 'serveellipses')], ) # Export the commands table for Mercurial to see. diff --git a/src/narrowbundle2.py b/src/narrowbundle2.py --- a/src/narrowbundle2.py +++ b/src/narrowbundle2.py @@ -222,7 +222,7 @@ include = sorted(filter(bool, kwargs.get('includepats', []))) exclude = sorted(filter(bool, kwargs.get('excludepats', []))) newmatch = narrowspec.match(repo.root, include=include, exclude=exclude) - if not repo.ui.configbool("narrow", "serveellipses"): + if not repo.ui.configbool("experimental", "narrowservebrokenellipses"): outgoing = exchange._computeoutgoing(repo, heads, common) if not outgoing.missing: return