This instance will be upgraded to Heptapod 0.27.1 on 2021-12-08 at 22:00 UTC+1 (a few minutes of down time)

  1. 16 Jul, 2020 1 commit
  2. 15 Jul, 2020 1 commit
  3. 16 Jul, 2020 1 commit
  4. 07 Jul, 2020 6 commits
  5. 01 Jun, 2020 3 commits
    • Manuel Jacob's avatar
      absorb: make it explicit if empty changeset was created · f55099982bc5
      Manuel Jacob authored
      If the config rewrite.empty-successor=skip is set, a message "became empty and
      was dropped" is shown if the changeset became empty. If the config
      rewrite.empty-successor=keep is set, absorb may create changesets even if they
      became empty. It’s probably a good idea to make that explicit. Therefore the
      message is changed to be a combination of both: "became empty and became ...".
      Repeating the word "became" is not very elegant. This results from the fact
      that "became" was and is overloaded to indicate both the change from non-empty
      to empty and the successor relation. In the combinated message, both meanings
      are used in one sentence.
    • Manuel Jacob's avatar
      absorb: consider rewrite.empty-successor configuration · 3ee8e2d5c0d8
      Manuel Jacob authored
      This adds support for the recently added rewrite.empty-successor configuration.
    • Manuel Jacob's avatar
      rebase: consider rewrite.empty-successor configuration · 1efbfa9b36a7
      Manuel Jacob authored
      This adds support for the recently added rewrite.empty-successor configuration.
  6. 12 Jul, 2020 1 commit
  7. 11 Jul, 2020 1 commit
    • Manuel Jacob's avatar
      config: add option to control creation of empty successors during rewrite · b6269741ed42
      Manuel Jacob authored
      The default for many history-rewriting commands (e.g. rebase and absorb) is
      that changesets which would become empty are not created in the target branch.
      This makes sense if the source branch consists of small fix-up changes. For
      more advanced workflows that make heavy use of history-editing to create
      curated patch series, dropping empty changesets is not as important or even
      Some users want to keep the meta-history, e.g. to make finding comments in a
      code review tool easier or to avoid that divergent bookmarks are created. For
      that, obsmarkers from the (to-be) empty changeset to the changeset(s) that
      already made the changes should be added. If a to-be empty changeset is pruned
      without a successor, adding the obsmarkers is hard because the changeset has to
      be found within the hidden part of the history.
      If rebasing in TortoiseHg, it’s easy to miss the fact that the to-be empty
      changeset was pruned. An empty changeset will function as a reminder that
      obsmarkers should be added.
      Martin von Zweigbergk mentioned another advantage. Stripping the successor will
      de-obsolete the predecessor. If no (empty) successor is created, this won’t be
      In the future, we may want to consider other behaviors, like e.g. creating the
      empty successor, but pruning it right away. Therefore this configuration
      accepts 'skip' and 'keep' instead of being a boolean configuration.
  8. 31 Aug, 2019 1 commit
  9. 06 Jul, 2020 2 commits
  10. 07 Jul, 2020 2 commits
    • Jörg Sonnenberger's avatar
      phases: sparsify phase lists · b1e51ef4e536
      Jörg Sonnenberger authored
      When the internal and archived phase was added, allphase became a large,
      sparsely populated list. This dramatically increased the number of
      lookup operations for public relations in `phasecache.phase`. As a first
      step, define allphases and related lists explicitly to contain only the
      actual phases. Make phasenames a dictionary and create corresponding
      dictionaries for mapping phase names back to numbers. Adjust various
      list to be sparse as well with the exception of phaseroots and phasesets
      members of phasecache. Keep those as a separate step as it involves
      changes to the C module.
      Differential Revision:
    • Jörg Sonnenberger's avatar
      phases: updatephases should not skip internal phase · 361a7444bc41
      Jörg Sonnenberger authored
      Historically, updatephases used to skip the secret phase, but wasn't
      updated when archived and internal were added.
      Differential Revision:
  11. 27 Jun, 2020 1 commit
  12. 07 Jul, 2020 1 commit
  13. 24 Jun, 2020 3 commits
    • Raphaël Gomès's avatar
      hg-core: define a `dirstate_status` `Operation` · 98817e5daca7
      Raphaël Gomès authored
      This is 3/3 in a series of patches to improve dirstate status' code.
      Following in the footsteps of a46e36b82461, we move the main status
      functionality to an `Operation`. This will most likely be subject to change in
      the future (what function signature, what parameters, etc., but we will see
      when `rhg` gets `hg status` support.
      Differential Revision:
    • Raphaël Gomès's avatar
      rust-status: improve documentation and readability · 470d306e616c
      Raphaël Gomès authored
      This patch is 2/3 in the series to improve the dirstate status code. It adds a
      number of common type aliases to add more obvious semantics to function
      signatures, improves/adds documentation where necessary and improves one or two
      patterns to be more idiomatic.
      Differential Revision:
    • Raphaël Gomès's avatar
      rust-status: refactor status into a struct · 7528699c6ccb
      Raphaël Gomès authored
      The code for `dirstate/status` has grown too large for comfort, this is the
      first of three patches that try to improve maintainability.
      In this patch, refactoring dirstate's status into a struct allows for slimming
      down function signatures drastically, keeping the mental (and maintenance)
      burden lower, since pretty much all of them shared a few common arguments.
      This had the pleasant side-effect of simplifying lifetimes a little. This has
      no observable impact on performance.
      The next patch will add/improve documentation and refactor some types. I tried
      to keep new code down to a minimum in this patch because it's already pretty
      Differential Revision:
  14. 14 Dec, 2019 2 commits
  15. 22 Jun, 2020 1 commit
  16. 14 Apr, 2020 2 commits
  17. 14 Jul, 2020 1 commit
    • Martin von Zweigbergk's avatar
      extensions: make `hg nonexistent` not crash with PyOxidizer · 5d09a120b4be
      Martin von Zweigbergk authored
      When running `hg nonexistent`, we try to look for extensions that
      provide that command. We do that by looking for files in the
      `hgext.__file__` directory. However, PyOxidizer doesn't provide a
      `__file__`, so we crash when running with PyOxidizer.
      We should be able to look for the command in built-in extensions, but
      we seem to already have code for skipping the scan when running in a
      frozen binary, so I just modified that code instead.
      By the way, it also seems like we should be able to search for
      extensions in the `hgext3rd` module, but we don't do that yet either
      (before or after this patch).
      Differential Revision:
  18. 09 Jul, 2020 1 commit
  19. 15 Jul, 2020 1 commit
  20. 13 Jul, 2020 2 commits
  21. 09 Jul, 2020 1 commit
  22. 15 Jul, 2020 1 commit
  23. 14 Jul, 2020 1 commit
  24. 08 Jul, 2020 2 commits
    • Manuel Jacob's avatar
      archival: abort if compression method is unavailable · 2c0043977b6d
      Manuel Jacob authored
      `tarfile.CompressionError` is documented to be the "exception for unavailable
      compression methods".
      Also, make tests conditional on whether the lzma module is available or not.
      branch : stable
    • Manuel Jacob's avatar
      demandimport: ignore `lzma` module for demandimport · 40120de810ba
      Manuel Jacob authored
      This makes importing the module fail if the `_lzma` module is not present.
      This makes e.g. tarfile correctly recognize if LZMA support is not present. It
      changes the exception
          File "/usr/lib/python3.6/", line 1694, in xzopen
            fileobj = lzma.LZMAFile(fileobj or name, mode, preset=preset)
        AttributeError: module 'lzma' has no attribute 'LZMAFile'
      to the more correct exception
          File "/usr/lib/python3.6/", line 1692, in xzopen
            raise CompressionError("lzma module is not available")
        tarfile.CompressionError: lzma module is not available
      Also, it prevents that the error "abort: No module named '_lzma'!" is shown when
      a development warning is to be shown. The reason why that happened is that for
      showing the warning, we get information about the stack frames from the inspect
      module, which accesses the `__file__` attribute of all modules in `sys.modules`
      to build some cache, causing all modules (including `lzma`) to be imported.
      branch : stable
  25. 06 Jul, 2020 1 commit