Skip to content
Snippets Groups Projects
  1. Sep 06, 2023
  2. Aug 30, 2023
  3. Sep 04, 2023
    • Arseniy Alekseyev's avatar
      setup: make the error "Unable to find a working hg binary" more informative · 5dc7e1907e48
      Arseniy Alekseyev authored
      The error message now shows the attempted hg commands and their stderr, to
      make it easier to investigate why things are not working.
      
      Here's an example output
      
      /!\
      /!\ Unable to find a working hg binary
      /!\ Version cannot be extracted from the repository
      /!\ Re-run the setup once a first version is built
      /!\ Attempts:
      /!\   attempt #0:
      /!\     cmd:         ['hg-missing', 'log', '-r.', '-Ttest']
      /!\     exception:   [Errno 2] No such file or directory: 'hg-missing': 'hg-missing'
      /!\   attempt #1:
      /!\     cmd:         ['/usr/bin/python3', 'hg', 'log', '-r.', '-Ttest']
      /!\     return code: 255
      /!\     std output:
      /!\     std error:
      *** failed to import extension "topic": No module named 'topic'
      *** failed to import extension "evolve": No module named 'evolve'
      abort: accessing `dirstate-v2` repository without associated fast implementation.
      (check `hg help config.format.use-dirstate-v2` for details)
      /!\
      /!\ Could not determine the Mercurial version
      /!\ You need to build a local version first
      /!\ Run `make local` and try again
      /!\
      5dc7e1907e48
  4. Aug 21, 2023
  5. Aug 20, 2023
  6. Aug 10, 2023
  7. Aug 07, 2023
    • Manuel Jacob's avatar
      hgweb: encode WSGI environment using the ISO-8859-1 codec · 9ed281bbf864
      Manuel Jacob authored
      The WSGI specification (PEP 3333) specifies that on Python 3 all strings passed
      by the server must be of type str with code points encodable using the ISO
      8859-1 codec.
      
      For some reason, I introduced a bug in 2632c1ed8f34 by applying the reverse
      change. Maybe I got confused because PEP 3333 says that arbitrary operating
      system environment variables may be contained in the WSGI environment and
      therefore we need to handle the WSGI environment variables like we would handle
      operating system environment variables.
      
      The bug mentioned in the previous paragraph and fixed by this changeset
      manifested e.g. in the path of the URL being encoded in the wrong way. Browsers
      encode non-ASCII bytes with the percent-encoding. WSGI servers will decode the
      percent-encoded bytes and pass them to the application as strings where each
      byte is mapped to the corresponding code point with the same ordinal (i.e. it
      is decoded using the ISO-8859-1 codec). Mercurial uses the bytes type for these
      strings (which makes much more sense), so we need to encode it again using the
      ISO-8859-1 codec. If we use another codec, it can result in nonsense.
      9ed281bbf864
    • Raphaël Gomès's avatar
      Added signature for changeset 787af4e0e8b7 · 04d5cde28a7f
      Raphaël Gomès authored
      04d5cde28a7f
    • Raphaël Gomès's avatar
      Added tag 6.5.1 for changeset 787af4e0e8b7 · 318a66614f33
      Raphaël Gomès authored
      318a66614f33
    • Raphaël Gomès's avatar
      relnotes: add 6.5.1 · 787af4e0e8b7
      Raphaël Gomès authored
      6.5.1
      787af4e0e8b7
  8. Jun 22, 2023
  9. Jul 21, 2023
  10. Jul 13, 2023
  11. Jul 19, 2023
  12. Jul 12, 2023
  13. Jun 28, 2023
    • kiilerix's avatar
      extensions: imp module is removed in Python 3.12 - use importlib to load files · 19108906abaf
      kiilerix authored
      imp has been deprecated for a long time, and has finally been removed in Python
      3.12 .
      
      imp was only used for loading extensions that has been specified with direct
      .py path or path to a package directory. The same use cases can be achieved
      quite simple with importlib, , possiby with small changes in corner cases with
      undefined behaviour, such as extensions without .py source.
      
      There might also be corner cases and undefined behaviour around use of
      sys.modules and reloading.
      19108906abaf
  14. Jun 27, 2023
    • kiilerix's avatar
      utils: imp module is removed in Python 3.12 - get is_frozen() from _imp · 847f703a4d13
      kiilerix authored
      imp has been deprecated for a long time, and has finally been removed in Python
      3.12 .
      
      The successor importlib is using the same internal _imp module as imp, but
      doesn't expose it's is_frozen. Using the internal function directly seems like
      the cleanest solution.
      
      Another alternative to
        imp.is_frozen("__main__")
      is
        sys.modules['__main__'].__spec__.origin == 'frozen'
      but that seems even more internal and fragile.
      847f703a4d13
    • kiilerix's avatar
      extensions: address ast deprecations introduced in Python 3.12 · b9eb65a1ec14
      kiilerix authored
      Tests would fail with:
        .../mercurial/extensions.py:910: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
          if isinstance(a, ast.Str):
        .../mercurial/extensions.py:912: DeprecationWarning: ast.Bytes is deprecated and will be removed in Python 3.14; use ast.Constant instead
          elif isinstance(a, ast.Bytes):
        .../mercurial/extensions.py:913: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
          name = a.s
      b9eb65a1ec14
    • kiilerix's avatar
      vfs: handle shutil.rmtree deprecation of onerror in Python 3.12 · f173c2c23289
      kiilerix authored
      Tests would fail with warnings:
      
        .../mercurial/vfs.py:289: DeprecationWarning: onerror argument is deprecated, use onexc instead
      
      The excinfo changed slightly, but we don't use it anyway.
      f173c2c23289
    • kiilerix's avatar
      tests: fix sortdict doctest with Python 3.12 · a2df74853f8d
      kiilerix authored
      The output of OrderedDict changed to use plain dict syntax:
      
        $ python3.11 -c "import collections;print(collections.OrderedDict([('a', 0), ('b', 1)]))"
        OrderedDict([('a', 0), ('b', 1)])
      
        $ python3.12 -c "import collections;print(collections.OrderedDict([('a', 0), ('b', 1)]))"
        OrderedDict({'a': 0, 'b': 1})
      a2df74853f8d
    • kiilerix's avatar
      utils: stop using datetime.utcfromtimestamp() deprecated in Python 3.12 · faccec1edc2c
      kiilerix authored
      Python3.12 made tests fail with warnings:
        DeprecationWarning: datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.fromtimestamp(timestamp, datetime.UTC).
      
      Computing the diff while in timestamp seconds seems to preserve to the original
      intent from ae04af1ce78d.
      
      It would be nice to have some doctest coverage of this, with the problematic
      corner cases that has popped up over time...
      faccec1edc2c
  15. Jul 06, 2023
  16. Mar 30, 2023
    • Georges Racinet's avatar
      rust-revlog: fix incorrect results with NULL_NODE prefixes · bca4037306da
      Georges Racinet authored
      In case a short hash is a prefix of `NULL_NODE`, the correct revision
      number lookup is `NULL_REVISION` only if there is no match in the nodemap.
      Indeed, if there is a single nodemap match, then it is an ambiguity with the
      always matching `NULL_NODE`.
      
      Before this change, using the Mercurial development repository as a testbed (it
      has public changesets with node ID starting with `0005` and `0009`), this is
      what `rhg` did (plain `hg` provided for reference)
      
      ```
      $ rust/target/debug/rhg cat -r 000 README
      README: no such file in rev 000000000000
      $ hg cat -r 000 README
      abort: ambiguous revision identifier: 000
      ```
      
      Here is the expected output for `rhg` on ambiguous prefixes (again, before
      this change):
      
      ```
      $ rust/target/debug/rhg cat -r 0001 README
      abort: ambiguous revision identifier: 0001
      ```
      
      The test provided by 8c29af0f6d6e in `test-rhg.t` could become flaky with
      this change, unless all hashes are fixed. We expect reviewers to be more
      sure about that than we are.
      bca4037306da
    • Georges Racinet's avatar
      rust-revlog: split out method for `rev_from_node` without persistent nodemap · 0159b014f3ab
      Georges Racinet authored
      This will make easier for the bug fix that is about to come.
      0159b014f3ab
  17. Jun 08, 2023
  18. Jul 04, 2023
  19. Jul 03, 2023
Loading