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
next prev parent 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).