trail: Converted all dependencies to presence dependencies.
smcv please note this introduces another bug, which I've openedmaster
parent
dc05125b0b
commit
86519b047e
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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]]
|
Loading…
Reference in New Issue