hg diff and update taking forever

Michael P. Soulier msoulier at digitaltorque.ca
Sun May 13 15:48:28 CDT 2007


On 13/05/07 Matt Mackall said:

> My first response would be to run strace.
> 
> If you don't have strace, you can run hg <cmd> --traceback, then
> interrupting it will give a back trace that may provide some hint of
> what it's doing.

I don't have strace, it's a virtual server with limited tools. 

[pawsitiveapproach][/var/www/papproach]$ . ~/.profile
[pawsitiveapproach][/var/www/papproach]$ hg --traceback --lsprof diff
   CallCount     Total(s)    Inline(s) module:lineno(function)
         694     15.6325     15.6325   <posix.lstat>
           8      1.1643      1.1643   <method 'sort' of 'list' objects>
           4      0.2517      0.2517   <posix.listdir>
         680     17.2374      0.0905   mercurial.dirstate:397(findfiles)
        +693     15.6325     15.6325   +<posix.lstat>
          +4      1.1643      1.1643   +<method 'sort' of 'list' objects>
          +4      0.2517      0.2517   +<posix.listdir>
       +1400      0.0608      0.0584   +posixpath:56(join)
        +705      0.0265      0.0050   +mercurial.dirstate:385(imatch)
        1406      0.0608      0.0584   posixpath:56(join)
       +1407      0.0014      0.0014   +<method 'startswith' of 'str' objects>
       +1385      0.0010      0.0010   +<method 'endswith' of 'str' objects>
           1      0.0099      0.0083   socket:43(<module>)
          +1      0.0013      0.0012   +socket:148(_socketobject)
          +2      0.0002      0.0001   +os:35(_get_exports_list)
          +1      0.0000      0.0000   +socket:199(_fileobject)
          +2      0.0000      0.0000   +<method 'extend' of 'list' objects>
          +1      0.0000      0.0000   +socket:138(_closedsocket)
         705      0.0177      0.0057   mercurial.util:478(<lambda>)
        +692      0.0085      0.0030   +mercurial.util:433(buildfn)
        +705      0.0023      0.0023   +<method 'endswith' of 'str' objects>
        +705      0.0006      0.0006   +mercurial.util:234(always)
        +705      0.0005      0.0005   +mercurial.util:472(<lambda>)
         692      0.0055      0.0055   <built-in method match>
         705      0.0265      0.0050   mercurial.dirstate:385(imatch)
        +705      0.0177      0.0057   +mercurial.util:478(<lambda>)
        +703      0.0039      0.0030   +mercurial.dirstate:100(ignore)
          22      0.0177      0.0045   <__import__>
          +1      0.0099      0.0083   +socket:43(<module>)
          +1      0.0005      0.0004   +mercurial.mdiff:8(<module>)
          +1      0.0003      0.0003   +bisect:1(<module>)
          +1      0.0003      0.0002   +mercurial.lock:8(<module>)
          +1      0.0015      0.0002   +sha:6(<module>)
Traceback (most recent call last):
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/commands.py",
line 3216, in dispatch
    return d()
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/commands.py",
line 3182, in <lambda>
    d = lambda: func(u, repo, *args, **cmdoptions)
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/commands.py",
line 1030, in diff
    opts=patch.diffopts(ui, opts))
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/patch.py",
line 463, in diff
    changes = repo.status(node1, node2, files, match=match)[:5]
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/localrepo.py",
line 861, in status
    list_ignored, list_clean)
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/dirstate.py",
line 486, in status
    for src, fn, st in self.statwalk(files, match, ignored=list_ignored):
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/dirstate.py",
line 462, in statwalk
    sorted_ = [ x for x in findfiles(f) ]
  File
"/home/pawsitiveapproach/python2.5/lib/python2.5/site-packages/mercurial/dirstate.py",
line 421, in findfiles
    st = os.lstat(p)
KeyboardInterrupt
interrupted!

It seems to be spending a lot of time in lstat(). 

Mike
-- 
Michael P. Soulier <msoulier at digitaltorque.ca>
"Any intelligent fool can make things bigger and more complex... It
takes a touch of genius - and a lot of courage to move in the opposite
direction." --Albert Einstein
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://selenic.com/pipermail/mercurial/attachments/20070513/e953c23a/attachment.pgp 


More information about the Mercurial mailing list