aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/A_page_that_inlines_pages__61____34____42____34___results_in_unnecessary_feed_generation.mdwn
blob: 543c346acc06e8cb6cbf0f2991c810b1bab8ecd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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.