I noticed when generating my wiki that all of my RSS feeds were
getting regenerated even when I edited only a page that did not affect
any feed.
I found that the problem only occurs in the presence of a file that
contains [[inline pages="*"]].
How is this unexpected? By inlining every page in the wiki, you're
making that page depend on every other page; any change to any page in
the wiki will result in the inlining page and its rss feed needing to be
updated to include the changed page.
At best, this is a [[wishlist]] optimisation item -- it would be nice if inline could
somehow know that since it's only displaying N pages, a change to the
N+1th page that its PageSpec matches is a no-op.
--[[Joey]]
[[!tag done]]
Here's a short script for replicating the bug. Just cut and paste this
to a shell, (it will only muck in a new /tmp/ikiwiki-test directory
that it will create):
cd /tmp
mkdir ikiwiki-test; cd ikiwiki-test; mkdir src
echo '\[[inline pages="blog/*"]]' > src/myblog.mdwn
mkdir src/blog; echo "A blog entry" > src/blog/entry.mdwn
echo 'use IkiWiki::Setup::Standard {
srcdir => "src",
destdir => "output",
url => "http://example.com",
templatedir => "/dev/null",
underlaydir => "/dev/null",
rss => 1,
wrappers => [],
verbose => 1,
refresh => 1
}' > setup
ikiwiki --setup setup
ls -l --time-style=full-iso output/myblog/index.rss
echo "not a blog entry" > src/not-a-blog.mdwn
ikiwiki --setup setup
ls -l --time-style=full-iso output/myblog/index.rss
echo '\[[inline pages="*"]]' > src/archives.mdwn
ikiwiki --setup setup
ls -l --time-style=full-iso output/myblog/index.rss
echo "still not blogging" >> src/not-a-blog.mdwn
ikiwiki --setup setup
ls -l --time-style=full-iso output/myblog/index.rss
Here's the tail of the output that I see for this command:
$ echo "not a blog entry" > src/not-a-blog.mdwn
$ ikiwiki --setup setup
refreshing wiki..
scanning not-a-blog.mdwn
rendering not-a-blog.mdwn
done
$ ls -l --time-style=full-iso output/myblog/index.rss
-rw-r--r-- 1 cworth cworth 459 2007-06-01 06:34:36.000000000 -0700 output/myblog/index.rss
$ echo '\[[inline pages="*"]]' > src/archives.mdwn
$ ikiwiki --setup setup
refreshing wiki..
scanning archives.mdwn
rendering archives.mdwn
done
$ ls -l --time-style=full-iso output/myblog/index.rss
-rw-r--r-- 1 cworth cworth 459 2007-06-01 06:34:37.000000000 -0700 output/myblog/index.rss
$ echo "still not blogging" >> src/not-a-blog.mdwn
$ ikiwiki --setup setup
refreshing wiki..
scanning not-a-blog.mdwn
rendering not-a-blog.mdwn
rendering archives.mdwn, which depends on not-a-blog
done
$ ls -l --time-style=full-iso output/myblog/index.rss
-rw-r--r-- 1 cworth cworth 459 2007-06-01 06:34:38.000000000 -0700 output/myblog/index.rss
It looks like the rendering of archives.mdwn is also silently
generating myblog/index.rss.