了解mercurial repo状态的最快方法

时间:2016-11-06 17:46:49

标签: shell mercurial sh

在大型存储库上,hg status可能非常慢,如果我们想在shell提示符中显示存储库的状态,则可能会出现问题。

以下是hg --profile status的结果:

   CallCount    Recursive     Total(s)    Inline(s) module:lineno(function)
        7682            0      0.3287      0.3287   <mercurial.osutil.listdir>
       63067            0      0.2052      0.2052   <method 'match' of '_sre.SRE_Pattern' objects>
           1            0      0.7164      0.0735   mercurial.dirstate:999(traverse)
           2            0      0.8105      0.0496   mercurial.dirstate:1102(status)
         139            0      0.0420      0.0420   <zlib.decompress>
       62501            0      0.1137      0.0339   mercurial.dirstate:617(_normalizefile)
          12            0      0.0307      0.0307   <method 'read' of 'file' objects>
       63760            0      0.0283      0.0283   <method 'get' of 'dict' objects>
           1            0      0.0217      0.0217   <mercurial.parsers.make_file_foldmap>
         376            0      0.0508      0.0202   mercurial.manifest:468(walk)
       70079            0      0.0327      0.0170   mercurial.posix:241(normcase)
           1            0      0.0167      0.0167   mercurial.dirstate:200(_dirs)
       70079            0      0.0156      0.0156   <mercurial.parsers.asciilower>
           2            0      0.0137      0.0137   <mercurial.parsers.parse_dirstate>
       62875            0      0.2166      0.0116   mercurial.match:177(__call__)
           4            0      0.0113      0.0113   <method 'update' of '_hashlib.HASH' objects>
           1            0      0.0107      0.0106   mercurial.manifest:451(_dirs)
         105           75      0.0132      0.0081   <__import__>
           2            0      0.7559      0.0069   mercurial.dirstate:940(walk)
           2            0      0.0062      0.0062   <mercurial.mpatch.patches>
         724          678      0.0188      0.0061   sre_parse:395(_parse)
        1198         1152      0.0094      0.0056   sre_compile:64(_compile)
        3866            0      0.0043      0.0040   re:208(escape)
        6227            0      0.0044      0.0036   sre_parse:193(__next)
           1            0      0.0767      0.0028   mercurial.manifest:1307(read)
        1431         1152      0.0032      0.0026   sre_parse:151(getwidth)
           1            0      0.0219      0.0026   mercurial.dirstate:167(_dirfoldmap)
       30130            0      0.0024      0.0024   <method 'append' of 'list' objects>
           1            0      0.0022      0.0022   mercurial.manifest:407(__init__)
        7573            0      0.0036      0.0022   sre_parse:141(__getitem__)

我已经找到hg branchsee here for more details)的优化,但我找不到hg status

你知道一些提高它的魔术吗?我不需要知道哪些文件是脏的细节,我只需要知道回购是否干净,这样我就可以显示一个干净或红色的提示。

谢谢!

1 个答案:

答案 0 :(得分:1)

您是否尝试过FsMonitor扩展程序?

来自维基页面的描述:

  

将文件监控程序Watchman与Mercurial集成到   产生更快的状态结果。

     

在特定的Linux系统上,对于具有over的真实存储库   在ext4上托管400,000个文件,vanilla hg状态需要1.3秒。上   相同的系统,使用fsmonitor大约需要0.3秒。