Merge branch 'master' into dependency-types

Conflicts:
	doc/todo/dependency_types.mdwn
master
Joey Hess 2009-10-06 20:20:45 -04:00
commit 61977ac97b
4 changed files with 63 additions and 1 deletions

View 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]]

View 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]]

View File

@ -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.

View 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.