[Commented On] D8937: rust: enable on macOS

danchr (Dan Villiom Podlaski Christiansen) phabricator at mercurial-scm.org
Fri Aug 21 15:49:36 UTC 2020


danchr added a comment.


  In D8937#133741 <https://phab.mercurial-scm.org/D8937#133741>, @Alphare wrote:
  
  > What do you mean by "mishandling removed files"? The fold map is there to give a mapping between the normalized (internal) representation of file paths and the actual ones on disk. As much as I hate the dirstate code, this is a useful part of the software that is triggered depending on your filesystem and paths used.
  
  Yeah, after posting this patch, both my testrun finished. I had one extra failure: `test-casefolding.t`. So it's obviously not correct 😕
  
  > I don't have a machine running MacOS to run the tests on, all I know is that if the repo root is on a FS that is case-insensitive, the Rust code will not be run. Also, the PathAuditor failing is not a good sign. 
  > I am currently rewriting some of the dirstate code, hopefully my experiment can make it upstream and improve the code, but I don't think "official" support for MacOS can come before we get a CI running all the tests and at least someone dogfooding it a little.
  
  I've been trying out, and as far as I can tell, the main issue is with the `PathAuditor`. Other than that, everything appears to work. I'd like to investigate further, but I'm not sure how to debug the Rust code. The error I get is this:
  
    --- .../tests/test-casefolding.t
    +++ .../tests/test-casefolding.t.err
    @@ -34,13 +34,226 @@
     
       $ hg mv a A
       $ hg mv A a
    +  ** unknown exception encountered, please report by visiting
    +  ** https://mercurial-scm.org/wiki/BugTracker
    +  ** Python 3.8.5 (default, Jul 21 2020, 18:31:18) [Clang 11.0.3 (clang-1103.0.32.62)]
    +  ** Mercurial Distributed SCM (version 5.4.1+168-120ca13cb67c+20200821)
    +  ** Extensions loaded: 
    +  Traceback (most recent call last):
    [snip]
    +    File ".../mercurial/dirstate.py", line 602, in normalize
    +      return self._normalize(path, isknown, ignoremissing)
    +    File ".../mercurial/dirstate.py", line 569, in _normalize
    +      folded = self._map.filefoldmap.get(normed, None)
    +    File ".../mercurial/util.py", line 1744, in __get__
    +      result = self.func(obj)
    +    File ".../mercurial/dirstate.py", line 1888, in filefoldmap
    +      return self._rustmap.filefoldmapasdict()
    +  TypeError: unhashable type: 'list'
    +  [1]
  
  Could you perhaps offer some pointers on how I might investigate what's going wrong?

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D8937/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D8937

To: danchr, #hg-reviewers, Alphare
Cc: Alphare, mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20200821/f12f2038/attachment-0002.html>


More information about the Mercurial-patches mailing list