# HG changeset patch # User Matt Harbison # Date 1540441362 14400 # Node ID 94c0421d67a06e2ef3c79103c472e2ba9d9d7089 # Parent 5e917b224c20102e755cbd96e467fc3263c6001d 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 diff -r 5e917b224c20 -r 94c0421d67a0 mercurial/logexchange.py --- 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