Mercurial > hg
view tests/test-hgweb-raw.t @ 23603:d74eb8d477d5
memctx: calculate manifest more efficiently
Before this patch, "memctx._manifest" updates all entries in the
(parent) manifest. But this is inefficiency, because almost all files
may be clean in that context.
On the other hand, just updating entries for changed "files" specified
at construction causes unexpected abortion, when there is at least one
newly removed file (see issue4470 for detail).
To calculate manifest more efficiently, this patch replaces
"pman.iteritems()" for the loop by "self._status.modified" to avoid
updating entries for clean or removed files
Examination of removal is also omitted, because removed files aren't
treated in this loop (= "self[f]" returns not None always).
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Fri, 19 Dec 2014 00:11:56 +0900 |
parents | 7a9cbb315d84 |
children | 4d2b9b304ad0 |
line wrap: on
line source
#require serve Test raw style of hgweb $ hg init test $ cd test $ mkdir sub $ cat >'sub/some text%.txt' <<ENDSOME > This is just some random text > that will go inside the file and take a few lines. > It is very boring to read, but computers don't > care about things like that. > ENDSOME $ hg add 'sub/some text%.txt' $ hg commit -d "1 0" -m "Just some text" $ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid $ cat hg.pid >> $DAEMON_PIDS $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw' content-type content-length content-disposition) >getoutput.txt $ "$TESTDIR/killdaemons.py" hg.pid $ cat getoutput.txt 200 Script output follows content-type: application/binary content-length: 157 content-disposition: inline; filename="some text%.txt" This is just some random text that will go inside the file and take a few lines. It is very boring to read, but computers don't care about things like that. $ cat access.log error.log 127.0.0.1 - - [*] "GET /?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw HTTP/1.1" 200 - (glob) $ rm access.log error.log $ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid \ > --config web.guessmime=True $ cat hg.pid >> $DAEMON_PIDS $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw' content-type content-length content-disposition) >getoutput.txt $ "$TESTDIR/killdaemons.py" hg.pid $ cat getoutput.txt 200 Script output follows content-type: text/plain; charset="ascii" content-length: 157 content-disposition: inline; filename="some text%.txt" This is just some random text that will go inside the file and take a few lines. It is very boring to read, but computers don't care about things like that. $ cat access.log error.log 127.0.0.1 - - [*] "GET /?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw HTTP/1.1" 200 - (glob) $ cd ..