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

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.