Skip to content
Snippets Groups Projects
  1. Jul 25, 2017
    • Jun Wu's avatar
      rebase: move bookmark to destination for commits becoming empty (issue5627) · 52f82e7d
      Jun Wu authored
      When rebasing a changeset X and that changeset becomes empty, we should move
      the bookmark on X to rebase destination.
      
      This is a regression caused by the scmutil.cleanupnodes refactoring for
      rebase.
      
      The `adjustdest` function calculates the destination of bookmark movement.
      It was back-ported from https://phab.mercurial-scm.org/D21. It might be
      slightly more powerful than the minimal requirement to solve this issue.
      For example, it's impossible for a merge changeset to become empty while any
      of its ancestors does not become empty, but the code could handle that case.
      Since the code is reasonably short and clean, and helps the upcoming D21
      series, I'd like to check-in `adjustdest` now.
      
      Thanks Martin von Zweigbergk for spotting corner cases (-k and descendant
      with bookmarks) in this area!
      52f82e7d
  2. Jul 26, 2017
  3. Jul 21, 2017
    • Augie Fackler's avatar
      setup: add extra logic to try and recommend a new pip on bad Python · 02501742
      Augie Fackler authored
      Modern pip can detect supported Python versions (which we now
      declare), and pull down a reasonable release. This trick was suggested
      in http://bit.ly/pycon2017-build-bridges, and seems like a good
      defensive maneuver so that when we want to move to Python 3 it's
      less risky for existing users.
      
      This moves the version-check logic after defining our printf function
      so we can print more informative messages.
      02501742
    • Augie Fackler's avatar
      setup: explicitly declare supported Python versions · e0bbe32d
      Augie Fackler authored
      I think we should probably backport this to 4.2 as well, and do one
      more release there that explicitly declares 2.6 support. That way
      anyone stuck on Python 2.6 will end up getting the right hg if they
      use a modern pip to install. Users can still use `python setup.py`
      incantations to attempt installing Mercurial on unsupported Pythons,
      including 3.5 and 3.6.
      
      A followup change will switch to only doing our own
      Python-version-check logic if we're not being installed by a
      reasonable pip.
      e0bbe32d
  4. Jul 24, 2017
  5. Jul 21, 2017
  6. Jul 19, 2017
  7. Jul 21, 2017
    • Steve Borho's avatar
      wix: update list of necessary pyd files · e12c3049
      Steve Borho authored
      e12c3049
    • Jun Wu's avatar
      run-tests: pre instantiate pygments objects · 20436925
      Jun Wu authored
      This speeds up run-tests.py diff output by 10x, which affects developer
      experience significantly. As demonstrated by the following test:
      
      ```
      #require pygments
      
        $ for i in `seq 1 200`; do
        >   echo '  $ echo '$i >> test-a.t
        >   echo '  wrong' >> test-a.t
        > done
      
        $ cat > walltime.py <<EOF
        > from __future__ import absolute_import, print_function
        > import os, sys, time
        > t1 = time.time()
        > os.system(' '.join(sys.argv[1:]) + ' >/dev/null 2>/dev/null')
        > t2 = time.time()
        > print('%0.2f' % (t2 - t1))
        > EOF
      
        $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=never $TESTTMP/test-a.t
        0.24
      
      Before this patch:
      
        $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t
        2.46
      
      After this patch:
      
        $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t
        0.25
      ```
      20436925
  8. Jul 19, 2017
  9. Jul 21, 2017
  10. Jul 19, 2017
  11. Jul 18, 2017
    • Matt Harbison's avatar
      test-https: properly conditionalize Windows vs non-Windows output · 5b286cfe
      Matt Harbison authored
      There's a bug in the (feature !) annotation, and this needs to be resolved
      before fixing it.  Once fixed, the glob '*/missing' will match the output
      '/missing' on non-Windows platforms, consuming the output line and leaving
      nothing for the no-windows required line.
      
      I probably should have made (foo !) match only the 'foo' feature, and be ignored
      otherwise instead of optional.  (re) didn't work here, because the parenthesis
      need to be escaped too.
      5b286cfe
  12. Jul 19, 2017
  13. Jul 18, 2017
    • Rishabh Madan's avatar
      releasenotes: add custom admonitions support for release notes · 9a944e90
      Rishabh Madan authored
      By default, the extension has default sections like fix, feature, perf etc.. This
      patch allow user to add support for custom admonition. In order to add a custom
      admonition, one needs to have a .hgreleasenotes file inside the repository. All the
      custom directive with name specified under the tag [sections] will be
      usable by the extension. One important thing to keep in mind is if there exists any
      custom admonitions with same key as default then they will override the default ones.
      9a944e90
    • Ryan McElroy's avatar
      check-config: mention the file and line of the error · e470f12d
      Ryan McElroy authored
      I used this to more quickly track down a failing test-check-config.t issue
      in another repo. I thought it might be useful more generally, so I'm sending
      it out in case others think it's a worthwhile change.
      e470f12d
    • Durham Goode's avatar
      rebase: add config to move rebase into a single transaction · d341677d
      Durham Goode authored
      This was previously landed as cf8ad0e6c0e4 but backed out in a5abaa81fad6 because
      it broke hook mid rebase and caused conflict resolution data loss in the event
      of unexpected exceptions. This new version adds the behavior back but behind a
      config flag, since the performance improvement is notable in large repositories.
      
      The next patch adds a test covering this config.
      
      The old commit message was:
      
      Previously, rebasing would open several transaction over the course of rebasing
      several commits. Opening a transaction can have notable overhead (like copying
      the dirstate) which can add up when rebasing many commits.
      
      This patch adds a single large transaction around the actual commit rebase
      operation, with a catch for intervention which serializes the current state if
      we need to drop back to the terminal for user intervention. Amazingly, almost
      all the tests seem to pass.
      
      On large repos with large working copies, this can speed up rebasing 7 commits
      by 25%. I'd expect the percentage to be a bit larger for rebasing even more
      commits.
      
      There are minor test changes because we're rolling back the entire transaction
      during unexpected exceptions instead of just stopping mid-rebase, so there's no
      more backup bundle. It also leave an unknown file in the working copy, since our
      clean up 'hg update' doesn't delete unknown files.
      (grafted from cca36c7f35261b0e31beb226bf361067ef0e06ab)
      (grafted from dc497d8705b71503e32e07bd33925c1e42cf9c9a)
      
      Differential Revision: https://phab.mercurial-scm.org/D134
      d341677d
  14. Jul 17, 2017
  15. Jul 11, 2017
  16. Jul 18, 2017
  17. Jul 17, 2017
  18. Jul 15, 2017
  19. Jul 17, 2017
    • Gregory Szorc's avatar
      gitweb: preserve whitespace in description · 875b054e
      Gregory Szorc authored
      Without this, multiple spaces or tabs in the commit message aren't
      preserved and things like tables don't align properly.
      
      As part of adding the CSS rule, we had to cuddle the content
      with the <div> to not introduce leading and trailing whitespace.
      The "addbreaks" filter was also removed because it would insert
      an additional newline, effectively double spacing content.
      
      Differential Revision: https://phab.mercurial-scm.org/D113
      875b054e
    • Gregory Szorc's avatar
      sparse: add a requirement when a repository uses sparse (BC) · 22371eab
      Gregory Szorc authored
      The presence of a sparse checkout can confuse legacy clients or
      clients without sparse enabled for reasons that should be obvious.
      
      This commit introduces a new repository requirement that tracks
      whether sparse is enabled. The requirement is added when a sparse
      config is activated and removed when the sparse config is reset.
      
      The localrepository constructor has been taught to not open repos
      with this requirement unless the sparse feature is enabled. It yields
      a more actionable error message than what you would get if the
      lockout were handled strictly at the requirements verification phase.
      Old clients that aren't sparse aware will see the generic
      "repository requires features unknown to this Mercurial" error,
      however.
      
      The new requirement has "exp" in its name to reflect the
      experimental nature of sparse. There's a chance that the eventual
      non-experimental feature won't change significantly and we could
      have squatted on the "sparse" requirement without ill effect. If
      that happens, we can teach new clients to still recognize the old
      name. But I suspect we'll sneak in some BC and we'll want a new
      requirement to convey new meaning.
      
      Differential Revision: https://phab.mercurial-scm.org/D110
      22371eab
    • Gregory Szorc's avatar
      sparse: consolidate common code for writing sparse config · 6755b719
      Gregory Szorc authored
      In 3 functions we were writing the sparse config and updating the
      working directory. In two of them we had a transaction-like process
      for restoring the sparse config in case of wdir update fail.
      
      Because the pattern is common, we've already made mistakes, and the
      complexity will increase in the near future, let's consolidate the
      code into a reusable function.
      
      As part of this refactor, we end up reading the "sparse" file twice
      when updating it. This is a bit sub-optimal. But I don't think it
      is worth the code complexity to pass around the variables to avoid
      the redundancy.
      
      Differential Revision: https://phab.mercurial-scm.org/D109
      6755b719
  20. Jul 15, 2017
    • Gregory Szorc's avatar
      revset: pass repo when passing ui · 2943141f
      Gregory Szorc authored
      The repo instance is currently only used to provide a changeset
      lookup function as part of parsing revsets. I /think/ this allows
      node fragments to resolve. I'm not sure why we wouldn't want this
      to always "just work" if parsing a revset string.
      
      Plus, an upcoming commit will introduce a new consumer that needs a
      handle on the repo. So passing it more often will make that code
      work more.
      
      Passing a repo instance in all callers of revset.match* results in
      a bunch of test changes. Notably, branch and tags caches get
      populated as part of evaluating revsets. I'm not sure if this is
      desirable. So this patch takes the conservative approach and only
      passes the repo if we're passing a ui instance.
      
      Differential Revision: https://phab.mercurial-scm.org/D97
      2943141f
  21. Jul 17, 2017
  22. Jul 14, 2017
  23. Jul 15, 2017
Loading