From: Joey Hess Date: Sat, 10 Oct 2009 00:16:46 +0000 (-0400) Subject: Merge branch 'master' into dependency-types X-Git-Tag: 3.20091017~27^2~34 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/f7ae61c8d2bb1645c476b69061015f7d43b8edfd Merge branch 'master' into dependency-types Conflicts: doc/bugs/transitive_dependencies.mdwn --- f7ae61c8d2bb1645c476b69061015f7d43b8edfd diff --cc debian/NEWS index 520f38815,808105fd5..7c88ca733 --- a/debian/NEWS +++ b/debian/NEWS @@@ -1,13 -1,3 +1,13 @@@ - ikiwiki (3.14159266) UNRELEASED; urgency=low ++ikiwiki (3.2009XXXX) UNRELEASED; urgency=low + + To take advantage of significant performance improvements, all + wikis need to be rebuilt on upgrade to this version. If you + listed your wiki in /etc/ikiwiki/wikilist this will be done + automatically when the Debian package is upgraded. Or use + ikiwiki-mass-rebuild to force a rebuild. + + -- Joey Hess Mon, 05 Oct 2009 16:48:59 -0400 + ikiwiki (3.1415926) unstable; urgency=low In order to fix a performance bug, all wikis need to be rebuilt on diff --cc debian/changelog index 5ff8e4ac5,a79faf7fb..442619b3b --- a/debian/changelog +++ b/debian/changelog @@@ -1,45 -1,19 +1,50 @@@ - ikiwiki (3.14159266) UNRELEASED; urgency=low ++ikiwiki (3.2009XXXX) UNRELEASED; urgency=low + - * parentlinks: Add has_parentlinks template parameter to allow styling - the toplevel index differently etc. - * img: Correct bug in image size calculation code. - * img: Fix dependency code for full size images. - * toggle, relativedate: Support templates that add attributes - to the body tag. - * Support RPC::XML 0.69's incompatable object instantiation method. - * mirrorlist: Display nothing if list is empty. - * Fix a bug that could lead to duplicate links being recorded - for tags. - * Added support framework for multiple types of dependencies. - * Allow declaring that a dependency is only affected by page presence - or changes to its links. ++ * Added support framework for multiple types of dependencies, including ++ dependncies that are only affected by page precence or link changes. ++ * Rebuild wikis on upgrade to this version to get improved dependency ++ info. + * pagecount, calendar, postsparkline, progress: Use a presence dependency, + which makes these directives much less expensive to use, since page + edits will no longer trigger an unnecessary update. + * map: Use a presence dependency unless show= is specified. + This makes maps efficient enough that they can be used on sidebars! + * inline: Use a presence dependency in quick mode. + * brokenlinks: Use a link dependency. + This makes it much more efficient, only updating when really necessary. + * orphans, pagestats: Use a combination of presence and link dependencies. + This makes them more efficient. It also fixes a longstanding bug, + where if only a small set of pages were considered by orphans/pagestats, + changes to links on other pages failed to cause an update. + * linkmap: Use a combination of presence and link dependencies. + This makes the map be regenerated much less frequently in many cases, + so larger maps are more practical to use now. - * Transitive dependencies are now correctly supported. - * Rebuild wikis on upgrade to this version to get improved dependency - info. + * Plugins providing PageSpec `match_*` functions should pass additional - influence information when creating result objects. ++ influence information when creating result objects. This allows correctly ++ handling many more complicated dependencies. + * API change: `pagespec_match_list` has completly changed its interface. + The old interface will be removed soon, and a warning will be printed + if any plugins try to use it. ++ * Transitive dependencies are now correctly supported. ++ ++ -- Joey Hess Fri, 09 Oct 2009 20:13:27 -0400 ++ + ikiwiki (3.20091009) unstable; urgency=low + + * parentlinks: Add has_parentlinks template parameter to allow styling + the toplevel index differently etc. + * img: Correct bug in image size calculation code. + * img: Fix dependency code for full size images. + * toggle, relativedate: Support templates that add attributes + to the body tag. + * Support RPC::XML 0.69's incompatible object instantiation method. + * mirrorlist: Display nothing if list is empty. + * Fix a bug that could lead to duplicate links being recorded + for tags. - * Optimize away most expensive file prune calls, when refreshing, + * Optimize away most expensive file prune checks, when refreshing, by only checking new files. - -- Joey Hess Sun, 27 Sep 2009 17:40:03 -0400 + -- Joey Hess Fri, 09 Oct 2009 19:53:50 -0400 ikiwiki (3.14159265) unstable; urgency=low diff --cc debian/postinst index dd4be6e0e,2ba26e5b6..bf1825ab7 --- a/debian/postinst +++ b/debian/postinst @@@ -4,7 -4,7 +4,7 @@@ set - # Change this when some incompatible change is made that requires # rebuilding all wikis. - firstcompat=3.14159266 -firstcompat=3.1415926 ++firstcompat=3.20091010 if [ "$1" = configure ] && \ dpkg --compare-versions "$2" lt "$firstcompat"; then diff --cc doc/bugs/transitive_dependencies.mdwn index 0a2e9ec28,70b5fb4d4..c44fe7962 --- a/doc/bugs/transitive_dependencies.mdwn +++ b/doc/bugs/transitive_dependencies.mdwn @@@ -65,4 -65,30 +65,30 @@@ Downsides here modification to plugins/brokenlinks causes an unnecessary update of plugins, and could be solved by adding more dependency types.) ---[[Joey]] +[[done]] --[[Joey]] + + > Some questions/comments... I've thought about this a lot for [[todo/tracking_bugs_with_dependencies]]. + > + > * When you say that anything that causes a rebuild of B is treated as a change of B, are you: i) Treating + > any rebuild as a change, or ii) Treating any rebuild that gives a new result as a change? Option ii) would + > lead to fewer rebuilds. Implementation is easy: when you're about to rebuild a page, load the old rendered html in. Do the rebuild. Compare + > the new and old html. If there is a difference, then mark that page as having changed. If there is no difference + > then you don't need to mark that pages as changed, even though it has been rebuilt. (This would ignore pages in meta-data that don't + > cause changes in html, but I don't think that is a huge issue.) + + >> That is a good idea. I will have to look at it to see if the overhead of + >> reading back in the html of every page before building actually is a + >> win though. So far, I've focused on avoiding unnecessary rebuilds, and + >> there is still some room for more dependency types doing so. + >> (Particularly for metadata dependencies..) --[[Joey]] + + > * The second comment I have relates to cycles in transitive dependencies. At the moment I don't think this is + > possible, but with some additions it may well become so. This could be problematic as it could lead to a) + > updates that never complete, or b) it being theoretically unclear what the final result should be (i.e. you + > can construct logical paradoxes in the system). I think the point above about marking things as changed only when + > the output actually changes fixes any cases that are well defined. For logical paradoxes and infinite loops (e.g. + > two pages that include each other), you might want to put a limit on the number of times you'll rebuild a page in any + > given run of ikiwiki. Say, only allow a page to rebuild twice on any run, regardless of whether a page it depends on changes. + > This is not a perfect solution, but would be a good approximation. -- [[Will]] + + >> Ikiwiki only builds any given output file once per run, already. --[[Joey]]