indygreg created this revision. Herald added a reviewer: durin42. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY These arguments are defined by the narrow extension. Let's teach core to recognize them so we can delete some code from the narrow extension and start to exercise the in-core code for performing a narrow clone. We have no way of easily testing it, but this change should result in .hg/requires having the narrow requirement from the time the file is written rather than added as part of pull. We'll confirm this when we delete some monkeypatched functions from the narrow extension in later commits. Test output changed because hg.clone() is now receiving patterns and validation of those values is occurring sooner, before the exchange code runs and prints the message that was deleted. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D4538 AFFECTED FILES mercurial/commands.py tests/test-narrow-clone.t tests/test-narrow.t CHANGE DETAILS diff --git a/tests/test-narrow.t b/tests/test-narrow.t --- a/tests/test-narrow.t +++ b/tests/test-narrow.t @@ -38,15 +38,12 @@ Error if '.' or '..' are in the directory to track. $ hg clone --narrow ssh://user@dummy/master foo --include ./asdf - requesting all changes abort: "." and ".." are not allowed in narrowspec paths [255] $ hg clone --narrow ssh://user@dummy/master foo --include asdf/.. - requesting all changes abort: "." and ".." are not allowed in narrowspec paths [255] $ hg clone --narrow ssh://user@dummy/master foo --include a/./c - requesting all changes abort: "." and ".." are not allowed in narrowspec paths [255] diff --git a/tests/test-narrow-clone.t b/tests/test-narrow-clone.t --- a/tests/test-narrow-clone.t +++ b/tests/test-narrow-clone.t @@ -19,13 +19,11 @@ Only path: and rootfilesin: pattern prefixes are allowed $ hg clone --narrow ssh://user@dummy/master badnarrow --noupdate --include 'glob:**' - requesting all changes abort: invalid prefix on narrow pattern: glob:** (narrow patterns must begin with one of the following: path:, rootfilesin:) [255] $ hg clone --narrow ssh://user@dummy/master badnarrow --noupdate --exclude 'set:ignored' - requesting all changes abort: invalid prefix on narrow pattern: set:ignored (narrow patterns must begin with one of the following: path:, rootfilesin:) [255] @@ -67,7 +65,6 @@ $ hg clone --narrow ssh://user@dummy/master narrow_fail --noupdate --include 'dir/src/f10 > ' - requesting all changes abort: newlines are not allowed in narrowspec paths [255] diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -43,6 +43,7 @@ hg, logcmdutil, merge as mergemod, + narrowspec, obsolete, obsutil, patch, @@ -1466,13 +1467,29 @@ if opts.get('noupdate') and opts.get('updaterev'): raise error.Abort(_("cannot specify both --noupdate and --updaterev")) + # --include/--exclude can come from narrow or sparse. + includepats, excludepats = None, None + + # hg.clone() differentiates between None and an empty set. So make sure + # patterns are sets if narrow is requested without patterns. + if opts.get('narrow'): + includepats = set() + excludepats = set() + + if opts.get('include'): + includepats = narrowspec.parsepatterns(opts.get('include')) + if opts.get('exclude'): + excludepats = narrowspec.parsepatterns(opts.get('exclude')) + r = hg.clone(ui, opts, source, dest, pull=opts.get('pull'), stream=opts.get('stream') or opts.get('uncompressed'), revs=opts.get('rev'), update=opts.get('updaterev') or not opts.get('noupdate'), branch=opts.get('branch'), - shareopts=opts.get('shareopts')) + shareopts=opts.get('shareopts'), + storeincludepats=includepats, + storeexcludepats=excludepats) return r is None To: indygreg, durin42, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel