Skip to content
Snippets Groups Projects
  1. Oct 22, 2020
    • Martin von Zweigbergk's avatar
      errors: add config that lets user get more detailed exit codes · 21733e8c
      Martin von Zweigbergk authored
      This adds an experimental config that lets the user get more detailed
      exit codes. For example, there will be a specific error code for
      input/user errors. This is part of
      https://www.mercurial-scm.org/wiki/ErrorCategoriesPlan. I've made the
      config part of tweakdefaults.
      
      I've made the config enabled by default in tests. My reasoning is that
      we want to see that each specific error case gives the right exit code
      and we don't want to duplicate all error cases in the entire test
      suite. It also makes it easy to grep the `.t` files for `[255]` to
      find which cases we have left to fix. The logic for the current exit
      codes is quite simple, so I'm not too worried about regressions
      there. I've added a test case specifically for the "legacy" exit
      codes.
      
      I've set the detailed exit status only for the case of
      `InterventionRequired` and `SystemExit` for now (the cases where we
      currently return something other than 255), just to show that it
      works.
      
      Differential Revision: https://phab.mercurial-scm.org/D9238
      21733e8c
  2. Nov 08, 2020
    • Martin von Zweigbergk's avatar
      worker: raise exception instead of calling sys.exit() with child's code · 8f07f5a9
      Martin von Zweigbergk authored
      When a worker process returns an error code, we would call
      `sys.exit()` with that exit code on the main process. The `SystemExit`
      exception would then get caught in `scmutil.callcatch()`, which would
      return that error code. The comment there says "Commands shouldn't
      sys.exit directly", which I agree with. This patch changes it so we
      raise a specific exception when a worker fails so we can catch
      instead. I think that means that `SystemExit` is now always an
      internal error.
      
      (I had earlier thought that this call to `sys.exit()` was from within
      the child process until Matt Harbison made me look again, so thanks
      for that!)
      
      Differential Revision: https://phab.mercurial-scm.org/D9287
      8f07f5a9
  3. Nov 03, 2020
  4. Nov 08, 2020
  5. Nov 07, 2020
  6. Oct 06, 2020
    • Gregory Szorc's avatar
      makefile: use Python 3 by default (BC) · c2837640
      Gregory Szorc authored
      This change is long overdue IMO.
      
      .. bc::
      
         Makefile now uses `python3` instead of `python` by default on
         non-Windows platforms. This means Mercurial will be built and
         run with Python 3 instead of Python 2.7 by default.
      
         To continue using Python 2, set the PYTHON variable. e.g.
         `make install PYTHON=python2.7`.
      
      Differential Revision: https://phab.mercurial-scm.org/D7258
      c2837640
  7. Nov 04, 2020
    • Martin von Zweigbergk's avatar
      hgweb: don't call sys.exit() in httpservice.run() · ee826f43
      Martin von Zweigbergk authored
      If I'm reading the code correctly, `mercurial.server.createservice()`
      can return an hgweb service or one of three types of command server
      services. The caller then calls `mercurial.server.runservice()`,
      passing it the returned service's run method. Only the hgweb service
      was calling `sys.exit()`. It has been that way since 8d44649df03b
      (refactor ssh server., 2006-06-04). That commit message doesn't
      provide any explanation. Let's clean up and have the code follow the
      usual return path into the `dispatch` module.
      
      After this patch, there should be no remaining places left where we
      call `sys.exit()` except for valid uses in the `dispatch` and `worker`
      modules.
      
      Differential Revision: https://phab.mercurial-scm.org/D9272
      ee826f43
  8. Nov 02, 2020
  9. Oct 31, 2020
  10. Nov 04, 2020
  11. Jun 23, 2020
    • Martin von Zweigbergk's avatar
      copies: handle more cases where a file got replaced by a copy · 58e7ee23
      Martin von Zweigbergk authored
      This patch fixes the changeset-centric version in a pretty
      straight-forward way. It fixes it to automatically resolve the
      conflict, which is better than resulting in a modify/delete conflict
      as it was before b4057d001760 (merge: when rename was made on both
      sides, use ancestor as merge base, 2020-01-22).
      
      I'll leave it for later to test and explicitly handle cases where
      files have been renamed to the same target on different sides of the
      merge.
      
      Differential Revision: https://phab.mercurial-scm.org/D8653
      58e7ee23
    • Martin von Zweigbergk's avatar
      tests: test more cases where a file got replaced by a copy · 4b79e92a
      Martin von Zweigbergk authored
      This adds a test where a file is modified on one branch and is renamed
      onto another file in another branch. That should ideally be
      automatically resolved (by propagating the modification to the rename
      destination). Alternatively, it could be considered a modify/delete
      conflict. It should at least not be automatically resolved by ignoring
      the modification. However, that is what actually happens with the
      changeset-centric algorithm since I broke it in b4057d001760 (merge:
      when rename was made on both sides, use ancestor as merge base,
      2020-01-22). Before that commit, it resulted in a modify/delete
      conflict. The filelog-centric algorithm was broken already before that
      commit.
      
      Differential Revision: https://phab.mercurial-scm.org/D8652
      4b79e92a
  12. Oct 07, 2020
  13. Oct 20, 2020
  14. Oct 29, 2020
    • Dan Villiom Podlaski Christiansen's avatar
      commit: warn the user when a commit already exists · 976b26bd
      Dan Villiom Podlaski Christiansen authored
      Sometimes, a commit will result in an exact match of a preexisting
      commit, and if that commit isn't a branch head, hg will incorrectly
      note that it created a new head. Instead, we should warn the user that
      commit already existed in the repository.
      
      In practice, this bug is rather uncommon, and will only occur when the
      usr explicitly sets the date.
      
      Please note that this commit contains an API change to
      cmdutil.commitstatus()
      
      Differential Revision: https://phab.mercurial-scm.org/D9257
      976b26bd
  15. Oct 06, 2020
    • Jörg Sonnenberger's avatar
      revlog: don't cache parsed tuples in the C module · 4404f129
      Jörg Sonnenberger authored
      A cached entry creates ~8 Python objects per cached changeset, which
      comes to around 200 Bytes per cached changeset on AMD64. Especially for
      operations that touch a lot of changesets, that can easily sum up to
      more than a 100MB of memory. Simple tests on large repositories show
      <2% runtime penalty for ripping out the cache, even for cache heavy
      operations like "hg log" for all revisions.
      
      Differential Revision: https://phab.mercurial-scm.org/D9155
      4404f129
  16. Oct 16, 2020
  17. Sep 28, 2020
  18. Oct 26, 2020
  19. Oct 29, 2020
  20. Nov 02, 2020
  21. Oct 29, 2020
  22. Oct 13, 2020
  23. Oct 21, 2020
  24. Oct 29, 2020
  25. Oct 24, 2020
    • Matt Harbison's avatar
      repoview: only pin obsolete wdir parents while there are unresolved conflicts · 341e014f
      Matt Harbison authored
      I noticed after doing an update from an obsolete revision with a dirty wdir that
      the obsolete commit stayed visible for no obvious reason.  It was decided in
      85b03b1e4715 not to clear mergestate once all of the conflicts were resolved, in
      order to allow re-resolving.  Since the point of pinning the obsolete parents
      was to allow resolving in the first place (aaeccdb6e654), it makes sense to also
      gate it on whether or not there are any remaining files to resolve.  This might
      result in pinning again if files are marked unresolved again, but that seems
      reasonable, given that it still solves the original issue.
      
      Note that this isn't purely cosmetic- pushing with a pinned obsolete revision is
      likely to cause complaints about pushing multiple heads or other unexpected
      errors.  So the faster it comes out of that state, the better.
      
      Differential Revision: https://phab.mercurial-scm.org/D9248
      341e014f
  26. Oct 28, 2020
  27. Oct 23, 2020
Loading