Skip to content
Snippets Groups Projects
  1. Dec 17, 2018
  2. Dec 18, 2018
  3. Dec 17, 2018
    • Matt Harbison's avatar
      py3: spawn all python instances with legacy stdio enabled on Windows · 08f5482a6755
      Matt Harbison authored
      This fixes 6 more tests.  See ef7119cd4965.
      08f5482a6755
    • Matt Harbison's avatar
      setup: avoid attempting to invoke the system-wide hg.exe on Windows · f6987f654356
      Matt Harbison authored
      On Windows, the executable in the current directory gets priority over anything
      in $PATH (both for cmd.exe and MSYS).  That means, the former code was launching
      the local hg.exe instead of the system-wide one, if it was previously built.  If
      that failed, it then fell back to the local hg code, but run through python.exe.
      
      I'm not sure what it is about ef7119cd4965, but that started throwing up a
      messagebox that python37.dll couldn't be loaded.  (And indeed, python37 is not
      in $PATH by default.)  Invoking the local hg via the current python avoids that.
      f6987f654356
    • Boris Feld's avatar
      delta: ignore base whose chains already don't match expectations · ba09db267cb6
      Boris Feld authored
      If we know the existing chain does not match our criteria, there is no point
      to build a delta to append. This is especially useful when dealing with a full
      text much smaller than its parent. In that case, the parent chain is probably
      already too large.
      
      example affected manifest write
      before: 1.421005s
      after:  0.815520s (-42%)
      ba09db267cb6
    • Boris Feld's avatar
      delta: exclude base candidate much smaller than the target · 42f59d3f714d
      Boris Feld authored
      If a revision's full text is that much bigger than a base candidate full text,
      we no longer consider that candidate.
      
      This solves a pathological case we encountered on a very specify repository.
      It contains a long series of changesets with a very small manifest (one file)
      co-existing with others changesets using a very large manifest.
      
      Without this filtering, we ended up considering a large number of tiny full
      snapshots as a potential base. It resulted in very large delta (the size of
      the full text) and mercurial spending 99% of its time compressing these
      deltas.
      
      The timing of a commit moved from about 400s to about 10s (still slow, but not
      ridiculously slow).
      42f59d3f714d
    • Boris Feld's avatar
      perfrevflogwrite: clear revlog cache between each write · 21a9cace4bbf
      Boris Feld authored
      We want to measure write time from a cold cache (similar to commit). So we
      need to clear the cache to prevent computation from rev N-1 to interfere with
      rev N.
      21a9cace4bbf
  4. Dec 16, 2018
    • Matt Harbison's avatar
      py3: enable legacy stdio mode in exewrapper · ef7119cd4965
      Matt Harbison authored
      This drops the test failure count from 166 to 117.  The failures were typically
      in the form of `hg serve -d` spawning but crashing immediately, leaving clients
      with "bad http status" lines, connection refusals, and so forth.  The underlying
      message on the server side was either "OSError: [WinError 6] The handle is
      invalid" or "OSError: [WinError 1] Incorrect function". Additionally, no output
      was rendered if the pager was activated.  Thanks to Yuya for diagnosing the
      problem.
      
      The failure count drops to 107 when PYTHONLEGACYWINDOWSSTDIO=1 is defined in the
      environment.  These failures seem to revolve around the dummyssh server process,
      and dumbhttp.py.  So I'll probably add that to the test runner.
      
      One small regression here (only in py3) is that if hg.exe is already built, a
      messagebox appears when building it again saying that python37.dll can't be
      loaded.  Python3 isn't in PATH by default, and setup.py tries running bare `hg`
      first.  But MSYS prepends '.' to PATH, so it runs the local hg, but can't find
      the library.  It falls back to the python used to invoke setup.py, so ultimately
      it works.  I'm not sure if it's better to strip '.' from PATH or just skip right
      to `sys.executable hg` on Windows.
      
      Also, something seems to be wrong with run-tests._usecorrectpython().  I
      accidentially left off the 'PYTHON="py -3"' when building (thus making py2
      stuff), and yet managed to invoke run-tests.py with "py -3".  (And that only had
      67 failures.)
      ef7119cd4965
    • Matt Harbison's avatar
      run-tests: alias hg to hg.exe on Windows · 2465e0b27a0d
      Matt Harbison authored
      To enable legacy stdio mode on Windows, hg.exe needs to be updated.  But before
      that, we actually have to use it when running the tests.  I *think* what was
      happening before was when MSYS invoked `hg`, it looked at the shbang line and
      ran python.exe found there.  The test harness must be updating $PATH to include
      the python used to launch it, and therefore it ran py3.  As a side note, this
      also fixed `py -3 run-tests.py` (without --local), which complained about the
      space in the shbang line before this.
      
      This should also help in WSL, because the explicit '.exe' is needed to invoke a
      Windows app instead of invoking the Linux app.
      
      I have no idea why this change capitalizes Lib in the tests, as it was
      previously lowercase for both py2 and py3.
      2465e0b27a0d
    • Matt Harbison's avatar
      e1f759f1f691
    • Boris Feld's avatar
      tests: followup on network related errors on Debian 9 · 97484e1d1834
      Boris Feld authored
      First, update test-clonebundles.t which was failing since the introduction of
      the `$EADDRNOTAVAIL$` common pattern.
      
      Also update two tests from 8695fbe17f7c with a more compact condition line.
      
      Differential Revision: https://phab.mercurial-scm.org/D5445
      97484e1d1834
    • Yuya Nishihara's avatar
      py3: unimplement RevlogError.__str__() · 2393c4044214
      Yuya Nishihara authored
      On Python 2, str(exc) would crash if __str__() returned a unicode containing
      non-ASCII characters.
      2393c4044214
    • Yuya Nishihara's avatar
      py3: use forcebytestr() to stringify hook exception · 8c8fcb385c46
      Yuya Nishihara authored
      This fixes test-narrow-exchange.t.
      8c8fcb385c46
    • Matt Harbison's avatar
      color: fix a documentation typo · 7654291091cf
      Matt Harbison authored
      7654291091cf
    • Matt Harbison's avatar
      py3: quote $PYTHON in test-patchbomb.t for Windows · 55fcdb73c88b
      Matt Harbison authored
      I couldn't get the quoting right in the environment variable, so now it's a
      function.
      55fcdb73c88b
  5. Oct 16, 2018
  6. Dec 06, 2018
  7. Dec 03, 2018
    • Georges Racinet's avatar
      rust-cpython: start cpython crate bindings · 5532823e8c18
      Georges Racinet authored
      This changeset introduces the hg-cpython crate,
      that compiles as a shared library holding a whole
      Python package (mercurial.rustext), with only the empty
      'ancestor' submodule for now.
      
      Such bindings will be easier and safer to develop and maintain
      that those of `hg-direct-ffi`.
      They don't involve C code, only unsafe Rust that's mostly isolated
      within the cpython crate.
      
      The long-term goal would be to import the provided modules, such
      as rustext.ancestor with mercurial.policy.importmod, same as
      we already do with cext modules.
      
      Differential Revision: https://phab.mercurial-scm.org/D5434
      5532823e8c18
    • Georges Racinet's avatar
      rust-cpython: exclude hgcli from workspace · 98a0fbda8739
      Georges Racinet authored
      hgcli uses a specific rust-cpython commit by indygreg, of which
      a PR has been derived which is not merged nor released yet.
      
      But we can't use several versions of the sys-python2.7 crate in
      a single workspace: it makes for a build error. Since hgcli does not at
      the time being need anything from hg-core, whereas the upcoming hg-cpython
      will. So for now we're moving hgcli aside, hoping we could base all of them
      on the same version of rust-cpython again in the future.
      
      Differential Revision: https://phab.mercurial-scm.org/D5433
      98a0fbda8739
  8. Dec 14, 2018
  9. Nov 29, 2018
    • Georges Racinet's avatar
      rust: translation of missingancestors · d097dd0afc19
      Georges Racinet authored
      This is as direct as possible a translation of the ancestor.missingancestors
      Python class in pure Rust. The goal for this changeset is to make it easy
      to compare with the Python version.
      
      We also add to Python tests the cases that helped us develop and debug
      this implementation.
      
      Some possible optimizations are marked along the way as TODO comments
      
      Differential Revision: https://phab.mercurial-scm.org/D5416
      d097dd0afc19
  10. Dec 14, 2018
  11. Dec 06, 2018
    • Boris Feld's avatar
      delta: filter nullrev out first · f960c51eebf3
      Boris Feld authored
      When picking a potential candidate, we filter them on various criteria. The
      "different from nullrev" criteria is very fast to compute and we should
      process it first.
      f960c51eebf3
    • Boris Feld's avatar
      perf: report more of the higher range in perfrevlogwrite · 74ee5ff1e81c
      Boris Feld authored
      Since the delta chain length is limited to 1000 revisions, we get a new
      snapshot about every 1000 revisions. If we assume that the snapshot will be
      most of the slowest revision, the current display (99% and max) are not very
      precise in their area. We now include more information about this space in the
      default report.
      74ee5ff1e81c
  12. Dec 14, 2018
Loading