Merge branch 'master' into dependency-types
authorJoey Hess <joey@gnu.kitenet.net>
Wed, 7 Oct 2009 00:20:45 +0000 (20:20 -0400)
committerJoey Hess <joey@gnu.kitenet.net>
Wed, 7 Oct 2009 00:20:45 +0000 (20:20 -0400)
Conflicts:
doc/todo/dependency_types.mdwn

1  2 
doc/todo/dependency_types.mdwn

index 19294bba054e5fb509c97a23de6c6a1f8cc267eb,7e940543c00aa248c018d4f6c30a5131162eec66..32c9187be27ef07135a8a3300c5bafb8c657151c
@@@ -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.