Skip to content
Snippets Groups Projects
  1. Feb 20, 2019
  2. Feb 21, 2019
  3. Feb 22, 2019
  4. Feb 21, 2019
    • Pulkit Goyal's avatar
      diff: make sure we output stat even when --git is not passed (issue4037) (BC) · 251332dbf33d
      Pulkit Goyal authored
      Before this patch, `hg diff --stat` will give an empty output. It will not show
      the stat information. I debugged and found that the underlying code does not
      return the diff header and due to that, other code paths fails to parse that as
      a diff.
      
      I looked into why we don't return diff headers in quiet mode and found the
      behavior is from 8f8bb77d560e which does not have
      any mention about why it is done. We also show the diff headers in git, so I
      think it's fine showing diff header in normal diff in quiet mode.
      
      Differential Revision: https://phab.mercurial-scm.org/D6007
      251332dbf33d
  5. Feb 22, 2019
  6. Jan 18, 2019
  7. Feb 21, 2019
  8. Feb 23, 2019
  9. Feb 11, 2019
  10. Mar 26, 2018
  11. Dec 28, 2017
  12. Mar 26, 2018
  13. Dec 28, 2017
  14. Mar 26, 2018
  15. Feb 22, 2019
  16. Jan 16, 2019
    • Georges Racinet's avatar
      rust-cpython: using rustext.dagop.headrevs in revlog · 37ead13fb3d4
      Georges Racinet authored
      As with the previous oxidation series, revlog plays the role
      of the factory, either using its parents function, or passing the
      index.
      
      We include below results of revsetbenchmarks.py taken on the
      PyPy repository on those of contrib/all-revsets.tx that involve
      `heads()`.
      
      In most of the cases, this seems to be either neutral or an improvement.
      In the cases where it's actually a bit slower, we suspect that differences
      in `heads()` performance is actually burried in variance on the incoming
      revset (probably several orders of magnitude slower).
      
      The precheck for filtered revisions of parent changeset has a significative
      performance benefit, too.
      
      Result by revset
      ================
      
      Revision:
      0) 0c7b353ce100; rust-cpython: binding for headrevs()
      1) Parent of this changeset; changelog: prefilter in headrevs()
      2) This changeset
      
      
      revset #0: heads(commonancestors(last(head(), 2)))
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 0.001379      0.001361      0.001381      0.001410      0.001393      0.001372      0.001414      0.001387      0.001411      0.001429      0.001415
      1) 0.001351      0.001373      0.001383      0.001392      0.001401      0.001385      0.001405      0.001406      0.001385      0.001424      0.001399
      2) 0.001365      0.001362      0.001375      0.001393      0.001370      0.001365      0.001413      0.001386      0.001377      0.001415      0.001411
      
      revset #1: heads(commonancestors(head()))
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 0.047578      0.048578      0.047764      0.048065      0.047289      0.047305      0.047729      0.047370      0.047611      0.048005      0.047755
      1) 0.048072      0.047471      0.048351      0.048193      0.048380      0.047968      0.047683      0.047355      0.048587      0.047044      0.048299
      2) 0.047124      0.046699      0.046896      0.047250      0.046920      0.047379      0.046855      0.047753      0.047289      0.047219      0.046991
      
      revset #2: heads(all())
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 0.037654      0.037814      0.037149      0.037457      0.037609      0.037053      0.036825      0.037054      0.037739      0.036816      0.037604
      1) 0.021845  58% 0.022172  58% 0.022148  59% 0.022059  58% 0.022261  59% 0.022246  60% 0.021691  58% 0.021967  59% 0.022156  58% 0.021820  59% 0.023141  61%
      2) 0.014459  66% 0.014470  65% 0.014420  65% 0.014413  65% 0.014421  64% 0.014492  65% 0.014512  66% 0.014579  66% 0.014500  65% 0.014501  66% 0.014537  62%
      
      revset #3: heads(-10000:-1)
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 0.003696      0.003681      0.003719      0.003746      0.003725      0.003750      0.003692      0.003747      0.003712      0.003754      0.003763
      1) 0.002131  57% 0.002142  58% 0.002147  57% 0.002203  58% 0.002143  57% 0.002208  58% 0.002158  58% 0.002182  58% 0.002169  58% 0.002209  58% 0.002201  58%
      2) 0.001490  69% 0.001524  71% 0.001515  70% 0.001528  69% 0.001531  71% 0.001520  68% 0.001549  71% 0.001542  70% 0.001560  71% 0.001559  70% 0.001544  70%
      
      revset #4: (-5000:-1000) and heads(-10000:-1)
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 0.003832      0.003816      0.003747      0.003814      0.003749      0.003894      0.003784      0.003796      0.003915      0.003829      0.003795
      1) 0.002282  59% 0.002208  57% 0.002220  59% 0.002240  58% 0.002210  58% 0.002276  58% 0.002250  59% 0.002250  59% 0.002311  59% 0.002230  58% 0.002241  59%
      2) 0.001658  72% 0.001662  75% 0.001568  70% 0.001599  71% 0.001588  71% 0.001696  74% 0.001615  71% 0.001593  70% 0.001710  73% 0.001622  72% 0.001616  72%
      
      revset #5: heads(matching(tip, "author"))
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 7.826449      7.563260      7.581034      7.688493      7.634001      7.777860      7.768228      8.026097      7.767422      7.565254      7.938643
      1) 7.750766      7.562555      7.660426      7.574089      7.492220      7.438582      7.562015      7.530635  93% 7.636343      7.636712      7.645113
      2) 7.617941      7.519601      7.584922      7.507653      7.547440      7.524436      7.575291      7.883991      7.792142      7.709622      7.868595
      
      revset #6: heads(matching(tip, "author")) and -10000:-1
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 7.744489      7.728684      7.734065      7.928513      7.875949      7.883727      7.815492      7.791335      7.784793      7.761218      7.815731
      1) 7.808956      7.480446      7.618759      7.920270      7.676343      7.803613      7.770210      7.713100      7.584420      7.767335      7.825140
      2) 7.519987      7.938748 106% 7.805328      7.694162      7.750129      7.714229      7.603825      7.580734      7.555291      7.524207      7.504580
      
      revset #7: (-10000:-1) and heads(matching(tip, "author"))
         plain         min           max           first         last          reverse       rev..rst      rev..ast      sort          sor..rst      sor..ast
      0) 7.909321      7.694357      7.666021      7.538686      7.771821      7.876217      7.852103      7.812727      7.545919      7.788860      7.764585
      1) 7.749232      7.683715      7.968393      7.895257      7.764160      8.314884 105% 7.921697      7.882613      7.867209      7.684707      7.544501
      2) 7.824903      7.784605      7.727846      7.566613      7.581994      7.539205  90% 7.555316      7.535572      7.581786      7.901795      7.662832
      37ead13fb3d4
  17. Feb 20, 2019
    • Georges Racinet's avatar
      changelog: prefilter in headrevs() · 6843379bf99e
      Georges Racinet authored
      In case where headrevs() is called on some revisions, we perform
      the check that aren't filtered in advance, and switch revlog to
      use its unchecked form.
      
      This allows to work with alternative implementations that don't have knowledge
      of the filtering system, such as the Rust one.
      6843379bf99e
  18. Feb 21, 2019
    • Georges Racinet's avatar
      tests: fixed test too dependent on actual exception wording · cde37ed080c9
      Georges Racinet authored
      On one of the machines I use to run the tests prior to submission,
      the default Python is 2.7.5, with the following wording:
      
        must be encoded string without NULL bytes, not str
      
      This third form (and possible future ones) are motivation to
      use a wider catching regexp.
      cde37ed080c9
  19. Jan 14, 2019
    • Augie Fackler's avatar
      contrib: enforce wrapping too-long lines with () instead of \ · e2472b12c842
      Augie Fackler authored
      This is the style I prefer, and an anecdotal exploration of styles
      recommended in style guides etc. Further, to quote pep8:
      
      > The preferred way of wrapping long lines is by using Python's implied
      > line continuation inside parentheses, brackets and braces. Long lines
      > can be broken over multiple lines by wrapping expressions in
      > parentheses. These should be used in preference to using a backslash
      > for line continuation.
      
      So I think this is a virtuous change.
      
      Differential Revision: https://phab.mercurial-scm.org/D5995
      e2472b12c842
  20. Feb 20, 2019
  21. Feb 21, 2019
  22. Jan 14, 2019
  23. Feb 21, 2019
  24. Feb 19, 2019
    • Martin von Zweigbergk's avatar
      copies: do copy tracing based on ctx.p[12]copies() if configured · 49ad315b39ee
      Martin von Zweigbergk authored
      This adds an option to do copy tracing in a changeset-optimized
      way. If the metadata is stored in filelogs, this is obviously going to
      be suboptimal. The point is that it provides a way of transitioning to
      changeset-stored metadata.
      
      Some of the tests behave a little differently, but they all seem
      resonable to me.
      
      The config option may very well be renamed later when it's clearer
      what options we want and how they will behave.
      
      When the test suite is run with --extra-config-opt to use the new copy
      tracing, all tests pass, besides test-copies.t (which fails in the
      same way as you can see in this patch).
      
      `hg debugpathcopies 4.0 4.8` reports 82 copies. With this option
      enabled, the only difference is this:
      
        -mercurial/pure/bdiff.py -> mercurial/cffi/bdiff.py
        +setup_bdiff_cffi.py -> mercurial/cffi/bdiff.py
      
      I believe that happened because it was renamed in different ways on
      different sides of a merge and the new algorithm arbitrarily prefers
      copies that happened on p1. The runtime is about 0.85 seconds with the
      old copy tracing and 5.7 seconds with the new copy tracing. That's
      kind of slow, but actually better than I had expected.
      
      Differential Revision: https://phab.mercurial-scm.org/D5991
      49ad315b39ee
  25. Jan 18, 2019
    • Martin von Zweigbergk's avatar
      context: introduce p[12]copies() methods and debugp[12]copies commands · a4358f7345b4
      Martin von Zweigbergk authored
      As mentioned earlier, I'm working on support for storing copy metadata
      in the changeset instead of in the filelog.
      
      In order to transition a repo from storing metadata in filelogs to
      storing it in the changeset, I'm going to provide a config option for
      reading the metadata from the changeset, but falling back to getting
      it from the filelog if it's not in the changeset. In this compatiblity
      mode, the changeset-optmized algorithms will be used. We will then
      need to convert the filelog copy metadata to look like that provided
      by changeset copy metadata. This patch introduces methods that do just
      that.
      
      By having these methods here, we can start writing changeset-optimized
      algorithms that should work already before we add any support for
      storing the metadata in the changesets.
      
      This commit also includes new debugp[12]copies commands and exercises
      them in test-copies.t.
      
      Differential Revision: https://phab.mercurial-scm.org/D5990
      a4358f7345b4
  26. Feb 15, 2019
  27. Feb 19, 2019
Loading