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

doc/bugs/discussion_of_what__63__.mdwn
doc/bugs/git_utf8.mdwn
doc/todo/cache_backlinks.mdwn [new file with mode: 0644]
doc/todo/dependency_types.mdwn

index 2f469fed9718552d359955534636fe4bf5ab4b3d..763e599bfb714a2419432edfb4717d292e2dba5e 100644 (file)
@@ -1,3 +1,7 @@
 When searching in ikiwiki, sometimes discussion pages turn up. However, they are only titled "discussion".
 In order to know what topic they are discussing, you have to look at the URL. Shouldn't they be titled
 "foo/discussion" or "discussion of foo" or something? Thanks, --[[perolofsson]]
+
+> This bug was filed when ikiwiki still used hyperestradier.
+> Now that it uses xapian, the search results include the full
+> page name, which seems sufficient to call this [[done]] --[[Joey]] 
index dc8df1dab1a46d0200ef05385bcea3e92f036c94..39903d51ca1d52967014e5bc072be4791bece7d7 100644 (file)
@@ -6,3 +6,7 @@ appearing.
 
 Probably git's output needs to be force encoded to utf-8.
 --[[Joey]]
+
+> I did that in 4ac0b2953131d7a53562ab8918c8e5a49952d8ac , [[done]]
+> --[[Joey]] 
+
diff --git a/doc/todo/cache_backlinks.mdwn b/doc/todo/cache_backlinks.mdwn
new file mode 100644 (file)
index 0000000..dc13d46
--- /dev/null
@@ -0,0 +1,25 @@
+I'm thinking about caching the backlinks between runs. --[[Joey]] 
+
+* It would save some time (spent resolving every single link
+  on every page, every run). The cached backlinks could be
+  updated by only updating backlinks from changed pages.
+  (Saved time is less than 1/10th of a second for docwiki.)
+
+* It may allow attacking [[bugs/bestlink_change_update_issue]],
+  since that seems to need a copy of the old backlinks.
+  Actually, just the next change will probably solve that:
+
+* It should allow removing the `%oldlink_targets`, `%backlinkchanged`,
+  and `%linkchangers` calculation code. Instead, just generate
+  a record of which pages' backlinks have changed when updating
+  the backlinks, and then rebuild those pages.
+
+Proposal:
+
+* Store a page's backlinks in the index, same as everything else.
+
+* Do *something* to generate or store the `%brokenlinks` data.
+  This is currently generated when calculating backlinks, and
+  is only used by the brokenlinks plugin. It's not the right
+  "shape" to be stored in the index, but could be changed around
+  to fit.
index 19294bba054e5fb509c97a23de6c6a1f8cc267eb..32c9187be27ef07135a8a3300c5bafb8c657151c 100644 (file)
@@ -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.