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
--- 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")
--- 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',
--- 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):
--- 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