From: Joey Hess Date: Wed, 7 Oct 2009 00:20:45 +0000 (-0400) Subject: Merge branch 'master' into dependency-types X-Git-Tag: 3.20091017~27^2~84 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=61977ac97bd05ce70f1b79a0ef4a7bc8f3204bc8;p=ikiwiki.git Merge branch 'master' into dependency-types Conflicts: doc/todo/dependency_types.mdwn --- 61977ac97bd05ce70f1b79a0ef4a7bc8f3204bc8 diff --cc doc/todo/dependency_types.mdwn index 19294bba0,7e940543c..32c9187be --- a/doc/todo/dependency_types.mdwn +++ b/doc/todo/dependency_types.mdwn @@@ -172,4 -175,32 +172,33 @@@ pagecounts much more efficient that the page links to, which is just what link dependencies are triggered on. +[[done]] + ---- + + ### the removal problem + + So far I have not addressed fixing the removal problem (which Will + discusses above). + + Summary of problem: A has a dependency on a pagespec such as + "bugs/* and !link(done)". B currently matches. Then B is updated, + in a way that makes A's dependency not match it (ie, it links to done). + Now A is not updated, because ikiwiki does not realize that it + depended on B before. + + This was worked around to fix [[bugs/inline_page_not_updated_on_removal]] + by inline and map adding explicit dependencies on each page that appears + on them. Then a change to B triggers the explicit dep. While this works, + it's 1) ugly 2) probably not implemented by all plugins that could + be affected by this problem (ie, linkmap) and 3) is most of the reason why + we grew the complication of `depends_simple`. + + One way to fix this is to include with each dependency, a list of pages + that currently match it. If the list changes, the dependency is triggered. + + Should be doable, but seems to involve a more work than + currently. Consider that a dependency on "bugs/*" currently + is triggered by just checking until *one* page is found to match it. + But to store the list, *every* page would have to be tried against it. + Unless the list can somehow be intelligently updated, looking at only the + changed pages.