summaryrefslogtreecommitdiff
path: root/doc/todo/dependency_types.mdwn
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2009-10-06 20:20:45 -0400
committerJoey Hess <joey@gnu.kitenet.net>2009-10-06 20:20:45 -0400
commit61977ac97bd05ce70f1b79a0ef4a7bc8f3204bc8 (patch)
tree516c7e639e20dac2e2c4c04736a7d4995fcbdeea /doc/todo/dependency_types.mdwn
parent77598dfa9fccb668345198ea169cf7cf00b9845e (diff)
parentd8607f5e73990e7802e03eef2065ebac102fbd2f (diff)
Merge branch 'master' into dependency-types
Conflicts: doc/todo/dependency_types.mdwn
Diffstat (limited to 'doc/todo/dependency_types.mdwn')
-rw-r--r--doc/todo/dependency_types.mdwn31
1 files changed, 30 insertions, 1 deletions
diff --git a/doc/todo/dependency_types.mdwn b/doc/todo/dependency_types.mdwn
index 19294bba0..32c9187be 100644
--- a/doc/todo/dependency_types.mdwn
+++ b/doc/todo/dependency_types.mdwn
@@ -158,7 +158,7 @@ pagecounts much more efficient.
----
-Link dependencies:
+### Link dependencies
* `add_depends($page, $spec, links => 1, presence => 1)`
adds a links + presence dependency.
@@ -173,3 +173,32 @@ Link dependencies:
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.