logexchange: convert paths to unix when detecting the active path
This fixes the problem in the tests[1] where Windows was showing the whole path
as the remotename for local repositories.
Somebody with a better understanding of this extension should probably take a
deeper look. There may be other cases that need to be converted- specifically
the `elif not instance` and the missing `else` cases in activepath(). I also
noticed when adding debug prints that the absolute path is stored in the file,
probably not normalized. (It's wrapped up in $TESTTMP.)
[1] https://buildbot.mercurial-scm.org/builders/Win7%20x86_64%20hg%20tests/builds/1042/steps/run-tests.py%20%28python%202.7.13%29/logs/stdio
--- a/mercurial/logexchange.py Wed Oct 24 22:40:48 2018 -0400
+++ b/mercurial/logexchange.py Thu Oct 25 00:22:42 2018 -0400
@@ -105,7 +105,7 @@
# use the string given to us
rpath = remote
if local:
- rpath = remote._repo.root
+ rpath = util.pconvert(remote._repo.root)
elif not isinstance(remote, bytes):
rpath = remote._url
@@ -113,6 +113,11 @@
for path, url in repo.ui.configitems('paths'):
# remove auth info from user defined url
noauthurl = util.removeauth(url)
+
+ # Standardize on unix style paths, otherwise some {remotenames} end up
+ # being an absolute path on Windows.
+ url = util.pconvert(bytes(url))
+ noauthurl = util.pconvert(noauthurl)
if url == rpath or noauthurl == rpath:
rpath = path
break