Skip to content
Snippets Groups Projects
  1. Jul 16, 2020
  2. Jul 14, 2020
  3. Jul 13, 2020
  4. Apr 01, 2020
  5. Jul 17, 2020
    • Manuel Jacob's avatar
      windows: always work around EINVAL in case of broken pipe for stdout / stderr · a37f290a
      Manuel Jacob authored
      In 29a905fe23ae, I missed the fact that the `winstdout` class works around two
      unrelated bugs (size limit when writing to consoles and EINVAL in case of
      broken pipe) and that the latter bug happens even when no console is involved.
      When writing a test for this, I realized that the same problem applies to
      stderr, so I applied the workaround for EINVAL to both stdout and stderr.
      
      The size limit is worked around in the same case as before (consoles on Windows
      on Python 2). For that, I changed the `winstdout` class.
      a37f290a
  6. Jul 16, 2020
  7. Jul 17, 2020
    • Manuel Jacob's avatar
      aea246bc
    • Manuel Jacob's avatar
      discovery: change users of `outgoing.missingheads` to `outgoing.ancestorsof` · c93dd9d9
      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.
      c93dd9d9
  8. Jul 15, 2020
    • Manuel Jacob's avatar
      discovery: fix docstring of `outgoing` class · 5631b011
      Manuel Jacob authored
      Also, introduce a more correct name `ancestorsof` for what was named
      `missingheads` before. For now, we just forward `ancestorsof` to `missingheads`
      until all users are changed.
      
      There were some mistakes in the old docstring / name:
      
      * `missingheads` (new name: `ancestorsof`) contains the revs whose ancestors
        are included in the outgoing operation. It may contain non-head revs and revs
        which are already on the remote, so the name "missingheads" is wrong in two
        ways.
      * `missing` contains only ancestors of `missingheads`, so not *all nodes*
        present in local but not in remote.
      * `common` might not contain all common revs, e.g. not some that are not an
        ancestor of `missingheads`.
      
      It seems like the misleading name have fostered an actual bug (issue6372),
      where `outgoing.missingheads` was used assuming that it contains the heads of
      the missing changesets.
      5631b011
    • Manuel Jacob's avatar
      discovery: weaken claim about returned common heads if ancestorsof are given · 75f6491b
      Manuel Jacob authored
      As the test case shows, the claim is not true in general.
      75f6491b
  9. Jul 16, 2020
  10. Jul 15, 2020
  11. Jul 16, 2020
  12. Jul 15, 2020
  13. Jul 16, 2020
  14. Jul 07, 2020
  15. Jun 01, 2020
    • Manuel Jacob's avatar
      absorb: make it explicit if empty changeset was created · f5509998
      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.
      f5509998
    • Manuel Jacob's avatar
      absorb: consider rewrite.empty-successor configuration · 3ee8e2d5
      Manuel Jacob authored
      This adds support for the recently added rewrite.empty-successor configuration.
      3ee8e2d5
    • Manuel Jacob's avatar
      rebase: consider rewrite.empty-successor configuration · 1efbfa9b
      Manuel Jacob authored
      This adds support for the recently added rewrite.empty-successor configuration.
      1efbfa9b
  16. Jul 12, 2020
  17. Jul 11, 2020
    • Manuel Jacob's avatar
      config: add option to control creation of empty successors during rewrite · b6269741
      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.
      b6269741
  18. Aug 31, 2019
  19. Jul 06, 2020
  20. Jul 07, 2020
    • Jörg Sonnenberger's avatar
      phases: sparsify phase lists · b1e51ef4
      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: https://phab.mercurial-scm.org/D8697
      b1e51ef4
    • Jörg Sonnenberger's avatar
      phases: updatephases should not skip internal phase · 361a7444
      Jörg Sonnenberger authored
      Historically, updatephases used to skip the secret phase, but wasn't
      updated when archived and internal were added.
      
      Differential Revision: https://phab.mercurial-scm.org/D8696
      361a7444
  21. Jun 27, 2020
  22. Jul 07, 2020
  23. Jun 24, 2020
Loading