From patchwork Tue Apr 3 07:11:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D3032: narrow: add trailing slash to dir earlier for debug{revlog, index, data} From: phabricator X-Patchwork-Id: 30157 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Tue, 3 Apr 2018 07:11:27 +0000 martinvonz created this revision. Herald added a reviewer: durin42. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY The treemanifest code internally uses trailing slashes on directories (except for the root directory, which is an empty string). We should make sure we pass in directories with trailing slashes when we work with the treemanifest code. For some reason, I seem to have decided to be nice to the callers instead in https://phab.mercurial-scm.org/rHG49c583ca48c4f53f34151bcce13729913feaac9b (treemanifest: add --dir option to debug{revlog,data,index}, 2015-04-12). Let's fix that and pay the cost of fixing up the directory name close close to where we get it from the user. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D3032 AFFECTED FILES hgext/narrow/narrowrevlog.py mercurial/cmdutil.py mercurial/manifest.py CHANGE DETAILS To: martinvonz, durin42, #hg-reviewers Cc: mercurial-devel diff --git a/mercurial/manifest.py b/mercurial/manifest.py --- a/mercurial/manifest.py +++ b/mercurial/manifest.py @@ -1160,8 +1160,6 @@ if dir: assert self._treeondisk, 'opts is %r' % opts - if not dir.endswith('/'): - dir = dir + '/' if indexfile is None: indexfile = '00manifest.i' diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1058,6 +1058,8 @@ if 'treemanifest' not in repo.requirements: raise error.Abort(_("--dir can only be used on repos with " "treemanifest enabled")) + if not dir.endswith('/'): + dir = dir + '/' dirlog = repo.manifestlog._revlog.dirlog(dir) if len(dirlog): r = dirlog diff --git a/hgext/narrow/narrowrevlog.py b/hgext/narrow/narrowrevlog.py --- a/hgext/narrow/narrowrevlog.py +++ b/hgext/narrow/narrowrevlog.py @@ -117,8 +117,6 @@ # at least some push operations. This will be used to wrap/exclude the # child directories when using treemanifests. def dirlog(self, d): - if d and not d.endswith('/'): - d = d + '/' if not repo.narrowmatch().visitdir(d[:-1] or '.'): return excludedmanifestrevlog(d) result = super(narrowmanifestrevlog, self).dirlog(d)