diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1991,7 +1991,7 @@ def add(ui, repo, match, dryrun, listsub cca(f) names.append(f) if ui.verbose or not exact: - ui.status(_('adding %s\n') % match.rel(join(f))) + ui.status(_('adding %s\n') % match.rel(f)) for subpath in sorted(wctx.substate): sub = wctx.sub(subpath) @@ -2042,12 +2042,12 @@ def forget(ui, repo, match, prefix, expl if repo.wvfs.exists(f): ui.warn(_('not removing %s: ' 'file is already untracked\n') - % match.rel(join(f))) + % match.rel(f)) bad.append(f) for f in forget: if ui.verbose or not match.exact(f): - ui.status(_('removing %s\n') % match.rel(join(f))) + ui.status(_('removing %s\n') % match.rel(f)) rejected = wctx.forget(forget, prefix) bad.extend(f for f in rejected if f in match.files()) @@ -2095,10 +2095,10 @@ def remove(ui, repo, m, prefix, after, f if repo.wvfs.exists(f): if repo.wvfs.isdir(f): ui.warn(_('not removing %s: no tracked files\n') - % m.rel(join(f))) + % m.rel(f)) else: ui.warn(_('not removing %s: file is untracked\n') - % m.rel(join(f))) + % m.rel(f)) # missing files will generate a warning elsewhere ret = 1 @@ -2107,22 +2107,22 @@ def remove(ui, repo, m, prefix, after, f elif after: list = deleted for f in modified + added + clean: - ui.warn(_('not removing %s: file still exists\n') % m.rel(join(f))) + ui.warn(_('not removing %s: file still exists\n') % m.rel(f)) ret = 1 else: list = deleted + clean for f in modified: ui.warn(_('not removing %s: file is modified (use -f' - ' to force removal)\n') % m.rel(join(f))) + ' to force removal)\n') % m.rel(f)) ret = 1 for f in added: ui.warn(_('not removing %s: file has been marked for add' - ' (use forget to undo)\n') % m.rel(join(f))) + ' (use forget to undo)\n') % m.rel(f)) ret = 1 for f in sorted(list): if ui.verbose or not m.exact(f): - ui.status(_('removing %s\n') % m.rel(join(f))) + ui.status(_('removing %s\n') % m.rel(f)) wlock = repo.wlock() try: diff --git a/mercurial/match.py b/mercurial/match.py --- a/mercurial/match.py +++ b/mercurial/match.py @@ -138,7 +138,7 @@ class match(object): '''Convert repo path to a display path. If patterns or -I/-X were used to create this matcher, the display path will be relative to cwd. Otherwise it is relative to the root of the repo.''' - return (self._pathrestricted and self.rel(f)) or f + return (self._pathrestricted and self.rel(f)) or self.abs(f) def files(self): '''Explicitly listed files or patterns or roots: @@ -186,8 +186,8 @@ class narrowmatcher(match): ['b.txt'] >>> m2.exact('b.txt') True - >>> m2.rel('b.txt') - 'b.txt' + >>> util.pconvert(m2.rel('b.txt')) + 'sub/b.txt' >>> def bad(f, msg): ... print "%s: %s" % (f, msg) >>> m1.bad = bad @@ -217,6 +217,9 @@ class narrowmatcher(match): def bad(self, f, msg): self._matcher.bad(self._path + "/" + f, msg) + def rel(self, f): + return self._matcher.rel(self._path + "/" + f) + def patkind(pattern, default=None): '''If pattern is 'kind:pat' with a known kind, return kind.''' return _patsplit(pattern, default)[0] diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -773,9 +773,9 @@ def addremove(repo, matcher, prefix, opt for abs in sorted(toprint): if repo.ui.verbose or not m.exact(abs): if abs in unknownset: - status = _('adding %s\n') % m.uipath(join(abs)) + status = _('adding %s\n') % m.uipath(abs) else: - status = _('removing %s\n') % m.uipath(join(abs)) + status = _('removing %s\n') % m.uipath(abs) repo.ui.status(status) renames = _findrenames(repo, m, added + unknown, removed + deleted, diff --git a/tests/test-subrepo-deep-nested-change.t b/tests/test-subrepo-deep-nested-change.t --- a/tests/test-subrepo-deep-nested-change.t +++ b/tests/test-subrepo-deep-nested-change.t @@ -107,7 +107,7 @@ Check that deep archiving works $ mkdir sub1/sub2/folder $ echo 'subfolder' > sub1/sub2/folder/test.txt $ hg ci -ASm "add test.txt" - adding sub1/sub2/folder/test.txt (glob) + adding sub1/sub2/folder/test.txt committing subrepository sub1 committing subrepository sub1/sub2 (glob) @@ -162,10 +162,10 @@ Test relative path printing + subrepos $ rm sub1/sub2/folder/test.txt $ rm sub1/sub2/test.txt $ hg ci -ASm "remove test.txt" - adding sub1/sub2/folder/bar (glob) - removing sub1/sub2/folder/test.txt (glob) - removing sub1/sub2/test.txt (glob) - adding sub1/foo (glob) + adding sub1/sub2/folder/bar + removing sub1/sub2/folder/test.txt + removing sub1/sub2/test.txt + adding sub1/foo adding foo/bar/abc committing subrepository sub1 committing subrepository sub1/sub2 (glob)