Skip to content
Snippets Groups Projects
  1. Oct 17, 2017
  2. Sep 20, 2017
    • Boris Feld's avatar
      phase: use a binary phase part to push through bundle2 (BC) · 537de0b14030
      Boris Feld authored
      The part we are using for pull is now used for push too. As we no longer use
      pushkey, pushkey hooks are no longer triggered. This is an obvious backward
      incompatible change. We could artificially trigger the pushkey hook within the
      bundle2 part, but this seemed too hacky to me.
      
      An option would be to disable by default this new mechanism for a couple of
      versions to help people migrate to `txnclose-phase`. I took the liberal and
      optimistic path to just turn it on by default directly.
      
      .. bc::
      
         Push no longer triggers a pushkey hook when updating phases. Use the new
         `txnclose-phase` and `txnclose-phase` hooks instead.
         (Applies when both server and client use version 4.4 or above).
      537de0b14030
  3. Oct 17, 2017
  4. Sep 14, 2015
  5. Oct 17, 2017
  6. Oct 13, 2017
    • Boris Feld's avatar
      configitems: move rebase config into core · 44c4ed4ad032
      Boris Feld authored
      The shelve extensions import and call rebase content without loading the
      extension. This is problematic as the config items rebase uses are not
      declared and the default value are not set, etc...
      
      The shelve extension should be using core utilities only and the necessary bit
      should be moved from rebase into core. In the meantime, I'm taking a small
      step to get config registration completed with minimal overhead. The rebase
      extension is shipped with core so registering its config option within core is
      not a big issue.
      
      This is the last step needed before we can install a warning that enforces all
      config to be registered.
      44c4ed4ad032
    • Boris Feld's avatar
      eol: ensure the eol extensions is loaded when hooks run · 60802bba1090
      Boris Feld authored
      Similar to the change we did to the 'acl' extensions, we want to make sure the
      config items are registered before we run the hooks.
      60802bba1090
    • Boris Feld's avatar
      acl: make sure the extensions is enabled when the acl-hooks run · 120c5c155ba4
      Boris Feld authored
      The acl extension is usually setup through hooks and never directly activated.
      This means the config item declared in the extension are not loaded.
      We add the necessary logic to make sure the extensions are loaded before the hook
      run.
      120c5c155ba4
  7. Oct 16, 2017
  8. Oct 08, 2017
  9. Oct 14, 2017
  10. Oct 10, 2017
    • Paul Morelle's avatar
      revlog: introduce an experimental flag to slice chunks reads when too sparse · e2ad93bcc084
      Paul Morelle authored
      Delta chains can become quite sparse if there is a lot of unrelated data between
      relevant pieces. Right now, revlog always reads all the necessary data for the
      delta chain in one single read. This can lead to a lot of unrelated data to be
      read (see issue5482 for more details).
      One can use the `experimental.maxdeltachainspan` option with a large value
      (or -1) to easily produce a very sparse delta chain.
      
      This change introduces the ability to slice the chunks retrieval into  multiple
      reads, skipping large sections of unrelated data. Preliminary testing shows
      interesting results. For example the peak memory consumption to read a manifest
      on a large repository is reduced from 600MB to 250MB (200MB without
      maxdeltachainspan). However, the slicing itself and the multiple reads can have
      an negative impact on performance. This is why the new feature is hidden behind
      an experimental flag.
      
      Future changesets will add various parameters to control the slicing heuristics.
      We hope to experiment a wide variety of repositories during 4.4 and hopefully
      turn the feature on by default in 4.5.
      As a first try, the algorithm itself is prone to deep changes. However, we wish
      to define APIs and have a baseline to work on.
      e2ad93bcc084
  11. Oct 09, 2017
    • Paul Morelle's avatar
      revlog: ignore empty trailing chunks when reading segments · 7891d243d821
      Paul Morelle authored
      When a merge commit creates an empty diff in the revlog, its offset may still
      be quite far from the end of the previous chunk.
      Skipping these empty chunks may reduce read size significantly.
      In most cases, there is no gain, and in some cases, little gain.
      On my clone of pypy, `hg manifest` reads 65% less bytes (96140 i/o 275943) for
      revision 4260 by ignoring the only empty trailing diff.
      For revision 2229, 35% (34557 i/o 53435)
      Sadly, this is difficult to reproduce, as hg clone can make its own different
      structure every time.
      7891d243d821
  12. Sep 20, 2017
  13. Oct 11, 2017
  14. Oct 16, 2017
    • Boris Feld's avatar
      exchange: fix issue3781 reference in the comment · a80142b03552
      Boris Feld authored
      This comment is about:
      
        issue3781: Courtesy Phases synchronisation to publishing server prevent
                   subrepo push
      Not about:
      
        issue3871: Slow hg log when template contains {file_adds}, {file_mods} and
                   {file_dels}
      a80142b03552
  15. Oct 11, 2017
    • Boris Feld's avatar
      phase: filter out non-draft item in "draft root" · e2c42f751b06
      Boris Feld authored
      The on-disk file can contain draft root that are descendants of secret root.
      The resulting phase computation is correct, but the phases root content is
      not. I will send another series to introduce code that remove some of the
      cases where this can happens, but we first need to damage control the existing
      case.
      
      After this changeset, we can no longer advertise secret changeset as draft
      root.
      e2c42f751b06
  16. Oct 16, 2017
    • Matt Harbison's avatar
      subrepo: share instead of clone if the parent repo is shared (issue5675) (BC) · 68e0bcb90357
      Matt Harbison authored
      Previously, only the top level repo was shared, and then any subrepos were
      cloned on demand.  This is problematic because commits to the parent repo would
      write an updated .hgsubstate to the share source, but the corresponding subrepo
      commit would be stuck in the local subrepo.  That would prevent an update in the
      source repo.  We already go to great lengths to avoid having inconsistent repos
      (e.g., `hg push -r rev` will push _everything_ in a subrepo, even if it isn't
      referenced in one of the parent's outgoing commits).  Therefore, this seems like
      a bug fix, and there's no option to get the old behavior.  I can't imagine the
      previous behavior was useful to anybody.
      
      There shouldn't be an issue with svn, since it is centralized.  Maybe --git-dir
      can be used for git subrepos, but I'll leave that to someone more familiar with
      git.
      
      An integer was previously being implicitly returned from commands.share(), which
      caused dispatch() to start crashing when changing over to returning the shared
      repo.  All error paths appear to raise, so this can be hardcoded to success.
      The clone command checks for 'is None' in a similar pattern, but since
      hg.clone() always returns a tuple, that seems wrong?
      
      .. fix:: Issue 5675
      
         Creating a share of a repository with a Mercurial subrepository will now
         share the subrepository.
      
      and
      
      .. bc::
      
         Mercurial subrepositories are now shared instead of cloned when the parent
         repository is shared.  This prevents dangling subrepository references in the
         share source.  Previously shared repositories with cloned subrepositories
         will continue to function unchanged.
      68e0bcb90357
  17. Oct 15, 2017
  18. Oct 16, 2017
  19. Oct 15, 2017
  20. Oct 17, 2017
Loading