git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Catalin Marinas" <catalin.marinas@gmail.com>
To: "Karl Hasselström" <kha@treskal.com>
Cc: git@vger.kernel.org
Subject: Re: [StGIT PATCH] Don't use patches/<branch>/current
Date: Wed, 16 May 2007 13:07:14 +0100	[thread overview]
Message-ID: <b0943d9e0705160507h2b3c4a34xe9895d007c41d91a@mail.gmail.com> (raw)
In-Reply-To: <20070516071130.GB7453@diana.vm.bytemark.co.uk>

[-- Attachment #1: Type: text/plain, Size: 1182 bytes --]

On 16/05/07, Karl Hasselström <kha@treskal.com> wrote:
> On 2007-05-15 21:01:43 +0100, Catalin Marinas wrote:
>
> > What is the impact on the bash completion for calling StGIT rather
> > than reading those files? Is it visible?
>
> Yes, it's visible, but not annoying (to me anyway). The overhead is
> akin to the overhead we used to have when "stg help" generated the
> command names -- on the order of 100-200 ms, when StGIT is in the
> cache. The expensive part is to start stgit; the git calls are cheap.
> So theoretically the completion script could duplicate the logic in
> StGIT and avoid most of the overhead, if someone wanted it badly
> enough.

I did a quick test of 'stg series' with the DAG patches applied, on a
Linux kernel repository ('du -sh .git' is 285M) with 42 patches (only
25 applied). It constantly takes over 2 seconds to complete (compared
to < 200ms without the DAG patches). The problem is that this delay
will happen for bash completion as well.

It seems that most of the time is spent in git._output_lines() called
from stack.read_refs() (for git-show-ref). I attach the profiling
output generated by stg-prof.

-- 
Catalin

[-- Attachment #2: prof.txt --]
[-- Type: text/plain, Size: 38609 bytes --]

+ cross-arm
+ init-err
+ ll-printk
+ compressed-head-stack
+ armv7-uncompress
+ armv7-tlb
+ armv7-xenon
+ armv7-vfpv3
+ armv7-neon
+ armv7-thumb2-user
+ pb926-pci-io
+ mpcore-smsc911x
+ smsc911x-driver
+ realview-eb-pci-mem
+ realview-eb-pci-io
+ nommu-consistent-api
+ nommu-fault
+ nommu-page-tlb
+ nommu-context-id
+ nommu-integrator
+ nommu-realview-eb
+ nommu-kconfig
+ nommu-ptrace
+ nommu-armv6
> nommu-armv7
- per-cpu-asids
- arch-dsb-mmiowb
- t2-arch-arm-clone
- t2-function-type
- t2-exception-handling
- t2-unified-syntax
- t2-exception-handling-alternative
- t2-srs-variant
- thumb2-kernel-port
- errata-arm1136-364296
- errata-arm1136-411920
- pipt-icache-flush
- smp-writealloc
         3150 function calls (3112 primitive calls) in 2.229 CPU seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    2.229    2.229 <string>:1(?)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:105(Error)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:117(NoSectionError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:124(DuplicateSectionError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:131(NoOptionError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:140(InterpolationError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:148(InterpolationMissingOptionError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:161(InterpolationSyntaxError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:165(InterpolationDepthError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:176(ParsingError)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:188(MissingSectionHeaderError)
        1    0.000    0.000    0.009    0.009 ConfigParser.py:202(RawConfigParser)
        1    0.000    0.000    0.000    0.000 ConfigParser.py:487(ConfigParser)
        1    0.000    0.000    0.002    0.002 ConfigParser.py:570(SafeConfigParser)
        1    0.000    0.000    0.011    0.011 ConfigParser.py:88(?)
        1    0.000    0.000    0.000    0.000 UserDict.py:19(__getitem__)
        1    0.000    0.000    0.000    0.000 UserDict.py:62(__contains__)
        1    0.000    0.000    0.000    0.000 basedir.py:2(?)
        1    0.007    0.007    0.007    0.007 basedir.py:23(__output)
        1    0.000    0.000    0.007    0.007 basedir.py:33(get)
        1    0.003    0.003    0.011    0.011 common.py:2(?)
        1    0.000    0.000    0.000    0.000 common.py:32(CmdException)
        1    0.000    0.000    0.000    0.000 common.py:37(RevParseException)
        1    0.000    0.000    0.006    0.006 config.py:125(config_setup)
        1    0.000    0.000    0.000    0.000 config.py:134(ConfigOption)
        2    0.000    0.000    0.000    0.000 config.py:137(__init__)
        1    0.000    0.000    0.000    0.000 config.py:2(?)
        1    0.000    0.000    0.000    0.000 config.py:24(GitConfigException)
        1    0.000    0.000    0.000    0.000 config.py:27(GitConfig)
        1    0.006    0.006    0.006    0.006 config.py:65(get)
        1    0.005    0.005    0.023    0.023 git.py:180(_output_one_line)
        2    2.029    1.015    2.067    1.034 git.py:192(_output_lines)
        1    0.002    0.002    0.003    0.003 git.py:2(?)
        1    0.000    0.000    0.023    0.023 git.py:288(get_head_file)
        1    0.000    0.000    0.000    0.000 git.py:30(GitException)
        1    0.000    0.000    0.000    0.000 git.py:39(Person)
        1    0.000    0.000    0.000    0.000 git.py:71(Commit)
        1    0.000    0.000    0.000    0.000 gitmergeonefile.py:2(?)
        1    0.000    0.000    0.000    0.000 gitmergeonefile.py:27(GitMergeException)
        1    0.001    0.001    2.228    2.228 main.py:197(main)
        1    0.000    0.000    0.000    0.000 main.py:32(canonical_cmd)
        1    0.000    0.000    0.015    0.015 main.py:51(__getitem__)
        1    0.000    0.000    0.000    0.000 optparse.py:1007(_create_option_list)
        1    0.000    0.000    0.001    0.001 optparse.py:1012(_populate_option_list)
        1    0.000    0.000    0.000    0.000 optparse.py:1022(_init_parsing_state)
        1    0.000    0.000    0.000    0.000 optparse.py:1036(set_usage)
        1    0.000    0.000    0.000    0.000 optparse.py:1059(get_default_values)
        1    0.000    0.000    0.000    0.000 optparse.py:1091(_get_args)
        1    0.000    0.000    0.000    0.000 optparse.py:1097(parse_args)
        1    0.000    0.000    0.000    0.000 optparse.py:1136(check_values)
        1    0.000    0.000    0.000    0.000 optparse.py:1149(_process_args)
        1    0.000    0.000    0.000    0.000 optparse.py:140(__init__)
        1    0.000    0.000    0.000    0.000 optparse.py:247(__init__)
       12    0.001    0.000    0.002    0.000 optparse.py:413(__init__)
       12    0.000    0.000    0.000    0.000 optparse.py:432(_check_opt_strings)
       12    0.000    0.000    0.000    0.000 optparse.py:441(_set_opt_strings)
       12    0.000    0.000    0.000    0.000 optparse.py:462(_set_attrs)
       12    0.000    0.000    0.000    0.000 optparse.py:480(_check_action)
       12    0.000    0.000    0.000    0.000 optparse.py:486(_check_type)
       12    0.000    0.000    0.000    0.000 optparse.py:504(_check_choice)
       12    0.000    0.000    0.000    0.000 optparse.py:517(_check_dest)
       12    0.000    0.000    0.000    0.000 optparse.py:528(_check_const)
       12    0.000    0.000    0.000    0.000 optparse.py:534(_check_nargs)
       12    0.000    0.000    0.000    0.000 optparse.py:543(_check_callback)
        1    0.000    0.000    0.000    0.000 optparse.py:662(__init__)
        1    0.000    0.000    0.000    0.000 optparse.py:748(__init__)
        1    0.000    0.000    0.000    0.000 optparse.py:759(_create_option_mappings)
        1    0.000    0.000    0.000    0.000 optparse.py:775(set_conflict_handler)
        1    0.000    0.000    0.000    0.000 optparse.py:780(set_description)
       13    0.000    0.000    0.000    0.000 optparse.py:786(_check_conflict)
       13    0.000    0.000    0.001    0.000 optparse.py:815(add_option)
        1    0.000    0.000    0.001    0.001 optparse.py:845(add_options)
        1    0.000    0.000    0.001    0.001 optparse.py:975(__init__)
        1    0.000    0.000    0.000    0.000 os.py:444(__setitem__)
        4    0.000    0.000    0.000    0.000 popen2.py:21(_cleanup)
        1    0.000    0.000    0.000    0.000 popen2.py:25(Popen3)
        4    0.064    0.016    0.064    0.016 popen2.py:31(__init__)
        1    0.000    0.000    0.000    0.000 popen2.py:7(?)
        3    0.000    0.000    0.000    0.000 popen2.py:87(wait)
        1    0.000    0.000    0.000    0.000 popen2.py:97(Popen4)
        1    0.000    0.000    0.000    0.000 posixpath.py:110(basename)
        5    0.000    0.000    0.000    0.000 posixpath.py:184(isdir)
        4    0.000    0.000    0.000    0.000 posixpath.py:197(isfile)
        8    0.000    0.000    0.000    0.000 posixpath.py:56(join)
        1    0.000    0.000    0.000    0.000 posixpath.py:74(split)
        1    0.000    0.000    2.229    2.229 profile:0(main())
        0    0.000             0.000          profile:0(profiler)
        1    0.001    0.001    2.163    2.163 series.py:111(func)
        1    0.001    0.001    0.015    0.015 series.py:2(?)
       38    0.001    0.000    0.001    0.000 series.py:88(__print_patch)
       46    0.000    0.000    0.000    0.000 sets.py:119(__iter__)
        1    0.000    0.000    0.000    0.000 sets.py:356(_update)
        1    0.000    0.000    0.000    0.000 sets.py:393(ImmutableSet)
        1    0.001    0.001    0.001    0.001 sets.py:41(?)
        1    0.000    0.000    0.000    0.000 sets.py:418(Set)
       72    0.001    0.000    0.001    0.000 sets.py:425(__init__)
       89    0.001    0.000    0.001    0.000 sets.py:515(add)
       25    0.000    0.000    0.000    0.000 sets.py:528(remove)
        1    0.000    0.000    0.000    0.000 sets.py:564(_TemporarilyImmutableSet)
        1    0.000    0.000    0.000    0.000 sets.py:83(BaseSet)
       26    0.000    0.000    0.000    0.000 sets.py:99(__len__)
        1    0.000    0.000    0.000    0.000 shutil.py:16(Error)
        1    0.000    0.000    0.000    0.000 shutil.py:5(?)
      896    0.017    0.000    0.028    0.000 sre.py:129(match)
        4    0.000    0.000    0.013    0.003 sre.py:177(compile)
      900    0.012    0.000    0.025    0.000 sre.py:216(_compile)
        5    0.000    0.000    0.001    0.000 sre_compile.py:151(_compile_charset)
        5    0.000    0.000    0.000    0.000 sre_compile.py:180(_optimize_charset)
     17/4    0.001    0.000    0.002    0.001 sre_compile.py:24(_compile)
        7    0.000    0.000    0.000    0.000 sre_compile.py:324(_simple)
        4    0.000    0.000    0.001    0.000 sre_compile.py:331(_compile_info)
       12    0.000    0.000    0.000    0.000 sre_compile.py:42(<lambda>)
        8    0.000    0.000    0.000    0.000 sre_compile.py:440(isstring)
        4    0.000    0.000    0.004    0.001 sre_compile.py:446(_code)
        4    0.000    0.000    0.013    0.003 sre_compile.py:461(compile)
       32    0.000    0.000    0.000    0.000 sre_parse.py:133(__len__)
       51    0.000    0.000    0.000    0.000 sre_parse.py:137(__getitem__)
        7    0.000    0.000    0.000    0.000 sre_parse.py:139(__setitem__)
        7    0.000    0.000    0.000    0.000 sre_parse.py:141(__getslice__)
       44    0.000    0.000    0.000    0.000 sre_parse.py:145(append)
    24/11    0.001    0.000    0.001    0.000 sre_parse.py:147(getwidth)
        4    0.000    0.000    0.000    0.000 sre_parse.py:183(__init__)
      125    0.001    0.000    0.001    0.000 sre_parse.py:187(__next)
       59    0.001    0.000    0.001    0.000 sre_parse.py:200(match)
       98    0.002    0.000    0.003    0.000 sre_parse.py:206(get)
       23    0.000    0.000    0.000    0.000 sre_parse.py:215(isident)
        4    0.000    0.000    0.001    0.000 sre_parse.py:221(isname)
        2    0.000    0.000    0.000    0.000 sre_parse.py:240(_class_escape)
        6    0.000    0.000    0.000    0.000 sre_parse.py:269(_escape)
     10/4    0.000    0.000    0.008    0.002 sre_parse.py:312(_parse_sub)
     10/4    0.003    0.000    0.008    0.002 sre_parse.py:367(_parse)
        4    0.000    0.000    0.009    0.002 sre_parse.py:614(parse)
        4    0.000    0.000    0.000    0.000 sre_parse.py:75(__init__)
        6    0.000    0.000    0.000    0.000 sre_parse.py:80(opengroup)
        6    0.000    0.000    0.000    0.000 sre_parse.py:91(closegroup)
       17    0.000    0.000    0.000    0.000 sre_parse.py:98(__init__)
        1    0.000    0.000    0.000    0.000 stack.py:112(StgitObject)
        1    0.000    0.000    0.000    0.000 stack.py:115(_set_dir)
        6    0.000    0.000    0.000    0.000 stack.py:117(_dir)
        1    0.000    0.000    0.000    0.000 stack.py:142(Patch)
        1    0.004    0.004    0.008    0.008 stack.py:2(?)
        1    0.000    0.000    0.000    0.000 stack.py:277(PatchorderCache)
        1    0.000    0.000    0.000    0.000 stack.py:280(__init__)
        1    0.000    0.000    0.000    0.000 stack.py:283(__invalidate)
       59    0.001    0.000    0.001    0.000 stack.py:286(__cache)
        2    0.000    0.000    0.000    0.000 stack.py:293(read_file)
        1    0.000    0.000    0.000    0.000 stack.py:30(StackException)
       59    0.005    0.000    0.007    0.000 stack.py:315(cmp)
        1    0.014    0.014    0.110    0.110 stack.py:327(read_refs)
        1    0.000    0.000    0.000    0.000 stack.py:33(FilterUntil)
        1    0.002    0.002    2.006    2.006 stack.py:342(unapplied_patches)
        1    0.026    0.026    0.037    0.037 stack.py:358(sort_applied_patches)
        1    0.000    0.000    0.000    0.000 stack.py:382(AppliedCache)
        1    0.000    0.000    0.000    0.000 stack.py:385(__init__)
        2    0.000    0.000    2.161    1.080 stack.py:389(get_applied)
        1    0.000    0.000    0.000    0.000 stack.py:392(get_unapplied)
        1    0.000    0.000    0.000    0.000 stack.py:417(__invalidate)
        3    0.000    0.000    0.000    0.000 stack.py:420(__cached)
        3    0.001    0.000    2.161    0.720 stack.py:422(__cache)
        1    0.000    0.000    0.000    0.000 stack.py:434(Series)
        1    0.000    0.000    0.031    0.031 stack.py:437(__init__)
        1    0.000    0.000    0.000    0.000 stack.py:479(get_branch)
        1    0.000    0.000    0.000    0.000 stack.py:497(get_current)
        2    0.000    0.000    2.161    1.080 stack.py:507(get_applied)
        1    0.000    0.000    0.000    0.000 stack.py:510(get_unapplied)
        1    0.000    0.000    0.000    0.000 stack.py:513(get_hidden)
        2    0.000    0.000    0.000    0.000 stack.py:646(is_initialised)
        8    0.000    0.000    0.000    0.000 stat.py:29(S_IFMT)
        5    0.000    0.000    0.000    0.000 stat.py:45(S_ISDIR)
        3    0.000    0.000    0.000    0.000 stat.py:54(S_ISREG)
        1    0.000    0.000    0.000    0.000 templates.py:2(?)
        1    0.000    0.000    0.000    0.000 utils.py:107(strip_prefix)
        1    0.000    0.000    0.000    0.000 utils.py:153(EditorException)
        1    0.001    0.001    0.001    0.001 utils.py:2(?)


   Ordered by: standard name

Function                                              called...
<string>:1(?)                                          main.py:197(main)(1)    2.228
ConfigParser.py:105(Error)                             --
ConfigParser.py:117(NoSectionError)                    --
ConfigParser.py:124(DuplicateSectionError)             --
ConfigParser.py:131(NoOptionError)                     --
ConfigParser.py:140(InterpolationError)                --
ConfigParser.py:148(InterpolationMissingOptionError)   --
ConfigParser.py:161(InterpolationSyntaxError)          --
ConfigParser.py:165(InterpolationDepthError)           --
ConfigParser.py:176(ParsingError)                      --
ConfigParser.py:188(MissingSectionHeaderError)         --
ConfigParser.py:202(RawConfigParser)                   sre.py:177(compile)(2)    0.013
ConfigParser.py:487(ConfigParser)                      --
ConfigParser.py:570(SafeConfigParser)                  sre.py:177(compile)(1)    0.013
ConfigParser.py:88(?)                                  ConfigParser.py:105(Error)(1)    0.000
                                                       ConfigParser.py:117(NoSectionError)(1)    0.000
                                                       ConfigParser.py:124(DuplicateSectionError)(1)    0.000
                                                       ConfigParser.py:131(NoOptionError)(1)    0.000
                                                       ConfigParser.py:140(InterpolationError)(1)    0.000
                                                       ConfigParser.py:148(InterpolationMissingOptionError)(1)    0.000
                                                       ConfigParser.py:161(InterpolationSyntaxError)(1)    0.000
                                                       ConfigParser.py:165(InterpolationDepthError)(1)    0.000
                                                       ConfigParser.py:176(ParsingError)(1)    0.000
                                                       ConfigParser.py:188(MissingSectionHeaderError)(1)    0.000
                                                       ConfigParser.py:202(RawConfigParser)(1)    0.009
                                                       ConfigParser.py:487(ConfigParser)(1)    0.000
                                                       ConfigParser.py:570(SafeConfigParser)(1)    0.002
UserDict.py:19(__getitem__)                            --
UserDict.py:62(__contains__)                           --
basedir.py:2(?)                                        --
basedir.py:23(__output)                                --
basedir.py:33(get)                                     UserDict.py:62(__contains__)(1)    0.000
                                                       basedir.py:23(__output)(1)    0.007
common.py:2(?)                                         common.py:32(CmdException)(1)    0.000
                                                       common.py:37(RevParseException)(1)    0.000
                                                       stack.py:2(?)(1)    0.008
                                                       utils.py:2(?)(1)    0.001
common.py:32(CmdException)                             --
common.py:37(RevParseException)                        --
config.py:125(config_setup)                            config.py:65(get)(1)    0.006
                                                       os.py:444(__setitem__)(1)    0.000
config.py:134(ConfigOption)                            --
config.py:137(__init__)                                --
config.py:2(?)                                         basedir.py:2(?)(1)    0.000
                                                       config.py:24(GitConfigException)(1)    0.000
                                                       config.py:27(GitConfig)(1)    0.000
                                                       config.py:134(ConfigOption)(1)    0.000
config.py:24(GitConfigException)                       --
config.py:27(GitConfig)                                --
config.py:65(get)                                      --
git.py:180(_output_one_line)                           popen2.py:31(__init__)(1)    0.064
                                                       popen2.py:87(wait)(1)    0.000
git.py:192(_output_lines)                              popen2.py:31(__init__)(2)    0.064
                                                       popen2.py:87(wait)(2)    0.000
git.py:2(?)                                            git.py:30(GitException)(1)    0.000
                                                       git.py:39(Person)(1)    0.000
                                                       git.py:71(Commit)(1)    0.000
                                                       gitmergeonefile.py:2(?)(1)    0.000
                                                       sets.py:41(?)(1)    0.001
                                                       shutil.py:5(?)(1)    0.000
git.py:288(get_head_file)                              git.py:180(_output_one_line)(1)    0.023
                                                       utils.py:107(strip_prefix)(1)    0.000
git.py:30(GitException)                                --
git.py:39(Person)                                      --
git.py:71(Commit)                                      --
gitmergeonefile.py:2(?)                                config.py:137(__init__)(2)    0.000
                                                       gitmergeonefile.py:27(GitMergeException)(1)    0.000
gitmergeonefile.py:27(GitMergeException)               --
main.py:197(main)                                      ConfigParser.py:88(?)(1)    0.011
                                                       UserDict.py:19(__getitem__)(1)    0.000
                                                       config.py:125(config_setup)(1)    0.006
                                                       main.py:32(canonical_cmd)(1)    0.000
                                                       main.py:51(__getitem__)(1)    0.015
                                                       optparse.py:975(__init__)(1)    0.001
                                                       optparse.py:1097(parse_args)(1)    0.000
                                                       posixpath.py:110(basename)(1)    0.000
                                                       series.py:111(func)(1)    2.163
                                                       stack.py:437(__init__)(1)    0.031
main.py:32(canonical_cmd)                              --
main.py:51(__getitem__)                                series.py:2(?)(1)    0.015
optparse.py:1007(_create_option_list)                  optparse.py:759(_create_option_mappings)(1)    0.000
optparse.py:1012(_populate_option_list)                optparse.py:815(add_option)(1)    0.001
                                                       optparse.py:845(add_options)(1)    0.001
optparse.py:1022(_init_parsing_state)                  --
optparse.py:1036(set_usage)                            --
optparse.py:1059(get_default_values)                   optparse.py:662(__init__)(1)    0.000
optparse.py:1091(_get_args)                            --
optparse.py:1097(parse_args)                           optparse.py:1059(get_default_values)(1)    0.000
                                                       optparse.py:1091(_get_args)(1)    0.000
                                                       optparse.py:1136(check_values)(1)    0.000
                                                       optparse.py:1149(_process_args)(1)    0.000
optparse.py:1136(check_values)                         --
optparse.py:1149(_process_args)                        --
optparse.py:140(__init__)                              --
optparse.py:247(__init__)                              optparse.py:140(__init__)(1)    0.000
optparse.py:413(__init__)                              optparse.py:432(_check_opt_strings)(12)    0.000
                                                       optparse.py:441(_set_opt_strings)(12)    0.000
                                                       optparse.py:462(_set_attrs)(12)    0.000
                                                       optparse.py:480(_check_action)(12)    0.000
                                                       optparse.py:486(_check_type)(12)    0.000
                                                       optparse.py:504(_check_choice)(12)    0.000
                                                       optparse.py:517(_check_dest)(12)    0.000
                                                       optparse.py:528(_check_const)(12)    0.000
                                                       optparse.py:534(_check_nargs)(12)    0.000
                                                       optparse.py:543(_check_callback)(12)    0.000
optparse.py:432(_check_opt_strings)                    --
optparse.py:441(_set_opt_strings)                      --
optparse.py:462(_set_attrs)                            --
optparse.py:480(_check_action)                         --
optparse.py:486(_check_type)                           --
optparse.py:504(_check_choice)                         --
optparse.py:517(_check_dest)                           --
optparse.py:528(_check_const)                          --
optparse.py:534(_check_nargs)                          --
optparse.py:543(_check_callback)                       --
optparse.py:662(__init__)                              --
optparse.py:748(__init__)                              optparse.py:775(set_conflict_handler)(1)    0.000
                                                       optparse.py:780(set_description)(1)    0.000
                                                       optparse.py:1007(_create_option_list)(1)    0.000
optparse.py:759(_create_option_mappings)               --
optparse.py:775(set_conflict_handler)                  --
optparse.py:780(set_description)                       --
optparse.py:786(_check_conflict)                       --
optparse.py:815(add_option)                            optparse.py:786(_check_conflict)(13)    0.000
optparse.py:845(add_options)                           optparse.py:815(add_option)(12)    0.001
optparse.py:975(__init__)                              optparse.py:247(__init__)(1)    0.000
                                                       optparse.py:748(__init__)(1)    0.000
                                                       optparse.py:1012(_populate_option_list)(1)    0.001
                                                       optparse.py:1022(_init_parsing_state)(1)    0.000
                                                       optparse.py:1036(set_usage)(1)    0.000
os.py:444(__setitem__)                                 --
popen2.py:21(_cleanup)                                 --
popen2.py:25(Popen3)                                   --
popen2.py:31(__init__)                                 popen2.py:21(_cleanup)(4)    0.000
popen2.py:7(?)                                         popen2.py:25(Popen3)(1)    0.000
                                                       popen2.py:97(Popen4)(1)    0.000
popen2.py:87(wait)                                     --
popen2.py:97(Popen4)                                   --
posixpath.py:110(basename)                             posixpath.py:74(split)(1)    0.000
posixpath.py:184(isdir)                                stat.py:45(S_ISDIR)(5)    0.000
posixpath.py:197(isfile)                               stat.py:54(S_ISREG)(3)    0.000
posixpath.py:56(join)                                  --
posixpath.py:74(split)                                 --
profile:0(main())                                      <string>:1(?)(1)    2.229
profile:0(profiler)                                    profile:0(main())(1)    2.229
series.py:111(func)                                    series.py:88(__print_patch)(38)    0.001
                                                       stack.py:497(get_current)(1)    0.000
                                                       stack.py:507(get_applied)(1)    2.161
                                                       stack.py:510(get_unapplied)(1)    0.000
                                                       stack.py:513(get_hidden)(1)    0.000
series.py:2(?)                                         common.py:2(?)(1)    0.011
                                                       optparse.py:413(__init__)(12)    0.002
series.py:88(__print_patch)                            --
sets.py:119(__iter__)                                  --
sets.py:356(_update)                                   --
sets.py:393(ImmutableSet)                              --
sets.py:41(?)                                          sets.py:83(BaseSet)(1)    0.000
                                                       sets.py:393(ImmutableSet)(1)    0.000
                                                       sets.py:418(Set)(1)    0.000
                                                       sets.py:564(_TemporarilyImmutableSet)(1)    0.000
sets.py:418(Set)                                       --
sets.py:425(__init__)                                  sets.py:356(_update)(1)    0.000
sets.py:515(add)                                       --
sets.py:528(remove)                                    --
sets.py:564(_TemporarilyImmutableSet)                  --
sets.py:83(BaseSet)                                    --
sets.py:99(__len__)                                    --
shutil.py:16(Error)                                    --
shutil.py:5(?)                                         shutil.py:16(Error)(1)    0.000
sre.py:129(match)                                      sre.py:216(_compile)(896)    0.025
sre.py:177(compile)                                    sre.py:216(_compile)(4)    0.025
sre.py:216(_compile)                                   sre_compile.py:440(isstring)(4)    0.000
                                                       sre_compile.py:461(compile)(4)    0.013
sre_compile.py:151(_compile_charset)                   sre_compile.py:42(<lambda>)(6)    0.000
                                                       sre_compile.py:180(_optimize_charset)(5)    0.000
sre_compile.py:180(_optimize_charset)                  sre_compile.py:42(<lambda>)(6)    0.000
sre_compile.py:24(_compile)                            sre_compile.py:24(_compile)(13)    0.002
                                                       sre_compile.py:151(_compile_charset)(5)    0.001
                                                       sre_compile.py:324(_simple)(7)    0.000
                                                       sre_parse.py:137(__getitem__)(27)    0.000
sre_compile.py:324(_simple)                            sre_parse.py:137(__getitem__)(7)    0.000
                                                       sre_parse.py:147(getwidth)(7)    0.001
sre_compile.py:331(_compile_info)                      sre_parse.py:133(__len__)(4)    0.000
                                                       sre_parse.py:137(__getitem__)(3)    0.000
                                                       sre_parse.py:147(getwidth)(4)    0.001
sre_compile.py:42(<lambda>)                            --
sre_compile.py:440(isstring)                           --
sre_compile.py:446(_code)                              sre_compile.py:24(_compile)(4)    0.002
                                                       sre_compile.py:331(_compile_info)(4)    0.001
sre_compile.py:461(compile)                            sre_compile.py:440(isstring)(4)    0.000
                                                       sre_compile.py:446(_code)(4)    0.004
                                                       sre_parse.py:614(parse)(4)    0.009
sre_parse.py:133(__len__)                              --
sre_parse.py:137(__getitem__)                          --
sre_parse.py:139(__setitem__)                          --
sre_parse.py:141(__getslice__)                         sre_parse.py:98(__init__)(7)    0.000
sre_parse.py:145(append)                               --
sre_parse.py:147(getwidth)                             sre_parse.py:147(getwidth)(13)    0.001
sre_parse.py:183(__init__)                             sre_parse.py:187(__next)(4)    0.001
sre_parse.py:187(__next)                               --
sre_parse.py:200(match)                                sre_parse.py:187(__next)(23)    0.001
sre_parse.py:206(get)                                  sre_parse.py:187(__next)(98)    0.001
sre_parse.py:215(isident)                              --
sre_parse.py:221(isname)                               sre_parse.py:215(isident)(23)    0.000
sre_parse.py:240(_class_escape)                        --
sre_parse.py:269(_escape)                              --
sre_parse.py:312(_parse_sub)                           sre_parse.py:200(match)(16)    0.001
                                                       sre_parse.py:367(_parse)(10)    0.008
sre_parse.py:367(_parse)                               sre_parse.py:80(opengroup)(6)    0.000
                                                       sre_parse.py:91(closegroup)(6)    0.000
                                                       sre_parse.py:98(__init__)(10)    0.000
                                                       sre_parse.py:133(__len__)(28)    0.000
                                                       sre_parse.py:137(__getitem__)(14)    0.000
                                                       sre_parse.py:139(__setitem__)(7)    0.000
                                                       sre_parse.py:141(__getslice__)(7)    0.000
                                                       sre_parse.py:145(append)(44)    0.000
                                                       sre_parse.py:200(match)(43)    0.001
                                                       sre_parse.py:206(get)(94)    0.003
                                                       sre_parse.py:221(isname)(4)    0.001
                                                       sre_parse.py:240(_class_escape)(2)    0.000
                                                       sre_parse.py:269(_escape)(6)    0.000
                                                       sre_parse.py:312(_parse_sub)(6)    0.008
sre_parse.py:614(parse)                                sre_parse.py:75(__init__)(4)    0.000
                                                       sre_parse.py:183(__init__)(4)    0.000
                                                       sre_parse.py:206(get)(4)    0.003
                                                       sre_parse.py:312(_parse_sub)(4)    0.008
sre_parse.py:75(__init__)                              --
sre_parse.py:80(opengroup)                             --
sre_parse.py:91(closegroup)                            --
sre_parse.py:98(__init__)                              --
stack.py:112(StgitObject)                              --
stack.py:115(_set_dir)                                 --
stack.py:117(_dir)                                     --
stack.py:142(Patch)                                    --
stack.py:2(?)                                          git.py:2(?)(1)    0.003
                                                       popen2.py:7(?)(1)    0.000
                                                       stack.py:30(StackException)(1)    0.000
                                                       stack.py:33(FilterUntil)(1)    0.000
                                                       stack.py:112(StgitObject)(1)    0.000
                                                       stack.py:142(Patch)(1)    0.000
                                                       stack.py:277(PatchorderCache)(1)    0.000
                                                       stack.py:382(AppliedCache)(1)    0.000
                                                       stack.py:434(Series)(1)    0.000
                                                       templates.py:2(?)(1)    0.000
stack.py:277(PatchorderCache)                          --
stack.py:280(__init__)                                 stack.py:283(__invalidate)(1)    0.000
stack.py:283(__invalidate)                             --
stack.py:286(__cache)                                  posixpath.py:56(join)(3)    0.000
                                                       posixpath.py:197(isfile)(3)    0.000
                                                       stack.py:117(_dir)(3)    0.000
                                                       stack.py:293(read_file)(2)    0.000
stack.py:293(read_file)                                --
stack.py:30(StackException)                            --
stack.py:315(cmp)                                      stack.py:286(__cache)(59)    0.001
stack.py:327(read_refs)                                git.py:192(_output_lines)(1)    2.067
                                                       sre.py:129(match)(896)    0.028
                                                       sre.py:177(compile)(1)    0.013
stack.py:33(FilterUntil)                               --
stack.py:342(unapplied_patches)                        git.py:192(_output_lines)(1)    2.067
                                                       sets.py:119(__iter__)(19)    0.000
                                                       sets.py:425(__init__)(46)    0.001
                                                       sets.py:515(add)(64)    0.001
stack.py:358(sort_applied_patches)                     popen2.py:31(__init__)(1)    0.064
                                                       sets.py:99(__len__)(26)    0.000
                                                       sets.py:119(__iter__)(25)    0.000
                                                       sets.py:425(__init__)(26)    0.001
                                                       sets.py:515(add)(25)    0.001
                                                       sets.py:528(remove)(25)    0.000
stack.py:382(AppliedCache)                             --
stack.py:385(__init__)                                 stack.py:280(__init__)(1)    0.000
                                                       stack.py:417(__invalidate)(1)    0.000
stack.py:389(get_applied)                              stack.py:422(__cache)(2)    2.161
stack.py:392(get_unapplied)                            stack.py:422(__cache)(1)    2.161
stack.py:417(__invalidate)                             --
stack.py:420(__cached)                                 --
stack.py:422(__cache)                                  sets.py:119(__iter__)(2)    0.000
                                                       stack.py:315(cmp)(59)    0.007
                                                       stack.py:327(read_refs)(1)    0.110
                                                       stack.py:342(unapplied_patches)(1)    2.006
                                                       stack.py:358(sort_applied_patches)(1)    0.037
                                                       stack.py:420(__cached)(3)    0.000
                                                       stack.py:479(get_branch)(1)    0.000
stack.py:434(Series)                                   --
stack.py:437(__init__)                                 basedir.py:33(get)(1)    0.007
                                                       git.py:288(get_head_file)(1)    0.023
                                                       posixpath.py:56(join)(5)    0.000
                                                       posixpath.py:184(isdir)(3)    0.000
                                                       stack.py:115(_set_dir)(1)    0.000
                                                       stack.py:117(_dir)(3)    0.000
                                                       stack.py:385(__init__)(1)    0.000
                                                       stack.py:646(is_initialised)(2)    0.000
stack.py:479(get_branch)                               --
stack.py:497(get_current)                              stack.py:507(get_applied)(1)    2.161
stack.py:507(get_applied)                              stack.py:389(get_applied)(2)    2.161
stack.py:510(get_unapplied)                            stack.py:392(get_unapplied)(1)    0.000
stack.py:513(get_hidden)                               posixpath.py:197(isfile)(1)    0.000
stack.py:646(is_initialised)                           posixpath.py:184(isdir)(2)    0.000
stat.py:29(S_IFMT)                                     --
stat.py:45(S_ISDIR)                                    stat.py:29(S_IFMT)(5)    0.000
stat.py:54(S_ISREG)                                    stat.py:29(S_IFMT)(3)    0.000
templates.py:2(?)                                      --
utils.py:107(strip_prefix)                             --
utils.py:153(EditorException)                          --
utils.py:2(?)                                          config.py:2(?)(1)    0.000
                                                       utils.py:153(EditorException)(1)    0.000



  reply	other threads:[~2007-05-16 12:07 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-06 15:13 [StGIT PATCH] Don't use patches/<branch>/current Karl Hasselström
2007-05-15 15:56 ` Catalin Marinas
2007-05-15 16:21   ` Peter Oberndorfer
2007-05-15 16:50     ` Catalin Marinas
2007-05-15 18:25   ` Karl Hasselström
2007-05-15 19:38     ` [StGIT PATCH] Remove obsolete files when deleting a branch Karl Hasselström
2007-05-15 20:01     ` [StGIT PATCH] Don't use patches/<branch>/current Catalin Marinas
2007-05-16  7:11       ` Karl Hasselström
2007-05-16 12:07         ` Catalin Marinas [this message]
2007-05-16 19:40           ` Karl Hasselström
2007-05-16 20:40             ` Karl Hasselström
2007-05-17 12:43               ` Catalin Marinas
2007-05-17 14:57                 ` Karl Hasselström
2007-05-17 20:51                   ` Catalin Marinas
2007-05-18  6:30                     ` Karl Hasselström
2007-06-10  9:54                       ` [StGIT PATCH 0/6] New and improved DAG appliedness series Karl Hasselström
2007-06-10  9:54                         ` [StGIT PATCH 1/6] Verify patch status during the test Karl Hasselström
2007-06-10  9:55                         ` [StGIT PATCH 2/6] Make use of the get_patch() utility function Karl Hasselström
2007-06-10  9:55                         ` [StGIT PATCH 3/6] Compute patch appliedness from commit DAG Karl Hasselström
2007-06-10  9:55                         ` [StGIT PATCH 4/6] Test the new DAG appliedness machinery Karl Hasselström
2007-06-10  9:55                         ` [StGIT PATCH 5/6] Fix bash completion after the DAG appliedness patch Karl Hasselström
2007-06-10  9:55                         ` [StGIT PATCH 6/6] Speed up the appliedness test Karl Hasselström
2007-06-30 19:54                         ` [StGIT PATCH 0/6] New and improved DAG appliedness series Yann Dirson
2007-07-01 14:35                           ` Karl Hasselström
2007-05-15 21:08   ` [StGIT PATCH] Don't use patches/<branch>/current Yann Dirson
2007-05-15 21:36     ` Catalin Marinas
2007-05-15 21:49       ` Yann Dirson
2007-05-16  6:27         ` Karl Hasselström
2007-05-19  0:09           ` [StGIT PATCH 0/5] Metadata format versioning Karl Hasselström
2007-05-19  0:09             ` [StGIT PATCH 1/5] Fix config caching so that get, set, get works Karl Hasselström
2007-05-19  0:09             ` [StGIT PATCH 2/5] Have only a single command in each test_expect_failure Karl Hasselström
2007-05-19  0:10             ` [StGIT PATCH 3/5] Upgrade old StGIT branches to new-format metadata Karl Hasselström
2007-05-19  0:10             ` [StGIT PATCH 4/5] Test the format version upgrade code Karl Hasselström
2007-05-19  0:10             ` [StGIT PATCH 5/5] Add --binary flag to commands that generate diffs Karl Hasselström
2007-05-22 12:15               ` Catalin Marinas
2007-05-22 13:31                 ` Karl Hasselström
2007-05-20 20:03 ` [StGit PATCH 0/2] Bash prompt updates Robin Rosenberg
2007-05-20 20:04   ` [StGit PATCH 1/2] Update the bash prompt from 'applied' instead of the obsolete 'current' Robin Rosenberg
2007-05-20 20:46     ` Yann Dirson
2007-05-20 21:22       ` [PATCH " Robin Rosenberg
2007-05-21  7:48         ` Karl Hasselström
2007-05-21  9:31           ` Catalin Marinas
2007-05-21 10:15             ` Karl Hasselström
2007-05-21 11:39               ` Karl Hasselström
2007-05-21 15:17                 ` Catalin Marinas
2007-05-21 15:39                   ` Karl Hasselström
2007-05-22 12:11                     ` Catalin Marinas
2007-05-22 13:29                       ` Karl Hasselström
2007-05-21 18:57             ` Yann Dirson
2007-05-20 21:24       ` [PATCH 2/2] Don't use / as separatar since it is common i branch names Robin Rosenberg
2007-05-20 20:04   ` [StGit PATCH " Robin Rosenberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b0943d9e0705160507h2b3c4a34xe9895d007c41d91a@mail.gmail.com \
    --to=catalin.marinas@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=kha@treskal.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).