This instance will be upgraded to Heptapod 0.21.0rc2 on 2021-04-16 at 14:00 UTC+2 (a few minutes of down time)

  1. 22 Oct, 2020 1 commit
  2. 08 Oct, 2020 1 commit
  3. 01 Sep, 2020 1 commit
  4. 23 Jul, 2020 1 commit
    • Pierre-Yves David's avatar
      exchange: backout changeset c26335fa4225 · 6063c1857d0a
      Pierre-Yves David authored
      Changeset c26335fa4225 has good intends but introduce significant behavior
      regressions for multiple important cases. In short there are many case where
      push would have caught instability creation/propagation that are no longer
      covered.  These behavior have been covered for many years and even if some
      related case are not currently caught, the covered one should not be regressed.
      The next four changesets introduce tests for some of these cases. However we
      could produce many more tests cases since the area is wide and they are many
      possible combination. (And we should cover them when getting back to this issue)
      Since 5.5 is one week away, the most reasonable approach seems to back this out
      while we devise a new way to move forward that preserve the current behavior,
      catch more issues and also improves the situation that c26335fa4225 target.
      In addition to the behavior change, c26335fa4225 also introduced output
      changes. These output changes does not requires a backout per-se, but are part of
      the same changeset. However they come with a couple of issues that also requires
      1) the bulk of the error message have been shoehorned into a multiple line abort
      message. This seems quite different from what we usually do. The abort message
      should be a compact and efficient message, with extra details being issued as
      normal error output beforehand. (with --verbose/--quiet) support.
      2) the current output is unbounded, so if there is many (tens, hundreds,
      thousands, …) of unstable/obsolete changeset involved in the push, the output
      can quickly become a scary and un-usuable wall of text. So we need some
      limitation here (same as we have with the remote head list that says A, B , C
      and # others).
      branch : stable
  5. 15 Oct, 2020 1 commit
    • Pierre-Yves David's avatar
      clonebundles: move a bundle of clone bundle related code to a new module · 74271829ddc0
      Pierre-Yves David authored
      In the process on general clone bundle automatically, we need to make some
      function available more widely. This is a good opportunity to extract a
      significant amount of code from `` into a new
      `mercurial.bundlecaches`. This make `` move under the 3K line
      range (hooray…).
      The module is called `bundlecaches` because I expect it to be eventually useful
      for more than just clone bundle (like pull bunbles).
      Differential Revision:
  6. 17 Jul, 2020 1 commit
    • Manuel Jacob's avatar
      exchange: check actually missing revs for obsolete / unstable revs (issue6372) · c26335fa4225
      Manuel Jacob authored
      The previous code was using `outgoing.ancestorsof`, which was originally called
      `outgoing.missingheads` although not containing the missing heads. This
      confusion was probably the reason why the buggy code was written.
      The actually outgoing changesets are stored in `outgoing.missing`. By checking
      all outgoing changesets, we avoid the problem and can show the list of all
      obsolete or unstable changesets, which is more helpful for the user.
  7. 08 Aug, 2020 2 commits
  8. 17 Jul, 2020 1 commit
    • Manuel Jacob's avatar
      discovery: change users of `outgoing.missingheads` to `outgoing.ancestorsof` · c93dd9d9f1e6
      Manuel Jacob authored
      The attribute `missingheads` was recently renamed to `ancestorsof`, as it,
      despite the old name, doesn’t contain the missing heads but the changesets that
      were requested (including ancestors) for the outgoing operation.
      Changing all the users enables to print a warning if the old name is used.
      There is a good chance that some of the users are buggy because of the old name.
      Changing them to use the new name makes it more obvious that they are buggy. All
      users need to be reviewed for bugs. When sending patches for fixing them, the
      change will be more obvious without having to explain again and again the
      discrepancy of the old attribute name and what it actually contained.
  9. 13 Jan, 2020 1 commit
  10. 12 Dec, 2019 1 commit
    • Matt Harbison's avatar
      exchange: ensure all outgoing subrepo references are present before pushing · 4b7d5d10c45d
      Matt Harbison authored
      We've run into occasional problems with people committing a repo, and then
      amending or rebasing in the subrepo.  That makes it so that the revision in the
      parent can't be checked out, and the problem gets propagated on push.  Mercurial
      already tries to defend against this sort of dangling reference by pushing *all*
      subrepo revisions first.  This reuses the checks that trigger warnings in
      `hg verify` to bail on the push unless using `--force`.
      I thought about putting this on the server side, but at that point, all of the
      data has been transferred, only to bail out.  Additionally, SCM Manager hosts
      subrepos in a location that isn't nested in the parent, so normal subrepo code
      would complain that the subrepo is missing when run on the server.
      Because the push command pushes subrepos before calling this exchange code, a
      subrepo will be pushed before the parent is verified.  Not great, but no
      dangling references are exchanged, so it solves the problem.  This code isn't in
      the loop that pushes the subrepos because:
        1) the list of outgoing revisions is needed to limit the scope of the check
        2) the loop only accesses the current revision, and therefore can miss
           subrepos that were dropped in previous commits
        3) this code is called when pushing a subrepo, so the protection is recursive
      I'm not sure if there's a cheap check for the list of files in the outgoing
      bundle.  If there is, that would provide a fast path to bypass this check for
      people not using subrepos (or if no subrepo changes were made).  There's
      probably also room for verifying other references like tags.  But since that
      doesn't break checkouts, it's much less of a problem.
      Differential Revision:
  11. 09 Nov, 2019 1 commit
  12. 08 Dec, 2019 1 commit
  13. 05 Dec, 2019 1 commit
  14. 23 Nov, 2019 2 commits
  15. 17 Oct, 2019 2 commits
  16. 07 Jul, 2020 1 commit
    • 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:
  17. 21 Jun, 2020 1 commit
  18. 09 Nov, 2019 2 commits
  19. 08 Nov, 2019 2 commits
  20. 16 Aug, 2019 1 commit
  21. 10 Oct, 2019 1 commit
    • Denis Laxalde's avatar
      py3: fix sorting of obsolete markers when building bundle · 01e8eefd9434
      Denis Laxalde authored
      Last item of marker tuple (parents) is either None or tuple. Comparison
      thus fails on Python 3 with:
        TypeError: '<' not supported between instances of 'tuple' and 'NoneType'
      Fixing this by coercing None to the empty tuple when sorting markers in
  22. 07 Oct, 2019 1 commit
    • Pierre-Yves David's avatar
      sidedata: apply basic but tight security around exchange · c17a63eb5d4c
      Pierre-Yves David authored
      We don't currently have code to deal with exchange between repository using
      sidedata and repository not using sidedata. Until we implement such code (eg:
      dropping side data when pushing to a non-sidedata repo) we prevent the two kind
      of repo to speak to each other. This is somewhere similar to what 'treemanifest'
      Note that sidedata exchange is broken unless one use changegroup v3 anyway. See
      next changeset for details.
      Differential Revision:
  23. 08 Oct, 2019 1 commit
  24. 17 Apr, 2019 1 commit
    • Pulkit Goyal's avatar
      narrow: send specs as bundle2 data instead of param (issue5952) (issue6019) · 280f7a095df8
      Pulkit Goyal authored
      Before this patch, when ACL is involved, narrowspecs are send as bundle2
      parameter for narrow:spec bundle2 part. The limitation of bundle2 parts are they
      cannot send data larger than 255 bytes. Includes and excludes in narrow are not
      limited by size and they can grow over 255 bytes.
      This patch introduces a new mandatory bundle2 part and send narrowspecs as data
      of that. The new bundle2 part is introduced to keep things cleaner and easy to
      distinguish related to backward compatibility.
      The part is mandatory because without server's narrowspec, the local ACL narrow
      repo won't work.
      This patch makes clients compatible with servers which have older versions.
      However I left a comment that we should drop the other bundle2 part soon as
      that's broken and people should not rely on that.
      I named the new bundle2 part 'Narrow:responsespec' because:
      1) Capital 'N' to make it mandatory
      2) 'Narrow:spec' cannot be used because bundle2 enforces that there should not
      be two different parts which resolve to same name when lowercased.
      3) reponsespec clears that they are specs which are send as reponse by the
      While I was here, I renamed `narrowhgacl` section to `narrowacl` as suggested by
      idlsoft@ and martinvonz@.
      Differential Revision:
      branch : stable
  25. 15 May, 2018 1 commit
  26. 17 Apr, 2018 1 commit
  27. 15 Apr, 2018 1 commit
  28. 13 Apr, 2018 6 commits
    • Pulkit Goyal's avatar
      py3: use stringutil.forcebytestr() instead of str() · fc114a16a484
      Pulkit Goyal authored
      We need to convert errors to bytes using stringutil.forcebytestr()
      Differential Revision:
    • Gregory Szorc's avatar
      wireproto: properly call clonebundles command · a168799687e5
      Gregory Szorc authored
      We should not be using _call() to make wire protocol calls because
      it isn't part of the peer API.
      But clonebundles wasn't part of the supported commands in the
      peer API!
      So this commit defines that command in the commands interface,
      implements it, and teaches the one caller in core to call it using
      the command executor interface.
      Differential Revision:
    • Gregory Szorc's avatar
      exchange: use command executor for getbundle · 8f3c6fb55369
      Gregory Szorc authored
      The code consuming the bundle has been moved to inside the
      context manager, as that is supposed to be part of the API.
      (Although it doesn't matter for version 1 peers.)
      Differential Revision:
    • Gregory Szorc's avatar
      exchange: use command executor for pushkey · 516b5a5edae3
      Gregory Szorc authored
      Differential Revision:
    • Gregory Szorc's avatar
      wireproto: use command executor for unbundle · 72e26319f3b8
      Gregory Szorc authored
      This also required unifying the name of the argument because the
      new API always passes arguments by keyword. I decided to change
      implementations to "bundle" instead of the interface to "cg"
      because "bundle" is more appropriate in a modern world.
      Differential Revision:
    • Gregory Szorc's avatar
      wireproto: convert legacy commands to command executor · cc8c06835097
      Gregory Szorc authored
      Calls to the legacy commands "changegroup" and "changegroupsubset" have
      been ported to the new command executor interface.
      Because we always pass arguments by name and not position, some
      inconsistent names throughout the code base have been unified.
      As part of this change, we no longer had any remaining callers
      of the legacy command methods {between, branches, changegroup,
      changegroupsubset}. So, these interfaces/methods have been dropped
      from peer interfaces. We still have an interface declaring these
      methods. But that interface is implemented on the concrete peer
      types and isn't part of the generic peer interface. (The
      implementations of the command executor continue to call these
      The ultimate goal is to remove the per-command methods from the
      generic peer interface: the only interface-conforming way to
      call a command will be with the new executor API. At some point,
      we may want to move the methods outside of the peer classes and
      change the executor implementations to not call methods directly
      on a peer instance.
      Differential Revision:
  29. 07 Oct, 2019 1 commit
    • Gregory Szorc's avatar
      py3: finish porting iteritems() to pycompat and remove source transformer · d783f945a701
      Gregory Szorc authored
      This commit finishes porting .iteritems() to pycompat.iteritems()
      for the mercurial package.
      The translation of .iteritems() to .items() was the last conversion
      performed by the source transformer. With the porting to pycompat
      complete, we no longer have a need for the source transformer. So
      the source transformer has been removed. Good riddance! The code
      base is now compatible with Python 2 and Python 3.
      For the record, as the person who introduced the source transformer,
      it brings me joy to delete it. It accomplished its goal to facilitate
      a port to Python 3 without overly burdening people on some painful
      low-level differences between Python 2 and 3. It is unfortunate we
      still have to wallpaper over many differences with the pycompat
      shim. But it is what it is.
      Differential Revision:
  30. 06 Oct, 2019 1 commit