diff --git a/mercurial/narrowspec.py b/mercurial/narrowspec.py --- a/mercurial/narrowspec.py +++ b/mercurial/narrowspec.py @@ -164,9 +164,15 @@ def load(repo): if profiles: raise error.Abort(_("including other spec files using '%include' is not" " supported in narrowspec")) + + validatepatterns(includepats) + validatepatterns(excludepats) + return includepats, excludepats def save(repo, includepats, excludepats): + validatepatterns(includepats) + validatepatterns(excludepats) spec = format(includepats, excludepats) repo.svfs.write(FILENAME, spec) diff --git a/tests/test-narrow-patterns.t b/tests/test-narrow-patterns.t --- a/tests/test-narrow-patterns.t +++ b/tests/test-narrow-patterns.t @@ -439,3 +439,31 @@ Illegal patterns are rejected abort: invalid prefix on narrow pattern: set:ignored (narrow patterns must begin with one of the following: path:, rootfilesin:) [255] + + $ cat .hg/store/narrowspec + [include] + path:dir1 + path:dir1/dirA + [exclude] + + $ cat > .hg/store/narrowspec << EOF + > [include] + > glob:** + > EOF + + $ hg tracked + abort: invalid prefix on narrow pattern: glob:** + (narrow patterns must begin with one of the following: path:, rootfilesin:) + [255] + + $ cat > .hg/store/narrowspec << EOF + > [include] + > path:. + > [exclude] + > set:ignored + > EOF + + $ hg tracked + abort: invalid prefix on narrow pattern: set:ignored + (narrow patterns must begin with one of the following: path:, rootfilesin:) + [255]