terse: pconvert() entries added to the temporary terse dict for Windows
authorMatt Harbison <matt_harbison@yahoo.com>
Tue, 22 May 2018 23:22:15 -0400
changeset 38160 c974320d20b9
parent 38159 dea3903175ee
child 38161 aa10675c5dd6
terse: pconvert() entries added to the temporary terse dict for Windows Recent additional testing revealed this problem on Windows: --- tests/test-status.t.err +++ tests/test-status.t.err @@ -109,7 +109,7 @@ tweaking defaults works $ hg status --cwd a --config ui.tweakdefaults=yes - ? . + ? ../a/ ? ../b/ ? ../in_root $ HGPLAIN=1 hg status --cwd a --config ui.tweakdefaults=yes @@ -120,7 +120,7 @@ ? b/in_b (glob) ? in_root $ HGPLAINEXCEPT=tweakdefaults hg status --cwd a --config ui.tweakdefaults=yes - ? . + ? ..\a\ ? ../b/ ? ../in_root (glob) AFAICT, the status list (input and output here) is always in '/' format. The '\' printed output on Windows is because each file is run through repo.pathto() -> dirstate.pathto() -> util.pathto(). (And that function states that the argument uses '/' separators.) I fixed a similar issue in 362096cfdb1f, and given the apparent need for these strings to be in '/' format, I wonder if cmdutil.dirnode() should be rewritten to avoid os.path.join(). But it looks like all entries added to the temporary terse dict should use '/' now, and cmdutil.tersedir() looks like the only user.
mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Thu May 24 15:56:47 2018 -0600
+++ b/mercurial/cmdutil.py	Tue May 22 23:22:15 2018 -0400
@@ -552,7 +552,7 @@
     # process each sub-directory and build tersedict
     for subdir in rootobj.subdirs.values():
         for st, f in subdir.tersewalk(terseargs):
-            tersedict[st].append(f)
+            tersedict[st].append(util.pconvert(f))
 
     tersedlist = []
     for st in allst: