1. 10 Sep, 2020 3 commits
  2. 01 Oct, 2020 1 commit
  3. 06 Oct, 2020 1 commit
  4. 05 Oct, 2020 1 commit
  5. 03 Oct, 2020 1 commit
  6. 04 Oct, 2020 1 commit
  7. 30 Sep, 2020 1 commit
  8. 25 Sep, 2020 4 commits
    • 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
  9. 15 Sep, 2020 3 commits
    • 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
  10. 05 Oct, 2020 1 commit
  11. 02 Oct, 2020 5 commits
  12. 29 Sep, 2020 1 commit
  13. 23 Sep, 2020 2 commits
  14. 18 Sep, 2020 2 commits
    • Pierre-Yves David's avatar
      strip: with --keep, consider all revs "removed" from the wcp (issue6270) · 2bc978921e8a
      Pierre-Yves David authored
      The current code was blink to change from other branches when stripping merges
      that are ancestors of the working copy parents.
      
      --HG--
      branch : stable
      2bc978921e8a
    • Pierre-Yves David's avatar
      test-strip: display more information highlight buggy behavior · 27822b8436bf
      Pierre-Yves David authored
      When using `hg strip --keep` on a set of changeset that contains a merge, the
      set of file considered when rebuilding the dirstate is missing files updated by
      changeset that are not directly inside the `new-parent::old-parent` range.
      
      We start with updating the test with new output highlighting the issue.
      
      This issue was spotted because that dirstate inconsistency made the test flaky.
      The new command make the test less flaky (but still wrong).
      
      --HG--
      branch : stable
      27822b8436bf
  15. 13 Sep, 2020 1 commit
    • Yuya Nishihara's avatar
      py3: fix formatting of LookupError for workingctx · bd5b2b29b82d
      Yuya Nishihara authored
      Spotted while writing broken tests for "hg grep -fr'wdir()'".
      basectx._fileinfo() raises ManifestLookupError(self._node, ..), but _node
      of the workingctx is None for historical reasons.
      
      --HG--
      branch : stable
      bd5b2b29b82d
  16. 11 Sep, 2020 1 commit
  17. 10 Sep, 2020 1 commit
  18. 12 Sep, 2020 3 commits
    • 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
  19. 25 Sep, 2020 1 commit
  20. 28 Sep, 2020 1 commit
  21. 25 Sep, 2020 1 commit
  22. 02 Oct, 2020 1 commit
  23. 01 Oct, 2020 1 commit
    • 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
  24. 30 Sep, 2020 2 commits