Skip to content
Snippets Groups Projects
  1. May 07, 2014
  2. May 05, 2014
    • Thomas Arendsen Hein's avatar
      setup.py, make: avoid problems with outdated, existing hgext/__index__.py* · 54d7657d7d1e
      Thomas Arendsen Hein authored
      "make clean" already removed __index__.py[cdo], but not the __index__.py
      (automatically generated by "python setup.py build_hgextindex").
      
      "setup.py build_hgextindex" did not generate a new index if file
      __index__.py[cdo] already existed, because if __index__.py was removed,
      the compiled file containing the old information was imported and used.
      Generate an empty file (with a new timestamp to generate a new .py[cdo])
      instead and make mercurial.extensions ignore the unset docs attribute.
      
      One of the problems was a failed test-help.t, to reproduce:
      
      $ rm hgext/__index__.py*
      $ echo 'docs = {"mq": "dummy"}' > hgext/__index__.py
      $ make test-help.t
      
      With this a "make clean" or "python setup.py build_hgextindex" helps.
      54d7657d7d1e
  3. May 03, 2014
    • Mads Kiilerich's avatar
      color: don't fail on error messages when no curses (issue4237) · 75aaae8ad660
      Mads Kiilerich authored
      The error only occured when Python didn't have curses - such as on Windows and
      when Python was built without curses support.
      
      No curses can also be emulated by (re)moving .../lib/python2.7/curses/ from the
      Python installation.
      
      It is left as an exercise to figure out exactly what changed in Mercurial that
      triggered this error.
      75aaae8ad660
    • Steve Borho's avatar
      win32: backout 1a9ebc83a74c · 4898c37e03c0
      Steve Borho authored
      This change conflicted with TortoiseHg's use of QFileSystemWatcher. Files which
      were being monitored (for file-system events) were unable to be reliably updated
      using util.atomictempfile.  Often the update would error out in the middle of
      the process leaving neither the old or the new file in place.
      
      My guess is that _kernel32.CreateFileA() is triggering an exception that is
      not handled correctly within unlink()
      4898c37e03c0
  4. May 01, 2014
  5. Apr 30, 2014
  6. May 01, 2014
  7. Apr 26, 2014
    • Pierre-Yves David's avatar
      spanset: directly use __contains__ instead of a lambda · b9defeeb62e6
      Pierre-Yves David authored
      Spanset are massively used in revset. First because the initial subset itself is
      a repo wide spanset. We speed up the __and__ operation by getting rid of a
      gratuitous lambda call. A more long terms solution would be to:
      
      1. speed up operation between spansets,
      2. have a special smartset for `all` revisions.
      
      In the mean time, this is a very simple fix that buyback some of the performance
      regression.
      
      Below is performance benchmark for trival `and` operation between two spansets.
      (Run on an unspecified fairly large repository.)
      
      revset tip:0
      2.9.2)  wall 0.282543 comb 0.280000 user 0.260000 sys 0.020000 (best of 35)
      before) wall 0.819181 comb 0.820000 user 0.820000 sys 0.000000 (best of 12)
      after)  wall 0.645358 comb 0.650000 user 0.650000 sys 0.000000 (best of 16)
      
      Proof of concept implementation of an `all` smartset brings this to 0.10 but it's
      too invasive for stable.
      b9defeeb62e6
  8. Apr 30, 2014
  9. Apr 26, 2014
  10. Apr 28, 2014
    • Pierre-Yves David's avatar
      revset: inline spanset containment check (fix perf regression) · 1d7a2771aa36
      Pierre-Yves David authored
      Calling a function is super expensive in python. We inline the trivial range
      comparison to get back to more sensible performance on common revset operation.
      
      Benchmark result below:
      
      Revision mapping:
      0) 3f83fc5cfe71 2.9.2 release
      1) bcfd44abad93 current @
      2) This revision
      
      
      revset #0: public()
      0) wall 0.010890 comb 0.010000 user 0.010000 sys 0.000000 (best of 201)
      1) wall 0.012109 comb 0.010000 user 0.010000 sys 0.000000 (best of 199)
      2) wall 0.012211 comb 0.020000 user 0.020000 sys 0.000000 (best of 197)
      
      revset #1: :10000 and public()
      0) wall 0.007141 comb 0.010000 user 0.010000 sys 0.000000 (best of 361)
      1) wall 0.014139 comb 0.010000 user 0.010000 sys 0.000000 (best of 186)
      2) wall 0.008334 comb 0.010000 user 0.010000 sys 0.000000 (best of 308)
      
      revset #2: draft()
      0) wall 0.009610 comb 0.010000 user 0.010000 sys 0.000000 (best of 279)
      1) wall 0.010942 comb 0.010000 user 0.010000 sys 0.000000 (best of 243)
      2) wall 0.011036 comb 0.010000 user 0.010000 sys 0.000000 (best of 239)
      
      revset #3: :10000 and draft()
      0) wall 0.006852 comb 0.010000 user 0.010000 sys 0.000000 (best of 383)
      1) wall 0.014641 comb 0.010000 user 0.010000 sys 0.000000 (best of 183)
      2) wall 0.008314 comb 0.010000 user 0.010000 sys 0.000000 (best of 299)
      
      We can see this changeset gains back the regression for `and` operation on
      spanset.  We are still a bit slowerfor the `public()` and `draft()`. Predicates
      not touched by this changeset.
      1d7a2771aa36
  11. Apr 30, 2014
    • Matt Mackall's avatar
      ancestor: silence multiple ancestor warning outside of merge (issue4234) · 9f12d8665c7b
      Matt Mackall authored
      The current situation is a bit of a layering violation as
      merge-specific knowledge is pushed down to lower layers and leaks
      merge assumptions into other code paths.
      
      Here, we simply silence the warning with a hack. Both the warning and
      the hack will probably go away in the near future when bid merge is
      made the default.
      9f12d8665c7b
  12. Apr 25, 2014
  13. Apr 28, 2014
  14. Apr 29, 2014
    • Pierre-Yves David's avatar
      graft: do not use `.remove` on a smart set (regression) · a1381eea7c7d
      Pierre-Yves David authored
      Revset calls use to return a list. Graft use to mutate that list. We cannot do
      this anymore leading to a crash when grafting multiple changeset with a revset.
      
          File ".../mercurial/commands.py", line 3117, in graft
            revs.remove(rev)
          AttributeError: '_addset' object has no attribute 'remove'
      
      We are late in code-freeze so we make the shortest possible fix by turning it
      back to a list.
      a1381eea7c7d
  15. Apr 28, 2014
    • Greg Hurrell's avatar
      help: clarify distinction among `contains`/`file`/`filelog` · e9c2f76be74b
      Greg Hurrell authored
      For a Mercurial new-comer, the distinction between `contains(x)`,
      `file(x)`, and `filelog(x)` in the "revsets" help page may not be
      obvious. This commit tries to make things more obvious (text based on
      an explanation from Matt in an FB group thread).
      e9c2f76be74b
  16. Apr 24, 2014
  17. Apr 23, 2014
  18. Apr 26, 2014
    • Matt Harbison's avatar
    • Yuya Nishihara's avatar
      cmdserver: forcibly use L channel to read password input (issue3161) · 9336bc7dca8e
      Yuya Nishihara authored
      Command server is designed to use the channel protocol even if the server
      process is accessible to tty, whereas vanilla hg should be able to read
      password from tty in that case.  So it isn't enough to swap sys.stdin:
      
          # works only if the server process is detached from the console
          sys.stdin = self.fin
          getpass.getpass('')
          sys.stdin = oldin
      
      or test isatty:
      
          # vanilla hg can't talk to tty if stdin is redirected
          if self._isatty(self.fin):
              return getpass.getpass('')
          else:
              ...
      
      Since ui.nontty flag is undocumented and command-server channels don't provide
      isatty(), this change won't affect the other uses of ui._isatty().
      
      issue3161 also suggests to provide some context of messages.  I think it can
      be implemented by using the generic templating function.
      9336bc7dca8e
  19. Apr 29, 2014
  20. Apr 27, 2014
  21. Apr 23, 2014
  22. Apr 21, 2014
    • Pierre-Yves David's avatar
      bundle2: gracefully handle hook abort · bcfd44abad93
      Pierre-Yves David authored
      We make sure any exceptions raised during the whole span of handling bundle2
      processing are decorated. This let us catch exceptions raised by hooks prior to
      transaction commit.
      bcfd44abad93
  23. Apr 22, 2014
Loading