Patchwork [STABLE] logexchange: convert paths to unix when detecting the active path

login
register
mail settings
Submitter Matt Harbison
Date Oct. 25, 2018, 4:27 a.m.
Message ID <94c0421d67a06e2ef3c7.1540441622@Envy>
Download mbox | patch
Permalink /patch/36275/
State Accepted
Headers show

Comments

Matt Harbison - Oct. 25, 2018, 4:27 a.m.
# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 1540441362 14400
#      Thu Oct 25 00:22:42 2018 -0400
# Branch stable
# 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
Yuya Nishihara - Oct. 25, 2018, 10:55 a.m.
On Thu, 25 Oct 2018 00:27:02 -0400, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison@yahoo.com>
> # Date 1540441362 14400
> #      Thu Oct 25 00:22:42 2018 -0400
> # Branch stable
> # Node ID 94c0421d67a06e2ef3c79103c472e2ba9d9d7089
> # Parent  5e917b224c20102e755cbd96e467fc3263c6001d
> logexchange: convert paths to unix when detecting the active path

Also queued for stable, thanks.

Patch

diff --git a/mercurial/logexchange.py b/mercurial/logexchange.py
--- a/mercurial/logexchange.py
+++ b/mercurial/logexchange.py
@@ -105,7 +105,7 @@  def activepath(repo, remote):
     # 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 @@  def activepath(repo, remote):
     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