Skip to content
Snippets Groups Projects
  1. Oct 01, 2020
  2. Oct 06, 2020
  3. Oct 05, 2020
  4. Oct 03, 2020
  5. Oct 04, 2020
  6. Sep 30, 2020
  7. Sep 25, 2020
    • Pierre-Yves David's avatar
      copies: directly pass a changes object to the copy tracing code · 2693659c2b34
      Pierre-Yves David authored
      The object contains all the data we need. For example, the `is_merged` callback
      can now use the associated precomputed data.
      
      This will be useful again soon when the `salvaged` set will be introduce to
      solve the issue with delete file reverted during a merge. See 4b582a93316a and
      14be07d5603c for details.
      
      Differential Revision: https://phab.mercurial-scm.org/D9117
      2693659c2b34
    • Pierre-Yves David's avatar
      copies: no longer change the sidedata flag · 7a757e893532
      Pierre-Yves David authored
      With the new sidedata storage that include data about all file changes, every
      revision has one, so the sidedata flag is not longer a good way to spot
      changeset with copy information. So we drop this check to simplify the code
      
      We optimisation itself provided an interesting speedup, so we will likely
      reintroduce something similar, with a dedicated flag, in the future.
      
      Differential Revision: https://phab.mercurial-scm.org/D9116
      7a757e893532
    • Pierre-Yves David's avatar
      copies: use dedicated `_revinfo_getter` function and call · 4f876e6b30fa
      Pierre-Yves David authored
      We want to return data in a different form, so we need different revinfo
      function. At that point it make sense to have different getter.
      
      Differential Revision: https://phab.mercurial-scm.org/D9115
      4f876e6b30fa
    • Pierre-Yves David's avatar
      copies: make two version of the changeset centric algorithm · ad6ebb6f0dfe
      Pierre-Yves David authored
      They are two main ways to run the changeset-centric copy-tracing algorithm. One
      fed from data stored in side-data and still in development, and one based on
      data stored in extra (with a "compatibility" mode).
      
      The `extra` based is used in production at Google, but still experimental in
      code. It is mostly unsuitable for other users because it affects the hash.
      
      The side-data based storage and algorithm have been evolving to store more data, cover more cases
      (mostly around merge, that Google do not really care about) and use lower level
      storage for efficiency.
      
      All this changes make is increasingly hard to maintain de common code base,
      without impacting code complexity and performance. For example, the
      compatibility mode requires to keep things at different level than what we
      need for side-data.
      
      So, I am duplicating the involved functions. The newly added `_extra` variants
      will be kept as today, while I will do some deeper rework of the side data
      versions.
      
      Long terms, the side-data version should be more featureful and performant than
      the extra based version, so I expect the duplicated `_extra` functions to
      eventually get dropped.
      
      Differential Revision: https://phab.mercurial-scm.org/D9114
      ad6ebb6f0dfe
  8. Sep 15, 2020
    • Pierre-Yves David's avatar
      changing-files: retrieve changelogrevision.files from the sidedata block · 053c9014fd39
      Pierre-Yves David authored
      The `files` field is know to have issue, using a list with fixed, and fixable,
      computation can only help. For example, using a fixes `files` field would be
      enough to fix issue6219 once this feature get usable in production.
      
      We focus on having thing working for now, we will deal with performance later.
      Right now we have a ironic situation were we parse sorted value from disk to
      turn them into a set and then having to sort it again.
      
      Differential Revision: https://phab.mercurial-scm.org/D9092
      053c9014fd39
    • Pierre-Yves David's avatar
      changing-files: drop the now useless changelogrevision argument · 9003e6524f78
      Pierre-Yves David authored
      Since all filename are now included in the sidedata block, we no longer need to decode the `files` from the revision.
      
      Differential Revision: https://phab.mercurial-scm.org/D9091
      9003e6524f78
    • Pierre-Yves David's avatar
      changing-files: rework the way we store changed files in side-data · 9a6b409b8ebc
      Pierre-Yves David authored
      We need to store new data so this is a good opportunity to rework this fully.
      
      1) We directly store the list of affected file in the side data:
      
      * This avoid having to fetch and parse the `files` list in the revision in
        addition to the sidedata. Making the data more self sufficient.
      
      * This work around situation where that `files` field contains wrong
        information, and open the way to other bug fixing (eg: issue6219)
      
      * The format (fixed initial index, sorted files) allow for fast lookup of
        filename within the structure.
      
      * This unify the storage of affected files and copies sources and destination,
        limiting the number filename stored redundantly.
      
      * This prepare for the fact we should drop the `files` as soon as we do any
        change affecting the revision schema.
      
      * This rely on compression to avoid a significant increase of the changelog.d.
        More testing on this will be done before we freeze the final format.
      
      
      2) We can store additional data:
      
      * The new "merged" field,
      
      * A future "salvaged" set recording files that might have been deleted but have
        were still present in the final result.
      
      Differential Revision: https://phab.mercurial-scm.org/D9090
      9a6b409b8ebc
  9. Oct 05, 2020
  10. Oct 02, 2020
  11. Sep 10, 2020
  12. Sep 12, 2020
    • Yuya Nishihara's avatar
      log: move --graph and topo sort options to walkopts · 224c786f4fce
      Yuya Nishihara authored
      This is the last opts.get() found in getrevs(). It might be better to define
      an enum, but for now, it is just a string.
      224c786f4fce
    • Yuya Nishihara's avatar
      log: move miscellaneous filter/matcher options to walkopts · 8fe09005ed88
      Yuya Nishihara authored
      Maybe this is the most uninteresting patch. I want to remove the dependency
      on untyped/unlabeled opts dict at all.
      
      I thought --no-merges and --only-merges could be merged into a single enum
      value, but actually they both can be set to filter out everything.
      8fe09005ed88
    • Yuya Nishihara's avatar
      log: map --removed to walkopts.force_changelog_traversal · c11099cc1de4
      Yuya Nishihara authored
      This is the flag to forcibly enable the slowpath. I'm not sure if the
      slowpath parameter should be merged with this flag, so let's keep it as
      an immutable flag for now.
      
      I'll add another flag to support "grep --all-files". These two will be the
      flags which aren't directly mapped from the command-line options.
      c11099cc1de4
  13. Sep 25, 2020
  14. Sep 28, 2020
  15. Sep 25, 2020
  16. Oct 02, 2020
  17. Oct 01, 2020
    • Martin von Zweigbergk's avatar
      rust: move rustfmt.toml to repo root so it can be used by `hg fix` · 426294d06ddc
      Martin von Zweigbergk authored
      `hg fix` runs the formatters from the repo root so it doesn't pick up
      the `rustfmt.toml` configs we had in each the `hg-core`, `hg-cpython`,
      and `rhg` packages, which resulted in warnings about `async fn` not
      existing in Rust 2015. This patch moves the `rustfmt.toml` file to the
      root so `hg fix` will use it.
      
      By putting the `rustfmt.toml` file in a higher-level directory, it
      also applies to the `chg` and `hgcli` packages. That makes
      `test-check-rust-format.t` fail, so this patch also applies the new
      formatting rules to those packages.
      
      Differential Revision: https://phab.mercurial-scm.org/D9142
      426294d06ddc
  18. Sep 29, 2020
  19. Sep 30, 2020
  20. Oct 01, 2020
  21. Sep 28, 2020
  22. Sep 25, 2020
  23. Sep 24, 2020
  24. Sep 30, 2020
    • Raphaël Gomès's avatar
      rust: start plugging the dirstate tree behind a feature gate · 496537c9c1b4
      Raphaël Gomès authored
      The previous patch added the `dirstate-tree` feature gate to enable the two
      dirstate implementations to co-habit while the tree-based one gets better.
      
      This patch copies over the code that differs, be it because the algorithm
      changed or because the borrowing rules are different.
      
      Indeed, `DirstateTree` is not observationally equivalent to the std `HashMap` in
      the APIs we use: it does not have the `Entry` API (yet?) and its iterator
      returns owned values instead of references. This last point is because the
      implementation needs to be changed to a more clever and efficient solution.
      
      Differential Revision: https://phab.mercurial-scm.org/D9133
      496537c9c1b4
    • Raphaël Gomès's avatar
      rust: introduce `dirstate-tree` cargo feature · e604a3c03ab9
      Raphaël Gomès authored
      This feature gates (at compile-time) the use of the newly-added dirstate tree.
      
      The motivation for this is that the dirstate tree is currently *very* slow;
      replacing the current hashmap-based dirstate is not a viable solution in terms
      of performance... and why would you be using the Rust implementation if not
      for performance?
      
      The feature will also help reviewers better understand the differences that
      will slowly appear as the dirstate tree gets better.
      
      Differential Revision: https://phab.mercurial-scm.org/D9132
      e604a3c03ab9
Loading