Mercurial > hg
annotate contrib/casesmash.py @ 26123:bdac264e5ed4
contrib: add showstack extension
This allows getting a Python stack trace at any time on Unix by
hitting Ctrl-\ (or Ctrl-T on BSDs). Useful for debugging mysterious
hangs on the fly. Sample output:
$ hg log -k nosuchmessage
^\
File "/home/mpm/hg/mercurial/revset.py", line 3089, in _iterfilter
if cond(x):
File "/home/mpm/hg/mercurial/util.py", line 415, in f
cache[arg] = func(arg)
File "/home/mpm/hg/mercurial/revset.py", line 1215, in matches
for t in c.files() + [c.user(), c.description()])
File "/home/mpm/hg/mercurial/context.py", line 525, in files
return self._changeset[3]
File "/home/mpm/hg/mercurial/util.py", line 531, in __get__
result = self.func(obj)
File "/home/mpm/hg/mercurial/context.py", line 498, in _changeset
return self._repo.changelog.read(self.rev())
File "/home/mpm/hg/mercurial/changelog.py", line 338, in read
text = self.revision(node)
File "/home/mpm/hg/mercurial/revlog.py", line 1092, in revision
bins = self._chunks(chain)
File "/home/mpm/hg/mercurial/revlog.py", line 1013, in _chunks
ladd(decompress(buffer(data, chunkstart - offset, chunklength)))
File "/home/mpm/hg/mercurial/revlog.py", line 91, in decompress
return _decompress(bin)
----
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 28 Aug 2015 16:59:31 -0500 |
parents | 9de689d20230 |
children | 42a7301fb4d5 |
rev | line source |
---|---|
19322
ff1586a3adc5
cleanup: remove unused imports
Simon Heimberg <simohe@besonet.ch>
parents:
14730
diff
changeset
|
1 import os, __builtin__ |
14730 | 2 from mercurial import util |
3 | |
4 def lowerwrap(scope, funcname): | |
5 f = getattr(scope, funcname) | |
6 def wrap(fname, *args, **kwargs): | |
7 d, base = os.path.split(fname) | |
8 try: | |
9 files = os.listdir(d or '.') | |
19378
9de689d20230
cleanup: drop unused variables and an unused import
Simon Heimberg <simohe@besonet.ch>
parents:
19322
diff
changeset
|
10 except OSError: |
14730 | 11 files = [] |
12 if base in files: | |
13 return f(fname, *args, **kwargs) | |
14 for fn in files: | |
15 if fn.lower() == base.lower(): | |
16 return f(os.path.join(d, fn), *args, **kwargs) | |
17 return f(fname, *args, **kwargs) | |
18 scope.__dict__[funcname] = wrap | |
19 | |
20 def normcase(path): | |
21 return path.lower() | |
22 | |
23 os.path.normcase = normcase | |
24 | |
25 for f in 'file open'.split(): | |
26 lowerwrap(__builtin__, f) | |
27 | |
28 for f in "chmod chown open lstat stat remove unlink".split(): | |
29 lowerwrap(os, f) | |
30 | |
31 for f in "exists lexists".split(): | |
32 lowerwrap(os.path, f) | |
33 | |
34 lowerwrap(util, 'posixfile') |