diff --git a/hgext/narrow/narrowcommands.py b/hgext/narrow/narrowcommands.py --- a/hgext/narrow/narrowcommands.py +++ b/hgext/narrow/narrowcommands.py @@ -392,9 +392,21 @@ removedincludes = narrowspec.parsepatterns(opts['removeinclude']) addedexcludes = narrowspec.parsepatterns(opts['addexclude']) removedexcludes = narrowspec.parsepatterns(opts['removeexclude']) + + only_show = not (addedincludes or removedincludes or addedexcludes or + removedexcludes or newrules) + + oldincludes, oldexcludes = repo.narrowpats + + # filter the user passed additions and deletions into actual additions and + # deletions of excludes and includes + addedincludes = set([i for i in addedincludes if i not in oldincludes]) + removedincludes = set([i for i in removedincludes if i in oldincludes]) + addedexcludes = set([i for i in addedexcludes if i not in oldexcludes]) + removedexcludes = set([i for i in removedexcludes if i in oldexcludes]) + widening = addedincludes or removedexcludes narrowing = removedincludes or addedexcludes - only_show = not widening and not narrowing # Only print the current narrowspec. if only_show: @@ -413,6 +425,10 @@ fm.end() return 0 + if not widening and not narrowing: + ui.status(_("nothing to widen or narrow\n")) + return 0 + with repo.wlock(), repo.lock(): cmdutil.bailifchanged(repo) @@ -432,7 +448,6 @@ commoninc = discovery.findcommonincoming(repo, remote) - oldincludes, oldexcludes = repo.narrowpats if narrowing: newincludes = oldincludes - removedincludes newexcludes = oldexcludes | addedexcludes diff --git a/tests/test-narrow-clone-non-narrow-server.t b/tests/test-narrow-clone-non-narrow-server.t --- a/tests/test-narrow-clone-non-narrow-server.t +++ b/tests/test-narrow-clone-non-narrow-server.t @@ -58,7 +58,11 @@ comparing with http://localhost:$HGPORT1/ searching for changes looking for local changes to affected paths + $ hg tracked --addinclude f1 http://localhost:$HGPORT1/ + nothing to widen or narrow + + $ hg tracked --addinclude f9 http://localhost:$HGPORT1/ comparing with http://localhost:$HGPORT1/ abort: server does not support narrow clones [255] diff --git a/tests/test-narrow-widen-no-ellipsis.t b/tests/test-narrow-widen-no-ellipsis.t --- a/tests/test-narrow-widen-no-ellipsis.t +++ b/tests/test-narrow-widen-no-ellipsis.t @@ -144,12 +144,7 @@ wireprotocol command $ hg tracked --addinclude widest/f - comparing with ssh://user@dummy/master - searching for changes - adding changesets - adding manifests - adding file changes - added 0 changesets with 0 changes to 0 files + nothing to widen or narrow Pull down the newly added upstream revision.