dirstate: use pathutil.normasprefix to ensure os.sep at the end of root
3cc630be5f09 replaced "os.path.join(root, '')" by
"root.endswith(os.sep)" examination, because Python 2.7.9 changes
behavior of "os.path.join(path, '')" on UNC path.
But some problematic encodings use 0x5c (= "os.sep" on Windows) as the
tail byte of some multi-byte characters, and replacement above
prevents Mercurial from working on the repository, of which root path
ends with such multi-byte character, regardless of enabling win32mbcs.
This patch uses "pathutil.normasprefix()" instead of
"root.endswith(os.sep)" examination, to ensure "os.sep" at the end of
"dirstate._rootdir" even with problematic encodings.
"root" of dirstate can be passed to "pathutil.normasprefix()" without
normalization, because it is always given from "repo.root" =
"repo.wvfs.base", which is normalized by "os.path.realpath()".
Using "util.endswithsep()" instead of "str.endswith(os.sep)" also
fixes this problem, but this patch chooses "pathutil.normasprefix()"
to centralize "adding os.sep if endswith(os.sep)" logic into it.
lib - sys sys
mercurial - sys sys
hgrc.d - sys sys
9diff.rc - sys sys
factotum.rc - sys sys
rc - sys sys
bin - sys sys
9diff - sys sys
hg - sys sys
sys - sys sys
lib - sys sys
python - sys sys
lib - sys sys
python2.5 - sys sys
site-packages - sys sys
hgext - sys sys
+ - sys sys
mercurial - sys sys
+ - sys sys
mercurial-VERSION-py2.5.egg-info - sys sys
src - sys sys
cmd - sys sys
hg - sys sys
+ - sys sys