Skip to content
Snippets Groups Projects
  1. Sep 30, 2011
  2. Sep 29, 2011
  3. Sep 24, 2011
  4. Sep 28, 2011
  5. Sep 08, 2010
    • Matt Mackall's avatar
      patchbomb: use prompt even in non-interactive mode · 3a55cee825ba
      Matt Mackall authored
      This matches our pre-existing behavior from:
      
      changeset:   12197:540693065d40
      user:        Christian Ebert <blacktrash@gmx.net>
      files:       hgext/patchbomb.py tests/test-patchbomb.t
      description:
      patchbomb: show prompt and selection in non-interactive mode
      changeset:   8940:01ada7b1861d
      user:        Mads Kiilerich <mads@kiilerich.com>
      date:        Sun Jun 21 03:13:38 2009 +0200
      files:       mercurial/ui.py tests/test-merge-prompt.out tests/test-merge-tools.out
      description:
      ui.prompt: Show prompt and selection in non-interactive mode
      3a55cee825ba
  6. Sep 28, 2011
    • Greg Ward's avatar
      patchbomb: make it easy for the user to decline sending an intro message. · 7bddec632821
      Greg Ward authored
      - prompt(): respect interactive mode; clarify logic a bit
      - rename introneeded() to introwanted() and give it only one caller
      - add 'numbered' arg to makepatch() so it does not need to call
        introwanted()
      - factor makeintro() out of getpatchmsgs(), so it's easier to skip the
        intro message based on the user's behaviour
      
      Unexpected but perfectly reasonable side effect: in non-interactive
      mode, we don't show unanswerable "Cc" or "From" prompts anymore, so
      remove those from the test expectations.
      7bddec632821
  7. Sep 20, 2011
    • Nikolaj Sjujskij's avatar
      building: build inotify for sys.platform='linux*' · f4bc0b9e03a4
      Nikolaj Sjujskij authored
      If Python interpreter was built under Linux 3.x kernel, it reports
      sys.platform to be 'linux3' (it is fixed for Python 3, but not for 2.x).
      This cancels building inotify extension, which was built only for 'linux2'
      platform. Improved test checks if sys.platform begins with 'linux', and together
      with test for kernel version to be greater than 2.6 it seems to cover all known
      cases.
      f4bc0b9e03a4
  8. Sep 27, 2011
  9. Sep 28, 2011
  10. Sep 27, 2011
  11. Sep 23, 2011
  12. Sep 21, 2011
    • Yann E. MORIN's avatar
      styles: add new 'bisect' style that prints the bisection status · 143c78b4fc8c
      Yann E. MORIN authored
      
      The style is based on the 'default' style, but adds the bisection status
      of the changesets.
      
      Example output for a changeset in range:
      
        $ hg log --style bisect -r 15:16
        changeset:   15:857b178a7cf3
        bisect:      bad
        parent:      13:b0a32c86eb31
        parent:      10:429fcd26f52d
        user:        test
        date:        Thu Jan 01 00:00:15 1970 +0000
        summary:     merge 10,13
      
        changeset:   16:609d82a7ebae
        bisect:      bad (implicit)
        user:        test
        date:        Thu Jan 01 00:00:16 1970 +0000
        summary:     16
      
        $ hg log --quiet --style bisect
          18:d42e18c7bc9b
        B 17:228c06deef46
        B 16:609d82a7ebae
        B 15:857b178a7cf3
          14:faa450606157
        G 13:b0a32c86eb31
        G 12:9f259202bbe7
        G 11:82ca6f06eccd
        U 10:429fcd26f52d
        S 9:3c77083deb4a
        G 8:dab8161ac8fc
          7:50c76098bbf2
        I 6:a214d5d3811a
        I 5:385a529b6670
        I 4:5c668c22234f
        I 3:0950834f0a9c
        I 2:051e12f87bf1
          1:4ca5088da217
          0:33b1f9bc8bc5
      
      Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
      143c78b4fc8c
    • Yann E. MORIN's avatar
      templates: add 'bisect' keyword to return a cset's bisect status · f4a8d754cd0a
      Yann E. MORIN authored
      
      This new 'bisect' template expands to a cset's bisection status (good,
      bad and so on...). There is also a new 'shortbisect' filter that yields
      a single char representing the cset's bisection status.
      
      It uses the two recently-added hbisect.label() and .shortlabel() functions.
      
      Example output using the repository in test-bisect2.t, and some made-up
      state of the 'end at merge' test (with graphlog, it's so explicit):
      
        $ hg glog --template '{rev}:{node|short} {bisect}\n'  \
                  -r 'bisect(range)|bisect(ignored)'
        o  17:228c06deef46: bad
        |
        o  16:609d82a7ebae: bad (implicit)
        |
        o    15:857b178a7cf3: bad
        |\
        | o  13:b0a32c86eb31: good
        | |
        | o  12:9f259202bbe7: good (implicit)
        | |
        | o  11:82ca6f06eccd: good
        | |
        @ |    10:429fcd26f52d: untested
        |\ \
        | o |  9:3c77083deb4a: skipped
        | |/
        | o  8:dab8161ac8fc: good
        | |
        o |    6:a214d5d3811a: ignored
        |\ \
        | o |  5:385a529b6670: ignored
        | | |
        o | |  4:5c668c22234f: ignored
        | | |
        o | |  3:0950834f0a9c: ignored
        |/ /
        o /  2:051e12f87bf1: ignored
        |/
      
      And now the same with the short label:
      
        $ hg log --template '{bisect|shortbisect} {rev}:{node|short}\n'
          18:d42e18c7bc9b
        B 17:228c06deef46
        B 16:609d82a7ebae
        B 15:857b178a7cf3
          14:faa450606157
        G 13:b0a32c86eb31
        G 12:9f259202bbe7
        G 11:82ca6f06eccd
        U 10:429fcd26f52d
        S 9:3c77083deb4a
        G 8:dab8161ac8fc
          7:50c76098bbf2
        I 6:a214d5d3811a
        I 5:385a529b6670
        I 4:5c668c22234f
        I 3:0950834f0a9c
        I 2:051e12f87bf1
          1:4ca5088da217
          0:33b1f9bc8bc5
      
      Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
      f4a8d754cd0a
  13. Sep 22, 2011
    • Yann E. MORIN's avatar
      hbisect: add functions to return a label for a cset bisection status · aa2e908c521e
      Yann E. MORIN authored
      
      Add two new functions that return a string containing the bisection status
      of the node passed in parameter:
       - .label(node): return a multi-char string representing the status of node
       - .shortlabel(node): return a single-char string representing the status
         of node, usually the initial of the label
      
          bisection status    .label()            .shortlabel()
          ----------------------------------------------------------
          good                'good'              'G'
          good (implicit)     'good (implicit)'   'G'
          bad                 'bad'               'B'
          bad (implicit)      'bad (implicit)'    'B'
          skipped             'skip'              'S'
          untested            'untested'          'U'
          ignored             'ignored'           'I'
          (others)            None                None
      
      There is no point in returning 'range' or 'pruned', as these get covered
      by another, more meaningful status in the table above.
      
      In case the node is not being bisected, the functions return None to leave
      it up to the caller to decide what to print (nothing, an empty space, or
      whatever else suits).
      
      Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
      aa2e908c521e
  14. Sep 23, 2011
  15. Sep 21, 2011
    • kiilerix's avatar
      http: handle push of bundles > 2 GB again (issue3017) · 94b200a11cf7
      kiilerix authored
      It was very elegant that httpsendfile implemented __len__ like a string. It was
      however also dangerous because that protocol can't handle sizes bigger than 2 GB.
      Mercurial tried to work around that, but it turned out to be too easy to
      introduce new errors in this area.
      
      With this change __len__ is no longer implemented at all and the code will work
      the same way for short and long posts.
      94b200a11cf7
  16. Sep 20, 2011
    • Nikolaj Sjujskij's avatar
      building: build inotify for sys.platform='linux*' · 0d4f6e843b05
      Nikolaj Sjujskij authored
      If Python interpreter was built under Linux 3.x kernel, it reports
      sys.platform to be 'linux3' (it is fixed for Python 3, but not for 2.x).
      This cancels building inotify extension, which was built only for 'linux2'
      platform. Improved test checks if sys.platform begins with 'linux', and together
      with test for kernel version to be greater than 2.6 it seems to cover all known
      cases.
      0d4f6e843b05
  17. Sep 22, 2011
    • Martin Geisler's avatar
      subrepo: try remapping subpaths using the "final" path · 91dc8878f888
      Martin Geisler authored
      Before, the right-hand side of a .hgsub entry was used, as is, to
      match the left-hand side of a subpaths entry. This turned out to be
      less useful than expected since a .hgsub file with
      
        src/foo = src/foo
      
      has little context to do remapping on. The new idea is therefore to
      prefix the parent repo path *before* the remapping takes place.
      
      If the parent repository path (as defined by _abssource) is
      
        http://example.net/parent
      
      then the remapping for the above .hgsub entry will be done on the
      expanded path:
      
        http://example.net/parent/src/foo
      
      If this expanded path is not changed by the remapping, then we remap
      
        src/foo
      
      alone. This is the old behavior where the right-hand side is remapped
      without context.
      91dc8878f888
    • Martin Geisler's avatar
      subrepo: refactor state function · eaec9cf91aea
      Martin Geisler authored
      eaec9cf91aea
  18. Sep 20, 2011
    • Jordi Gutiérrez Hermoso's avatar
      mq.strip: allow -r option, optionally · 510184e5a09e
      Jordi Gutiérrez Hermoso authored
      Other commands let -r to be used for revisions, so just for syntactic
      consistency, it's nice to have it for strip as well
      510184e5a09e
    • Yann E. MORIN's avatar
      revset.bisect: add 'ignored' set to the bisect keyword · 395ca8cd2669
      Yann E. MORIN authored
      
      The 'ignored' changesets are outside the bisection range, but are
      changesets that may have an impact on the outcome of the bisection.
      
      For example, in case there's a merge between the good and bad csets,
      but the branch-point is out of the bisection range, and the issue
      originates from this branch, the branch will not be visited by bisect
      and bisect will find that the culprit cset is the merge.
      
      So, the 'ignored' set is equivalent to:
          (   ( ::bisect(bad) - ::bisect(good) )
            | ( ::bisect(good) - ::bisect(bad) ) )
          - bisect(range)
      
       - all ancestors of bad csets that are not ancestors of good csets, or
       - all ancestors of good csets that are not ancestors of bad csets
       - but that are not in the bisection range.
      
      Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
      395ca8cd2669
    • Yann E. MORIN's avatar
      hbisect.get: use simpler code with repo.set(), fix 'pruned' set · b39d85be78a8
      Yann E. MORIN authored
      
      Use repo.set() wherever possible, instead of locally trying to
      reproduce complex graph computations.
      
      'pruned' now means 'all csets that will no longer be visited by the
      bisection'. The change is done is this very patch instead of its own
      dedicated one becasue the code changes all over the place, and the
      previous 'pruned' code was totally rewritten by the cleanup, so it
      was easier to just change the behavior at the same time.
      
      The previous series went in too fast for this cleanup pass to be
      included, so here it is. ;-)
      
      Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
      b39d85be78a8
  19. Sep 21, 2011
  20. Sep 19, 2011
    • Brodie Rao's avatar
      mdiff: speed up showfunc for large diffs · 16dc9a32ca04
      Brodie Rao authored
      This addresses the following issues with showfunc:
      
      - Silly usage of regular expressions.
      - Doing str.rstrip() needlessly in an inner loop.
      - Doing catastrophic backtracking when trying to find a function line.
      
      Finding function text is now at worst O(n lines in the old file), and
      at best close to O(n hunks).
      
      Given a diff like this[1]:
      
       src/main/antlr3/uk/ac/cam/ch/wwmm/pregenerated/ChemicalChunker.g        |      4 +-
       src/main/java/uk/ac/cam/ch/wwmm/pregenerated/ChemicalChunkerLexer.java  |      2 +-
       src/main/java/uk/ac/cam/ch/wwmm/pregenerated/ChemicalChunkerParser.java |  29189 +++++----
       3 files changed, 14741 insertions(+), 14454 deletions(-)
      
      [1]: https://bitbucket.org/wwmm/chemicaltagger/changeset/d2bfbaecd4fc/raw
      
      Without this change, hg log --stat --config diff.showfunc=1 takes an
      absurdly long time to complete:
      
         CallCount    Recursive    Total(ms)   Inline(ms) module:lineno(function)
             32813            0     80.3546     40.6086   mercurial.mdiff:160(yieldhunk)
         +65062746            0     25.7227     25.7227   +<method 'match' of '_sre.SRE_Pattern' objects>
         +65062746            0     14.0221     14.0221   +<method 'rstrip' of 'str' objects>
             +1809            0      0.0009      0.0009   +mercurial.mdiff:148(contextend)
             +1809            0      0.0003      0.0003   +<len>
          65062746            0     25.7227     25.7227   <method 'match' of '_sre.SRE_Pattern' objects>
          65062763            0     14.0221     14.0221   <method 'rstrip' of 'str' objects>
               543            0      0.1631      0.1631   <zlib.decompress>
                 3            0      0.0505      0.0505   <mercurial.bdiff.blocks>
             31007            0     80.4564      0.0477   mercurial.mdiff:147(_unidiff)
            +32813            0     80.3546     40.6086   +mercurial.mdiff:160(yieldhunk)
                +3            0      0.0505      0.0505   +<mercurial.bdiff.blocks>
             +3618            0      0.0022      0.0022   +mercurial.mdiff:154(contextstart)
             +5427            0      0.0013      0.0013   +<len>
                +3            0      0.0001      0.0000   +re:188(compile)
                 1            0     80.8381      0.0322   mercurial.patch:1777(diffstatdata)
           +107499            0      0.0235      0.0235   +<method 'startswith' of 'str' objects>
            +31014            0     80.7820      0.0071   +mercurial.util:1284(iterlines)
                +3            0      0.0000      0.0000   +<method 'search' of '_sre.SRE_Pattern' objects>
                +4            0      0.0000      0.0000   +mercurial.patch:1783(addresult)
                +3            0      0.0000      0.0000   +<method 'group' of '_sre.SRE_Match' objects>
                 6            0      0.0444      0.0283   mercurial.mdiff:12(splitnewlines)
                +6            0      0.0160      0.0160   +<method 'split' of 'str' objects>
                32            0      0.0246      0.0246   <method 'update' of '_hashlib.HASH' objects>
                11            0      0.0236      0.0236   <method 'read' of 'file' objects>
      Time: real 80.880 secs (user 80.200+0.000 sys 0.380+0.000)
      
      With this change, it's almost as fast as not using showfunc at all:
      
         CallCount    Recursive    Total(ms)   Inline(ms) module:lineno(function)
               543            0      0.1699      0.1699   <zlib.decompress>
                 3            0      0.0501      0.0501   <mercurial.bdiff.blocks>
             32813            0      0.0415      0.0348   mercurial.mdiff:161(yieldhunk)
            +70837            0      0.0058      0.0058   +<method 'isalnum' of 'str' objects>
             +1809            0      0.0006      0.0006   +mercurial.mdiff:148(contextend)
             +1809            0      0.0002      0.0002   +<len>
                 1            0      0.4879      0.0310   mercurial.patch:1777(diffstatdata)
           +107499            0      0.0230      0.0230   +<method 'startswith' of 'str' objects>
            +31014            0      0.4335      0.0065   +mercurial.util:1284(iterlines)
                +3            0      0.0000      0.0000   +<method 'search' of '_sre.SRE_Pattern' objects>
                +4            0      0.0000      0.0000   +mercurial.patch:1783(addresult)
                +1            0      0.0004      0.0000   +re:188(compile)
                32            0      0.0293      0.0293   <method 'update' of '_hashlib.HASH' objects>
                 6            0      0.0427      0.0279   mercurial.mdiff:12(splitnewlines)
                +6            0      0.0147      0.0147   +<method 'split' of 'str' objects>
             31007            0      0.1169      0.0235   mercurial.mdiff:147(_unidiff)
                +3            0      0.0501      0.0501   +<mercurial.bdiff.blocks>
            +32813            0      0.0415      0.0348   +mercurial.mdiff:161(yieldhunk)
             +3618            0      0.0012      0.0012   +mercurial.mdiff:154(contextstart)
             +5427            0      0.0006      0.0006   +<len>
            107597            0      0.0230      0.0230   <method 'startswith' of 'str' objects>
                16            0      0.0213      0.0213   <mercurial.mpatch.patches>
               194            0      0.0149      0.0149   <method 'split' of 'str' objects>
      Time: real 0.530 secs (user 0.450+0.000 sys 0.070+0.000)
      16dc9a32ca04
    • Matt Mackall's avatar
      revset: add 'l' flag to formatspec for args · 353a1ba928f6
      Matt Mackall authored
      This makes it easy to calculate a revset with lists:
      
        good = [1, 2, 3]
        bad = [10, 11, 12]
        between = repo.set('%ld::%ld', good, bad)
      353a1ba928f6
  21. Sep 18, 2011
  22. Sep 17, 2011
  23. Sep 16, 2011
Loading