Mercurial > hg
view tests/test-diff-color.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 | e955549cd045 |
children | c84a07530040 |
line wrap: on
line source
Setup $ cat <<EOF >> $HGRCPATH > [color] > mode = ansi > [extensions] > color = > EOF $ hg init repo $ cd repo $ cat > a <<EOF > c > c > a > a > b > a > a > c > c > EOF $ hg ci -Am adda adding a $ cat > a <<EOF > c > c > a > a > dd > a > a > c > c > EOF default context $ hg diff --nodates --color=always \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc) \x1b[0;31;1m--- a/a\x1b[0m (esc) \x1b[0;32;1m+++ b/a\x1b[0m (esc) \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) c a a \x1b[0;31m-b\x1b[0m (esc) \x1b[0;32m+dd\x1b[0m (esc) a a c --unified=2 $ hg diff --nodates -U 2 --color=always \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc) \x1b[0;31;1m--- a/a\x1b[0m (esc) \x1b[0;32;1m+++ b/a\x1b[0m (esc) \x1b[0;35m@@ -3,5 +3,5 @@\x1b[0m (esc) a a \x1b[0;31m-b\x1b[0m (esc) \x1b[0;32m+dd\x1b[0m (esc) a a diffstat $ hg diff --stat --color=always a | 2 \x1b[0;32m+\x1b[0m\x1b[0;31m-\x1b[0m (esc) 1 files changed, 1 insertions(+), 1 deletions(-) $ cat <<EOF >> $HGRCPATH > record = > [ui] > interactive = true > [diff] > git = True > EOF #if execbit record $ chmod +x a $ hg record --color=always -m moda a <<EOF > y > y > EOF \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) \x1b[0;36;1mold mode 100644\x1b[0m (esc) \x1b[0;36;1mnew mode 100755\x1b[0m (esc) 1 hunks, 1 lines changed \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc) \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) c a a \x1b[0;31m-b\x1b[0m (esc) \x1b[0;32m+dd\x1b[0m (esc) a a c \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc) $ echo "[extensions]" >> $HGRCPATH $ echo "mq=" >> $HGRCPATH $ hg rollback repository tip rolled back to revision 0 (undo commit) working directory now based on revision 0 qrecord $ hg qrecord --color=always -m moda patch <<EOF > y > y > EOF \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) \x1b[0;36;1mold mode 100644\x1b[0m (esc) \x1b[0;36;1mnew mode 100755\x1b[0m (esc) 1 hunks, 1 lines changed \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc) \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) c a a \x1b[0;31m-b\x1b[0m (esc) \x1b[0;32m+dd\x1b[0m (esc) a a c \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc) $ hg qpop -a popping patch patch queue now empty #endif issue3712: test colorization of subrepo diff $ hg init sub $ echo b > sub/b $ hg -R sub commit -Am 'create sub' adding b $ echo 'sub = sub' > .hgsub $ hg add .hgsub $ hg commit -m 'add subrepo sub' $ echo aa >> a $ echo bb >> sub/b $ hg diff --color=always -S \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) \x1b[0;31;1m--- a/a\x1b[0m (esc) \x1b[0;32;1m+++ b/a\x1b[0m (esc) \x1b[0;35m@@ -7,3 +7,4 @@\x1b[0m (esc) a c c \x1b[0;32m+aa\x1b[0m (esc) \x1b[0;1mdiff --git a/sub/b b/sub/b\x1b[0m (esc) \x1b[0;31;1m--- a/sub/b\x1b[0m (esc) \x1b[0;32;1m+++ b/sub/b\x1b[0m (esc) \x1b[0;35m@@ -1,1 +1,2 @@\x1b[0m (esc) b \x1b[0;32m+bb\x1b[0m (esc) test tabs $ cat >> a <<EOF > one tab > two tabs > end tab > mid tab > all tabs > EOF $ hg diff --nodates --color=always \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) \x1b[0;31;1m--- a/a\x1b[0m (esc) \x1b[0;32;1m+++ b/a\x1b[0m (esc) \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc) a c c \x1b[0;32m+aa\x1b[0m (esc) \x1b[0;32m+\x1b[0m \x1b[0;32mone tab\x1b[0m (esc) \x1b[0;32m+\x1b[0m \x1b[0;32mtwo tabs\x1b[0m (esc) \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc) \x1b[0;32m+mid\x1b[0m \x1b[0;32mtab\x1b[0m (esc) \x1b[0;32m+\x1b[0m \x1b[0;32mall\x1b[0m \x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc) $ echo "[color]" >> $HGRCPATH $ echo "diff.tab = bold magenta" >> $HGRCPATH $ hg diff --nodates --color=always \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) \x1b[0;31;1m--- a/a\x1b[0m (esc) \x1b[0;32;1m+++ b/a\x1b[0m (esc) \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc) a c c \x1b[0;32m+aa\x1b[0m (esc) \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mone tab\x1b[0m (esc) \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtwo tabs\x1b[0m (esc) \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc) \x1b[0;32m+mid\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtab\x1b[0m (esc) \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mall\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc) $ cd ..