summaryrefslogtreecommitdiff
path: root/IkiWiki
AgeCommit message (Collapse)Author
2009-08-28Add depends_exact: simplified dependency tracking for dependencies on a ↵Simon McVittie
single page Let E be the number of dependencies per page of the form "A depends on B and nothing else", let D be the number of other dependencies per page, let P be the total number of pages, and let C be the number of changed pages in a refresh. This patch should speed up a refresh from O(E*C*P + D*C*P) to O(C + E*P + D*C*P), assuming that hash lookups are O(1). In practice, plugins like inline and map produce a lot of these very simple dependencies, and my album plugin's combination of inline with a large number of pages causes it to suffer particularly badly. In testing on a wiki with about 7000 objects (3500 full pages, 3500 images), a full rebuild continued to take about 5:30, and a refresh after touching about 350 pages and 350 images reduced from 5:30 to 1:30. As with my previous optimizations, this change will result in downgrades not working correctly until the wiki is rebuilt.
2009-08-28inline: if using pagenames, don't add a dependency on "page1 or page2 or..."Simon McVittie
This is unnecessary and just slows us down (by a factor of 2, in the pessimal case where every page has an inline with pagenames); it's also not possible to optimize it into add_depends_exact calls.
2009-08-28po: better rootpage logic for inline's post formintrigeri
Set rootpage to the non-l10n'd rootpage parameter if it is set, else to the masterpage of the linking page. Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-28Revert "po: keep masterpage as the rootpage for inline's post form"intrigeri
This reverts commit cf43ae5a1f5460a98cdd7acb36c0691b2eec988f, which actually only works when a rootpage parameter is set. A more complete fix will be written soon.
2009-08-28po: keep masterpage as the rootpage for inline's post formintrigeri
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-28inline: moved rootpage logic to a functionintrigeri
The po plugin's injected bestlink must do something special when called by this exact part of inline's code. Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-28po: favor the type of linking page's masterpage on page creationintrigeri
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-28po: fix interdiction to create pages of type pointrigeri
... which was broken by the new page_types code. Signed-off-by: intrigeri <intrigeri@boum.org> (cherry picked from commit 1914ae2fd24e1e8021404eae847d70c710f8542d)
2009-08-28po: favor the type of linking page's masterpage on page creationintrigeri
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-28po: fix interdiction to create pages of type pointrigeri
... which was broken by the new page_types code. Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-27htmltidy: Return an error message if tidy fails. Closes: #543722Joey Hess
On second^Wthird^Wfourth thought, putting the message into the page seems better than using stderr.
2009-08-27po: do not inject custom bestlink function when po_link_to eq defaultintrigeri
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-27po: override the title template variable for coherent homepage titlingintrigeri
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-27po(scan): removed scary comment about only wanting to change the first linkintrigeri
Signed-off-by: intrigeri <intrigeri@boum.org>
2009-08-27Merge commit 'upstream/master' into prv/pointrigeri
2009-08-27po: do not beautify urls on the recentchanges pageintrigeri
... else, the recentchanges page shows a link such as "sandbox.es". But, clicking on it goes to the English (or negotiated language) version of the page. It is better in this one case if the link goes direct to the translated version of the page. (cherry picked from commit 496e8523c6706d096f1b794e3f3ba5dd2fa260f3)
2009-08-26htmltidy: Print a warning message if tidy fails. Closes: #543722Joey Hess
2009-08-26po: do not beautify urls on the recentchanges pageintrigeri
... else, the recentchanges page shows a link such as "sandbox.es". But, clicking on it goes to the English (or negotiated language) version of the page. It is better in this one case if the link goes direct to the translated version of the page.
2009-08-26po: (hopefully) fixed WikiLink to self with po_link_to=defaultintrigeri
2009-08-25don't use pagespec_match_listJoey Hess
This should be more efficient than pagespec_match_list since it short-circuits after the first match is found. The other problem with using pagespec_match_list here is it may throw an error if a bad or failing pagespec somehow got into the dependencies.
2009-08-25Revert "Allow add_depends to take an arrayref"Joey Hess
This reverts commit e4cd168ebedd95585290c97ff42234344bfed46c. There was no benefit to this change.
2009-08-25use pagespec_match_listSimon McVittie
2009-08-25Allow add_depends to take an arrayrefSimon McVittie
2009-08-25Use a hash to de-duplicate dependenciesSimon McVittie
2009-08-24calendar, inline, map: don't pre-join dependenciesSimon McVittie
The new dependency handling works better (eliminates more duplicates) if dependencies are split up. On the same wiki mentioned in the previous commit, this saves about a second (i.e. 4%) on the same test.
2009-08-24Optimize the dependencies listSimon McVittie
On a large wiki you can spend a lot of time reading through large lists of dependencies to see whether files need to be rebuilt (album, with its one-page-per-photo arrangement, suffers particularly badly from this). The dependency list is currently a single pagespec, but it's not used like a normal pagespec - in practice, it's a list of pagespecs joined with the "or" operator. Accordingly, change it to be stored as a list of pagespecs. On a wiki with many tagged photo albums, this reduces the time to refresh after `touch tags/*.mdwn` from about 31 to 25 seconds. Getting the benefit of this change on an existing wiki requires a rebuild.
2009-08-23Instead of passing the args through the wrapper so the CVS pluginAmitai Schlair
can evaluate them, check them in the wrapper right off the bat. This doesn't prevent the deadlock in web commits that need to cvs add directories, but I'm committing so Joey can take a look if he wants.
2009-08-23Explain that command must run unattended, and lose the debug statement.Amitai Schlair
2009-08-23I'm not redefining any subs after all, don't prevent those warnings.Amitai Schlair
2009-08-23Add rsync plugin, though the only rsync-specific thing about it is theAmitai Schlair
assumption that uploading an entire site is efficient.
2009-08-22Oops, use the more recent (and less brittle) directory test.Amitai Schlair
2009-08-22Pass along wrapper args to ikiwiki, then handle the "cvs add dir"Amitai Schlair
case with a getopt hook directly in my plugin. If the wrapper change is safe, we won't need a wrapper wrapper.
2009-08-21Put old unixauth plugin under git control. Needs some serious attention.Amitai Schlair
2009-08-19po: Fixed to run rcs_add ralative to srcdir.Joey Hess
2009-08-16use pagespec_match_list for feedpagesJoey Hess
This is both faster, and propigates any error in processing the feedpages pagespec out to display on the page. Which may have been why I didn't use it before, but currently seems like a good thing to do, since it explains why your feeds are empty..
2009-08-15po: Better fix for missing underlay translation problem.Joey Hess
If a page is taken from the underlay, and one of the specified languages does not have po files in the underlay, it would create a broken link to the translated version of the page for that language. With this change, there's no broken link.
2009-08-15replace N/A with 0Joey Hess
I think the N/A was not intended to be visible, but it can show up as the percent translated to a language. This happens if the page is located in an underlay, and not translated to the language in any other underlay.
2009-08-15update for consistencyJoey Hess
2009-08-15indentationJoey Hess
2009-08-15meta: depend on absolute page name, not relativeSimon McVittie
Previously, [[!meta redir="foo"]] on bar, where bar/foo exists, would depend on "foo" (which matches nothing, probably) rather than "bar/foo". (cherry picked from commit f27ec09b72f886415e63fe394e18d9c3cb3913bf)
2009-08-15img: depend on absolute page name, not relativeSimon McVittie
Previously, [[!img bar.jpg]] on foo, where foo/bar.jpg exists, would get a dependency equivalent to "glob(bar.jpg)" (which might not match anything), rather than the correct "glob(foo/bar.jpg)". (cherry picked from commit 85b2ec49ecd12dd23e5c432933457a72744ce7cb)
2009-08-14optimise brokenlinks by gathering the data when calculating backlinksJoey Hess
During backlink calulation, all links are examined and broken links can be detected for free, so store a list of broken links and have brokenlinks use it. Exposing the %brokenlinks structure is a bit ugly, but the speedup seems worth it: Around 1 second for wikis the size of the doc wiki that use brokenlinks.
2009-08-14orphans: Reuse backlinks infoJoey Hess
This plugin was building essentially the same data that is built to handle backlinks, so reuse that as an optimisation.
2009-08-13po: use discussionpage config settingJoey Hess
This was tricky. $links{$page/discussion} must be checked; with it in lowercase.
2009-08-13Add discussionpage configuration settingJoey Hess
By adding this setting, we get both more configurability, and a minor optimisation too, since gettext does not need to be called continually to get the Discussion value.
2009-08-13optimise gettext callsJoey Hess
2009-08-13Add my CVS plugin and related patches.Amitai Schlair
2009-08-12more idiomatic use of foreachJoey Hess
2009-08-12fix some more foreaches that clal functions to not use $_Joey Hess
2009-08-12use a more idiomatic foreach myJoey Hess