# HG changeset patch # User Matt Harbison # Date 1527045735 14400 # Node ID c974320d20b92f61fa9b526aa2bee380e4f0c0ee # Parent dea3903175ee28543ab7a23abbdd43d59de1ce09 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. diff -r dea3903175ee -r c974320d20b9 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: