1. 23 Oct, 2020 1 commit
  2. 01 Jun, 2020 2 commits
  3. 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
      undesirable.
      
      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
      possible.
      
      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.
      b6269741ed42
  4. 18 Jan, 2020 1 commit
  5. 18 Dec, 2019 3 commits
  6. 12 Dec, 2019 1 commit
  7. 15 Nov, 2019 1 commit
  8. 14 Nov, 2019 1 commit
    • Matt Harbison's avatar
      help: create packages for the help text · 2e017696181f
      Matt Harbison authored
      These files need to be loaded as resources with PyOxidizer, instead of using
      filesystem representations.  AFAICT, the resource loading mechanisms only work
      for the named package given to it, and can't reach into a subdirectory.
      
      While here, the `help` directory is renamed to `helptext`.  Without this, trying
      to load external help text crashed in mercurial/help.py when importing `.i18n`,
      saying there's no `mercurial.help.i18n` module.
      
      Differential Revision: https://phab.mercurial-scm.org/D7376
      2e017696181f
  9. 23 Jun, 2019 1 commit
  10. 05 Oct, 2019 1 commit
  11. 30 Jan, 2019 1 commit
  12. 24 Oct, 2018 1 commit
  13. 25 Oct, 2018 1 commit
  14. 05 Jun, 2019 1 commit
    • Valentin Gatien-Baron's avatar
      profiling: show actual time spent in hotpath display · 0ae593e791fb
      Valentin Gatien-Baron authored
      To get, for instance:
      
      ...
       \  6.6%  4.08s  lock.py:        __exit__          line 1566: ...
         |  6.5%  4.01s  exchange.py:    close           line 1191: ...
         |  6.5%  4.01s  transaction.py: _active         line 1443: ...
         |  6.5%  4.01s  transaction.py: close           line 47:   ...
         |  6.2%  3.84s  scmutil.py:     wrapped         line 529:  ...
         |  6.2%  3.81s  localrepo.py:   wrapper         line 2114: ...
         |  6.2%  3.81s  localrepo.py:   updatecaches    line 177:  ...
         ...
      
      instead of:
      
      ...
       \  6.6%  lock.py:        __exit__          line 1566: ...
         |  6.5%  exchange.py:    close           line 1191: ...
         |  6.5%  transaction.py: _active         line 1443: ...
         |  6.5%  transaction.py: close           line 47:   ...
         |  6.2%  scmutil.py:     wrapped         line 529:  ...
         |  6.2%  localrepo.py:   wrapper         line 2114: ...
         |  6.2%  localrepo.py:   updatecaches    line 177:  ...
         ...
      
      I find that if it's not displayed, I frequently end up estimating the
      numbers by hand.
      
      Differential Revision: https://phab.mercurial-scm.org/D6477
      0ae593e791fb
  15. 12 Jan, 2019 1 commit
  16. 08 Jan, 2019 1 commit
  17. 04 Jan, 2019 1 commit
  18. 03 Jan, 2019 1 commit
  19. 31 Jul, 2018 1 commit
  20. 20 Jul, 2018 1 commit
    • Boris Feld's avatar
      config: rename `revlog` section into `storage` · ae17555ef93f
      Boris Feld authored
      The idea was suggested by Gregory Szorc on IRC. It is more generic and seems
      better. It is probably best to rename the section before it ever makes into an
      official (non-rc) release.
      
      The only config option currently in this section have been prefixed with
      `revlog` to clarify it applies to `revlog` related storage.
      
      --HG--
      branch : stable
      ae17555ef93f
  21. 19 Jul, 2018 2 commits
    • Boris Feld's avatar
      aggressivemergedelta: document rename and move to `revlog` section · 913ca175c4ae
      Boris Feld authored
      The config does not follow our naming guideline and "Aggressive" is probably a
      word to keep away from users.
      
      The option does not truly fit in the `format` section. It can be turned on and
      off for existing repository without much consequence regarding compatibility.
      
      A new `revlog` option is created to control behavior related to revlog writing
      and reading. We can see multiple other config options that could be migrated
      there.
      
      * format.maxchainlen
      * experimental.mmapindexthreshold
      * experimental.sparse-read.density-threshold (in an updated form)
      * experimental.sparse-read.min-gap-size (in an updated form)
      
      In addition, we can foresee at least a couple of sparse-revlog related option
      coming too (to reduce delta chain length and increase snapshot reuse)
      
      These two extra options might fit there too. Unless we want to create a
      section dedicated to caches and performance.
      
      * format.chunkcachesize
      * format.manifestcachesize
      
      For now, we only migrate `optimize-delta-parent-choice` since it is getting
      out of experimental. It is too close to the release to move the other one. In
      addition, we still lack proper the prioritization of alias that would help
      renaming them without bad consequence for users.
      
      (Not fully happy about the `revlog` name but could not find better).
      913ca175c4ae
    • Boris Feld's avatar
      config: document the purpose of the `format` config section · 8891dc15b327
      Boris Feld authored
      The config section now have a top level documentation to clarify its intend and
      usage. In particular, user are now explain when the option are taken in account
      and how to convert repository.
      
      There are an handful of experimental options in this section that does not match
      its definition. They should be relocated to other section before getting out of
      experimental. (see next changeset for one example).
      8891dc15b327
  22. 14 Sep, 2019 1 commit
  23. 16 Jul, 2018 3 commits
  24. 08 Jul, 2018 1 commit
    • Matt Harbison's avatar
      hook: add support for disabling the shell to native command translation · 38dfd308fe9d
      Matt Harbison authored
      I think having it on by default is the right thing to do, but this is an escape
      hatch if someone has a command that shouldn't be mangled.  The inspiration is
      the priority prefix.  The translation does nothing on non Windows platforms, so
      the default value is selected to avoid printing a useless note by default.
      38dfd308fe9d
  25. 06 Jul, 2018 1 commit
  26. 08 Jul, 2018 1 commit
  27. 18 Jan, 2018 1 commit
    • Jörg Sonnenberger's avatar
      wireproto: support for pullbundles · aacfca6f9767
      Jörg Sonnenberger authored
      Pullbundles are similar to clonebundles, but served as normal inline
      bundle streams. They are almost transparent to the client -- the only
      visible effect is that the client might get less changes than what it
      asked for, i.e. not all requested head revisions are provided.
      
      The client announces support for the necessary retries with the
      partial-pull capability. After receiving a partial bundle, it updates
      the set of revisions shared with the server and drops all now-known
      heads from the request list. It will then rerun getbundle until
      no changes are received or all remote heads are present.
      
      Extend badserverext to support per-socket limit, i.e. don't assume that
      the same limits should be applied to all sockets.
      
      Differential Revision: https://phab.mercurial-scm.org/D1856
      aacfca6f9767
  28. 27 Feb, 2018 1 commit
    • Jörg Sonnenberger's avatar
      wireproto: allow direct stream processing for unbundle · 2d965bfeb8f6
      Jörg Sonnenberger authored
      Introduce a new option server.streamunbundle which starts a transaction
      immediately to apply a bundle instead of writing it to a temporary file
      first. This side steps the need for a large tmp directory at the cost of
      preventing concurrent pushes. This is a reasonable trade-off for many
      setups as concurrent pushes for the main branch at least are disallowed
      anyway. The option defaults to off to preserve existing behavior.
      
      Change the wireproto interface to provide a generator for reading the
      payload and make callers responsible for consuming all data.
      
      Differential Revision: https://phab.mercurial-scm.org/D2470
      2d965bfeb8f6
  29. 12 Apr, 2019 1 commit
    • Pierre-Yves David's avatar
      repoview: flag `server.view` as experimental · 08481e11462e
      Pierre-Yves David authored
      Ideally, the non-experimental version of `experimental.extra-filter-revs` will
      cover the use case for `server.view=immutable` well enough than having to have
      this dedicated configuration. Since `server.view` is not part of any release, I
      would prefer to have it marked as experimental to avoid having it to support it
      for ever.
      08481e11462e
  30. 07 Nov, 2017 1 commit
    • Gregory Szorc's avatar
      subrepo: use per-type config options to enable subrepos · 1a314176da9c
      Gregory Szorc authored
      We change subrepos.allowed from a list of allowed subrepo types to
      a combination of a master switch and per-type boolean flag.
      
      If the master switch is set, subrepos can be disabled wholesale.
      
      If subrepos are globally enabled, then per-type options are
      consulted. Mercurial repos are enabled by default. Everything else
      is disabled by default.
      
      --HG--
      branch : stable
      1a314176da9c
  31. 06 Nov, 2017 1 commit
  32. 05 Nov, 2017 3 commits
    • Yuya Nishihara's avatar
      subrepo: disable git and svn subrepos by default (BC) (SEC) · 846942fd6d15
      Yuya Nishihara authored
      We have a security issue with git subrepos. I'm not sure if svn subrepo is
      vulnerable, but it seems not 100% safe to allow writing arbitrary data into
      a metadata directory. So for now, only hg subrepo is enabled by default.
      
      Maybe we should improve the help to describe why git/svn subrepos are
      disabled.
      
      --HG--
      branch : stable
      846942fd6d15
    • Yuya Nishihara's avatar
      subrepo: extend config option to disable subrepos by type (SEC) · 828cf35f1de6
      Yuya Nishihara authored
      This allows us to minimize the behavior change introduced by the next patch.
      
      I have no idea which config style is preferred in UX POV, but I decided to
      get things done.
      
       a) list: 'allowed = hg, git, svn'
       b) sub option: 'allowed.hg = True' or 'allowed:hg = True'
       c) per-type action: 'hg = allow', 'git = abort'
      
      --HG--
      branch : stable
      828cf35f1de6
    • Yuya Nishihara's avatar
      subrepo: add config option to reject any subrepo operations (SEC) · 5e27afeddaee
      Yuya Nishihara authored
      This is an alternative workaround for the issue5730.
      
      Perhaps this is the simplest way of disabling subrepo operations. It does
      nothing clever, but just aborts if Mercurial starts accessing to a subrepo.
      
      I think Greg's patch is more useful since it allows us to at least check
      out the parent repository. However, that would be confusing if the default
      is flipped to checkout=False and subrepos are silently ignored.
      
      I don't like the config name 'allowed', but I couldn't get any better name.
      
      --HG--
      branch : stable
      5e27afeddaee