diff contrib/lock-checker.py @ 20244:47d0843647d1

util: introduce util.debugstacktrace for showing a stack trace without crashing This is often very handy when hacking/debugging. Calling util.debugstacktrace('hey') from a place in hg will give something like: hey at: ./hg:38 in <module> /home/user/hgsrc/mercurial/dispatch.py:28 in run /home/user/hgsrc/mercurial/dispatch.py:65 in dispatch /home/user/hgsrc/mercurial/dispatch.py:88 in _runcatch /home/user/hgsrc/mercurial/dispatch.py:740 in _dispatch /home/user/hgsrc/mercurial/dispatch.py:514 in runcommand /home/user/hgsrc/mercurial/dispatch.py:830 in _runcommand /home/user/hgsrc/mercurial/dispatch.py:801 in checkargs /home/user/hgsrc/mercurial/dispatch.py:737 in <lambda> /home/user/hgsrc/mercurial/util.py:472 in check ...
author Mads Kiilerich <madski@unity3d.com>
date Sun, 12 Jan 2014 23:28:21 +0100
parents b8424c92ba2b
children
line wrap: on
line diff
--- a/contrib/lock-checker.py	Tue Jan 07 22:29:57 2014 +0100
+++ b/contrib/lock-checker.py	Sun Jan 12 23:28:21 2014 +0100
@@ -7,21 +7,12 @@
 This currently only checks store locks, not working copy locks.
 """
 import os
-import traceback
-
-def _warnstack(ui, msg, skip=1):
-    '''issue warning with the message and the current stack, skipping the
-    skip last entries'''
-    ui.warn('%s at:\n' % msg)
-    entries = traceback.extract_stack()[:-skip]
-    fnmax = max(len(entry[0]) for entry in entries)
-    for fn, ln, func, _text in entries:
-        ui.warn(' %*s:%-4s in %s\n' % (fnmax, fn, ln, func))
+from mercurial import util
 
 def _checklock(repo):
     l = repo._lockref and repo._lockref()
     if l is None or not l.held:
-        _warnstack(repo.ui, 'missing lock', skip=2)
+        util.debugstacktrace('missing lock', skip=1)
 
 def reposetup(ui, repo):
     orig = repo.__class__