trail: Converted all dependencies to presence dependencies.

smcv please note this introduces another bug, which I've opened
master
Joey Hess 2012-12-27 22:29:51 -04:00
parent dc05125b0b
commit 86519b047e
3 changed files with 30 additions and 3 deletions

View File

@ -318,7 +318,7 @@ sub prerender {
$prev = $members->[$i - 1] if $i > 0;
my $next = $members->[$i + 1];
add_depends($member, $trail);
add_depends($member, $trail, deptype("presence"));
$member_to_trails{$member}{$trail} = [$prev, $next];
}
@ -406,13 +406,13 @@ sub pagetemplate (@) {
my ($prevurl, $nexturl, $prevtitle, $nexttitle);
if (defined $prev) {
add_depends($params{destpage}, $prev);
add_depends($params{destpage}, $prev, deptype("presence"));
$prevurl = urlto($prev, $page);
$prevtitle = title_of($prev);
}
if (defined $next) {
add_depends($params{destpage}, $next);
add_depends($params{destpage}, $next, deptype("presence"));
$nexturl = urlto($next, $page);
$nexttitle = title_of($next);
}

1
debian/changelog vendored
View File

@ -3,6 +3,7 @@ ikiwiki (3.20121213) UNRELEASED; urgency=low
* htmlscrubber: Allow the bitcoin URI scheme.
* aggregate: When run with --aggregate, if an aggregation is already
running, don't go on and --refresh.
* trail: Converted all dependencies to presence dependencies.
-- Joey Hess <joeyh@debian.org> Sat, 22 Dec 2012 16:15:24 -0400

View File

@ -0,0 +1,26 @@
I've just modified the trail plugin to use only presence, and not
content dependencies. Using content dependencies, particularly to the page
that defines the trail, meant that every time that page changed, *every*
page in the trail gets rebuilt. This leads to users setting up sites that
have horrible performance, if the trail is defined in, for example, the top
page of a blog.
Unfortunatly, this change to presence dependencies has
introduced a bug. Now when an existing trail is removed, the pages in the
trail don't get rebuilt to remove the trail (both html display and state).
I think that to fix this bug, the plugin should use a hook to
force rebuilding of all the pages that were in the trail, when
the trail is removed (or changed).
There's a difficulty in doing that: The needsbuild hook runs before the scan
hook, so before it has a chance to see if the trail directive is still there.
It'd need some changes to ikiwiki's hooks.
(An improvement in this area would probably simplify other plugins, which
currently abuse the needsbuild hook to unset state, to handle the case
where the directive that resulted in that state is removed.)
I apologise for introducing a known bug, but the dependency mess was too
bad to leave as-is. And I have very little time (and regrettably, even less
power) to deal with it right now. :( --[[Joey]]