# HG changeset patch # User Martin von Zweigbergk # Date 1550423550 28800 # Node ID 980e05204ed8de4ad3e65295050bf7e845f88f66 # Parent 31b84c72ada085e30034ae7f30e3ebb1418dda82 subrepo: use root-repo-relative path from `hg files` with ui.relative-paths=no The fix is to pass in a "subuipathfn" as we do everywhere else. Differential Revision: https://phab.mercurial-scm.org/D5978 diff -r 31b84c72ada0 -r 980e05204ed8 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Sun Feb 17 09:05:28 2019 -0800 +++ b/mercurial/cmdutil.py Sun Feb 17 09:12:30 2019 -0800 @@ -2171,11 +2171,10 @@ forgot.extend(f for f in forget if f not in rejected) return bad, forgot -def files(ui, ctx, m, fm, fmt, subrepos): +def files(ui, ctx, m, uipathfn, fm, fmt, subrepos): ret = 1 needsfctx = ui.verbose or {'size', 'flags'} & fm.datahint() - uipathfn = scmutil.getuipathfn(ctx.repo(), legacyrelativevalue=True) for f in ctx.matches(m): fm.startitem() fm.context(ctx=ctx) @@ -2188,11 +2187,13 @@ for subpath in sorted(ctx.substate): submatch = matchmod.subdirmatcher(subpath, m) + subuipathfn = scmutil.subdiruipathfn(subpath, uipathfn) if (subrepos or m.exact(subpath) or any(submatch.files())): sub = ctx.sub(subpath) try: recurse = m.exact(subpath) or subrepos - if sub.printfiles(ui, submatch, fm, fmt, recurse) == 0: + if sub.printfiles(ui, submatch, subuipathfn, fm, fmt, + recurse) == 0: ret = 0 except error.LookupError: ui.status(_("skipping missing subrepository: %s\n") diff -r 31b84c72ada0 -r 980e05204ed8 mercurial/commands.py --- a/mercurial/commands.py Sun Feb 17 09:05:28 2019 -0800 +++ b/mercurial/commands.py Sun Feb 17 09:12:30 2019 -0800 @@ -2213,8 +2213,10 @@ m = scmutil.match(ctx, pats, opts) ui.pager('files') + uipathfn = scmutil.getuipathfn(ctx.repo(), legacyrelativevalue=True) with ui.formatter('files', opts) as fm: - return cmdutil.files(ui, ctx, m, fm, fmt, opts.get('subrepos')) + return cmdutil.files(ui, ctx, m, uipathfn, fm, fmt, + opts.get('subrepos')) @command( 'forget', diff -r 31b84c72ada0 -r 980e05204ed8 mercurial/subrepo.py --- a/mercurial/subrepo.py Sun Feb 17 09:05:28 2019 -0800 +++ b/mercurial/subrepo.py Sun Feb 17 09:12:30 2019 -0800 @@ -325,7 +325,7 @@ """Resolve the fileset expression for this repo""" return matchmod.never(badfn=badfn) - def printfiles(self, ui, m, fm, fmt, subrepos): + def printfiles(self, ui, m, uipathfn, fm, fmt, subrepos): """handle the files command for this subrepo""" return 1 @@ -795,7 +795,7 @@ return ctx.flags(name) @annotatesubrepoerror - def printfiles(self, ui, m, fm, fmt, subrepos): + def printfiles(self, ui, m, uipathfn, fm, fmt, subrepos): # If the parent context is a workingctx, use the workingctx here for # consistency. if self._ctx.rev() is None: @@ -803,7 +803,7 @@ else: rev = self._state[1] ctx = self._repo[rev] - return cmdutil.files(ui, ctx, m, fm, fmt, subrepos) + return cmdutil.files(ui, ctx, m, uipathfn, fm, fmt, subrepos) @annotatesubrepoerror def matchfileset(self, expr, badfn=None): diff -r 31b84c72ada0 -r 980e05204ed8 tests/test-subrepo.t --- a/tests/test-subrepo.t Sun Feb 17 09:05:28 2019 -0800 +++ b/tests/test-subrepo.t Sun Feb 17 09:12:30 2019 -0800 @@ -36,7 +36,7 @@ $ hg files -S --config ui.relative-paths=no .hgsub a - a + s/a $ hg -R s ci -Ams0 $ hg sum