diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -2059,10 +2059,11 @@ sub = wctx.sub(subpath) try: submatch = matchmod.subdirmatcher(subpath, match) + subprefix = repo.wvfs.reljoin(prefix, subpath) if opts.get(r'subrepos'): - bad.extend(sub.add(ui, submatch, prefix, False, **opts)) + bad.extend(sub.add(ui, submatch, subprefix, False, **opts)) else: - bad.extend(sub.add(ui, submatch, prefix, True, **opts)) + bad.extend(sub.add(ui, submatch, subprefix, True, **opts)) except error.LookupError: ui.status(_("skipping missing subrepository: %s\n") % join(subpath)) diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -518,9 +518,7 @@ @annotatesubrepoerror def add(self, ui, match, prefix, explicitonly, **opts): - return cmdutil.add(ui, self._repo, match, - self.wvfs.reljoin(prefix, self._path), - explicitonly, **opts) + return cmdutil.add(ui, self._repo, match, prefix, explicitonly, **opts) @annotatesubrepoerror def addremove(self, m, prefix, opts):