Skip to content
Snippets Groups Projects
  1. Feb 08, 2022
  2. Feb 07, 2022
  3. Jan 18, 2022
  4. Jan 14, 2022
  5. Feb 10, 2022
  6. Feb 05, 2022
  7. Feb 10, 2022
  8. Feb 03, 2022
  9. Jan 21, 2022
    • Simon Sapin's avatar
      status: prefer relative paths in Rust code · 94e36b23
      Simon Sapin authored
      … when the repository root is under the current directory,
      so the kernel needs to traverse fewer directory in every call
      to `read_dir` or `symlink_metadata`.
      
      Better yet would be to use libc functions like `openat` and `fstatat`
      to remove such repeated traversals entirely, but the standard library
      does not provide APIs based on those.
      Maybe with a crate like https://crates.io/crates/openat instead?
      
      Benchmarks of `rhg status` show that this patch is neutral in some configurations,
      and makes the command up to ~20% faster in others.
      Below is semi-arbitrary subset of results. The four numeric columns are:
      time (in seconds) with this changeset’s parent, time with this changeset,
      time difference (negative is better), time ratio (less than 1 is better).
      
      ```
      mercurial-dirstate-v1 | default-plain-clean.no-iu.pbr            | 0.0061 -> 0.0059: -0.0002 (0.97)
      mercurial-dirstate-v2 | default-plain-clean.no-iu.pbr            | 0.0029 -> 0.0028: -0.0001 (0.97)
      mozilla-dirstate-v1   | default-plain-clean.no-iu.pbr            | 0.2110 -> 0.2102: -0.0007 (1.00)
      mozilla-dirstate-v2   | default-copies-clean.ignored.pbr         | 0.0489 -> 0.0401: -0.0088 (0.82)
      mozilla-dirstate-v2   | default-copies-clean.no-iu.pbr           | 0.0479 -> 0.0393: -0.0085 (0.82)
      mozilla-dirstate-v2   | default-copies-large.all.pbr             | 0.1262 -> 0.1210: -0.0051 (0.96)
      mozilla-dirstate-v2   | default-copies-small.ignored-unknown.pbr | 0.1262 -> 0.1200: -0.0062 (0.95)
      mozilla-dirstate-v2   | default-copies-small.ignored.pbr         | 0.0536 -> 0.0417: -0.0119 (0.78)
      mozilla-dirstate-v2   | default-copies-small.no-iu.pbr           | 0.0482 -> 0.0393: -0.0089 (0.81)
      mozilla-dirstate-v2   | default-plain-clean.ignored.pbr          | 0.0518 -> 0.0402: -0.0116 (0.78)
      mozilla-dirstate-v2   | default-plain-clean.no-iu.pbr            | 0.0481 -> 0.0392: -0.0088 (0.82)
      mozilla-dirstate-v2   | default-plain-large.all.pbr              | 0.1271 -> 0.1218: -0.0052 (0.96)
      mozilla-dirstate-v2   | default-plain-small.ignored-unknown.pbr  | 0.1225 -> 0.1202: -0.0022 (0.98)
      mozilla-dirstate-v2   | default-plain-small.ignored.pbr          | 0.0510 -> 0.0418: -0.0092 (0.82)
      mozilla-dirstate-v2   | default-plain-small.no-iu.pbr            | 0.0480 -> 0.0394: -0.0086 (0.82)
      netbeans-dirstate-v1  | default-plain-clean.no-iu.pbr            | 0.1442 -> 0.1422: -0.0020 (0.99)
      netbeans-dirstate-v2  | default-plain-clean.no-iu.pbr            | 0.0325 -> 0.0282: -0.0043 (0.87)
      ```
      
      Differential Revision: https://phab.mercurial-scm.org/D12175
      94e36b23
  10. Feb 14, 2022
  11. Feb 07, 2022
    • sliquister's avatar
      sparse: rework debugsparse's interface · a6efb918
      sliquister authored
      hg debugsparse supports arguments like --include, similar to `hg
      tracked --addinclude` or `hg log --include`. But in `hg debugsparse`,
      the pattern is not an argument of the flag, instead the patterns are
      the anonymous command line arguments.
      
      Not only is this surprising, it makes it impossible to use --include
      and --exclude in the same invocation, or --reset --exclude.
      
      So I propose making debugsparse making --include, --exclude take an
      argument, and rejecting anonymous command line arguments, as well as
      allowing mixing several of these flags in one invocations.
      
      Differential Revision: https://phab.mercurial-scm.org/D12155
      a6efb918
  12. Feb 09, 2022
    • Mitchell Hentges's avatar
      color: don't infer vt status from TERM on Windows · fd2cf9e0
      Mitchell Hentges authored
      Previously, it was assumed that Windows environments with
      "xterm" in the TERM environment variable meant that either
      "virtual terminal mode" was already enabled, or that
      we are running in an environment that didn't need a "virtual
      terminal mode" (such as mintty, that interprets ANSI sequences
      itself).
      
      However, modern Cygwin and MSYS2 set TERM=xterm when using the
      Command Prompt as the terminal, which needs "virtual terminal
      mode" to be manually enabled. However, due to (issue6640),
      the vtmode wasn't being enabled.
      
      This patch ensures that we always try to enable vtmode on
      Windows regardless of the state of TERM, so that:
      * ANSI-based colors work in modern Cygwin/MSYS2 (with Command
        Prompt), and
      * The vtmode is unnecessarily set when running in a different
        terminal such as mintty, but it is simply redundant and doesn't
        appear to have ill effects.
      
      Differential Revision: https://phab.mercurial-scm.org/D12158
      fd2cf9e0
  13. Feb 10, 2022
  14. Feb 08, 2022
  15. Feb 10, 2022
  16. Feb 09, 2022
  17. Feb 07, 2022
  18. Jan 26, 2022
  19. Feb 07, 2022
  20. Feb 06, 2022
    • Anton Shestakov's avatar
      branchmap: don't add branch entries if there are no heads · 8b393f40
      Anton Shestakov authored
      We definitely don't want any empty entries to be present in repo.branchmap()
      just for the sake of not breaking test-notify.t.
      
      No test changes required because the previous patch made notify extension to
      not raise any tracebacks in case of RepoLookupErrors.
      
      Differential Revision: https://phab.mercurial-scm.org/D12135
      8b393f40
    • Anton Shestakov's avatar
      notify: don't produce errors if a revision is not found · ae27a068
      Anton Shestakov authored
      Notify extension has a way to only subscribe to a specific revset, such as
      "branch(foo)". Before this patch, when there was no branch with that name, it
      would produce a traceback saying "unknown revision: foo". With this patch it
      would no longer do that, and instead it'll assume there are no revisions that
      match this revset. I think this patch is an improvement in general, but there's
      a reason I'm sending it now.
      
      test-notify.t has a test case where it obsoletes the only revision on a branch,
      and previously that wouldn't produce any complications, because head
      computation wasn't obsolescence-aware. Now if the only revision on a branch is
      obsolete, repo should not see that branch at all.
      
      That branch will still be present in branchcache (with an empty list of
      revisions) until the next patch.
      
      Differential Revision: https://phab.mercurial-scm.org/D12134
      ae27a068
  21. Feb 03, 2022
    • Pierre-Yves David's avatar
      narrow: allow merging non-conflicting change outside of the narrow spec · f1eb77dc
      Pierre-Yves David authored
      We use the mergestate to carry information about these merge action and
      reprocess them at commit time to apply the necessary update.
      
      The dirstate itself is never affected and remains "pure", with content only in
      the narrow-spec. This file involved in such merge are therefor not listed in `hg
      status`.
      
      The current testing is based on a modification of the previous testing, that
      refused to do such merges. As a result it is a bit simple and more extensive
      code and testing testing will have to be introduced later. I am planning to do
      this extra testing, soon.
      
      In addition, this only works for flat manifest. Support for tree manifest will
      need more work. I am not currently planning to do this work.
      
      Differential Revision: https://phab.mercurial-scm.org/D12119
      f1eb77dc
  22. Jan 30, 2022
  23. Jan 29, 2022
  24. Jan 28, 2022
Loading