##// END OF EJS Templates
hgweb: profile HTTP requests...
hgweb: profile HTTP requests Currently, running `hg serve --profile` doesn't yield anything useful: when the process is terminated the profiling output displays results from the main thread, which typically spends most of its time in select.select(). Furthermore, it has no meaningful results from mercurial.* modules because the threads serving HTTP requests don't actually get profiled. This patch teaches the hgweb wsgi applications to profile individual requests. If profiling is enabled, the profiler kicks in after HTTP/WSGI environment processing but before Mercurial's main request processing. The profile results are printed to the configured profiling output. If running `hg serve` from a shell, they will be printed to stderr, just before the HTTP request line is logged. If profiling to a file, we only write a single profile to the file because the file is not opened in append mode. We could add support for appending to files in a future patch if someone wants it. Per request profiling doesn't work with the statprof profiler because internally that profiler collects samples from the thread that *initially* requested profiling be enabled. I have plans to address this by vendoring Facebook's customized statprof and then improving it.

File last commit:

r28072:c3e9269d default
r29787:80df0426 default
Show More
test-conflict.t
276 lines | 5.3 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-conflict
r11797 $ hg init
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 $ cat << EOF > a
> Small Mathematical Series.
> One
> Two
> Three
> Four
> Five
> Hop we are done.
> EOF
Nicolas Dumazet
tests: unify test-conflict
r11797 $ hg add a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m ancestor
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 $ cat << EOF > a
> Small Mathematical Series.
> 1
> 2
> 3
> 4
> 5
> Hop we are done.
> EOF
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m branch1
Nicolas Dumazet
tests: unify test-conflict
r11797 $ hg co 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 $ cat << EOF > a
> Small Mathematical Series.
> 1
> 2
> 3
> 6
> 8
> Hop we are done.
> EOF
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m branch2
Nicolas Dumazet
tests: unify test-conflict
r11797 created new head
$ hg merge 1
merging a
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
Nicolas Dumazet
tests: unify test-conflict
r11797 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
Brodie Rao
merge: suggest 'hg up -C .' for discarding changes, not 'hg up -C'...
r12314 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Nicolas Dumazet
tests: unify test-conflict
r11797
$ hg id
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 618808747361+c0c68e4fe667+ tip
Nicolas Dumazet
tests: unify test-conflict
r11797
$ cat a
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Small Mathematical Series.
1
2
3
Ryan McElroy
merge: minimize conflicts when common base is not shown (issue4447)...
r28072 <<<<<<< local: 618808747361 - test: branch2
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 6
8
Durham Goode
merge: add conflict marker formatter (BC)...
r21519 =======
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 4
5
>>>>>>> other: c0c68e4fe667 - test: branch1
Hop we are done.
Durham Goode
merge: add conflict marker formatter (BC)...
r21519
$ hg status
M a
? a.orig
Verify custom conflict markers
$ hg up -q --clean .
$ printf "\n[ui]\nmergemarkertemplate={author} {rev}\n" >> .hg/hgrc
$ hg merge 1
merging a
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
Durham Goode
merge: add conflict marker formatter (BC)...
r21519 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ cat a
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Small Mathematical Series.
1
2
3
Ryan McElroy
merge: minimize conflicts when common base is not shown (issue4447)...
r28072 <<<<<<< local: test 2
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 6
8
Durham Goode
merge: add conflict marker formatter (BC)...
r21519 =======
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 4
5
Durham Goode
merge: add conflict marker formatter (BC)...
r21519 >>>>>>> other: test 1
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Hop we are done.
Durham Goode
merge: add conflict marker formatter (BC)...
r21519
FUJIWARA Katsunori
filemerge: use only the first line of the generated conflict marker for safety...
r21864 Verify line splitting of custom conflict marker which causes multiple lines
$ hg up -q --clean .
$ cat >> .hg/hgrc <<EOF
> [ui]
> mergemarkertemplate={author} {rev}\nfoo\nbar\nbaz
> EOF
$ hg -q merge 1
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
FUJIWARA Katsunori
filemerge: use only the first line of the generated conflict marker for safety...
r21864 [1]
$ cat a
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Small Mathematical Series.
1
2
3
Ryan McElroy
merge: minimize conflicts when common base is not shown (issue4447)...
r28072 <<<<<<< local: test 2
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 6
8
FUJIWARA Katsunori
filemerge: use only the first line of the generated conflict marker for safety...
r21864 =======
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 4
5
FUJIWARA Katsunori
filemerge: use only the first line of the generated conflict marker for safety...
r21864 >>>>>>> other: test 1
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Hop we are done.
FUJIWARA Katsunori
filemerge: use only the first line of the generated conflict marker for safety...
r21864
FUJIWARA Katsunori
filemerge: use 'util.ellipsis' to trim custom conflict markers correctly...
r21865 Verify line trimming of custom conflict marker using multi-byte characters
$ hg up -q --clean .
$ python <<EOF
> fp = open('logfile', 'w')
> fp.write('12345678901234567890123456789012345678901234567890' +
> '1234567890') # there are 5 more columns for 80 columns
>
> # 2 x 4 = 8 columns, but 3 x 4 = 12 bytes
> fp.write(u'\u3042\u3044\u3046\u3048'.encode('utf-8'))
>
> fp.close()
> EOF
$ hg add logfile
$ hg --encoding utf-8 commit --logfile logfile
$ cat >> .hg/hgrc <<EOF
> [ui]
> mergemarkertemplate={desc|firstline}
> EOF
$ hg -q --encoding utf-8 merge 1
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
FUJIWARA Katsunori
filemerge: use 'util.ellipsis' to trim custom conflict markers correctly...
r21865 [1]
$ cat a
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Small Mathematical Series.
1
2
3
Ryan McElroy
merge: minimize conflicts when common base is not shown (issue4447)...
r28072 <<<<<<< local: 123456789012345678901234567890123456789012345678901234567890\xe3\x81\x82... (esc)
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 6
8
FUJIWARA Katsunori
filemerge: use 'util.ellipsis' to trim custom conflict markers correctly...
r21865 =======
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 4
5
FUJIWARA Katsunori
filemerge: use 'util.ellipsis' to trim custom conflict markers correctly...
r21865 >>>>>>> other: branch1
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Hop we are done.
FUJIWARA Katsunori
filemerge: use 'util.ellipsis' to trim custom conflict markers correctly...
r21865
Durham Goode
merge: add conflict marker formatter (BC)...
r21519 Verify basic conflict markers
FUJIWARA Katsunori
filemerge: use 'util.ellipsis' to trim custom conflict markers correctly...
r21865 $ hg up -q --clean 2
Durham Goode
merge: add conflict marker formatter (BC)...
r21519 $ printf "\n[ui]\nmergemarkers=basic\n" >> .hg/hgrc
$ hg merge 1
merging a
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
Durham Goode
merge: add conflict marker formatter (BC)...
r21519 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ cat a
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Small Mathematical Series.
1
2
3
Ryan McElroy
merge: minimize conflicts when common base is not shown (issue4447)...
r28072 <<<<<<< local
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 6
8
Nicolas Dumazet
tests: unify test-conflict
r11797 =======
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 4
5
Nicolas Dumazet
tests: unify test-conflict
r11797 >>>>>>> other
Pierre-Yves David
test: use more elaborated content in ``test-conflict.t``...
r21920 Hop we are done.
Pierre-Yves David
merge: add an internal:merge3 tool...
r22028
internal:merge3
$ hg up -q --clean .
$ hg merge 1 --tool internal:merge3
merging a
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
Pierre-Yves David
merge: add an internal:merge3 tool...
r22028 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ cat a
Small Mathematical Series.
<<<<<<< local
1
2
3
6
8
||||||| base
One
Two
Three
Four
Five
=======
1
2
3
4
5
>>>>>>> other
Hop we are done.
Jordi Gutiérrez Hermoso
filemerge: add non-interactive :merge-local and :merge-other...
r26224
Add some unconflicting changes on each head, to make sure we really
are merging, unlike :local and :other
$ hg up -C
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pierre-Yves David
update: warn about other topological heads on bare update...
r28029 1 other heads for branch "default"
Jordi Gutiérrez Hermoso
filemerge: add non-interactive :merge-local and :merge-other...
r26224 $ printf "\n\nEnd of file\n" >> a
$ hg ci -m "Add some stuff at the end"
$ hg up -r 1
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ printf "Start of file\n\n\n" > tmp
$ cat a >> tmp
$ mv tmp a
$ hg ci -m "Add some stuff at the beginning"
Now test :merge-other and :merge-local
$ hg merge
merging a
Siddharth Agarwal
simplemerge: move conflict warning message to filemerge...
r26614 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
Jordi Gutiérrez Hermoso
filemerge: add non-interactive :merge-local and :merge-other...
r26224 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ hg resolve --tool :merge-other a
merging a
(no more unresolved files)
$ cat a
Start of file
Small Mathematical Series.
1
2
3
6
8
Hop we are done.
End of file
$ hg up -C
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Pierre-Yves David
update: warn about other topological heads on bare update...
r28029 1 other heads for branch "default"
Jordi Gutiérrez Hermoso
filemerge: add non-interactive :merge-local and :merge-other...
r26224 $ hg merge --tool :merge-local
merging a
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat a
Start of file
Small Mathematical Series.
1
2
3
4
5
Hop we are done.
End of file