Patchwork D3032: narrow: add trailing slash to dir earlier for debug{revlog, index, data}

login
register
mail settings
Submitter phabricator
Date April 3, 2018, 7:11 a.m.
Message ID <differential-rev-PHID-DREV-kpvp2mwvwhzg6bwhei6f-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/30157/
State Superseded
Headers show

Comments

phabricator - April 3, 2018, 7:11 a.m.
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

Patch

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)