Commit Graph

21 Commits (ac8ecdcf68b89544d126032718e225add0a09238)

Author SHA1 Message Date
Simon McVittie 1ea8580a5f Remove now-unused function pagespec_merge
Now that dependencies are a list of pagespecs with an implicit "or"
operation, there's no need to try to merge pagespecs under normal use.

ikiwiki-transition contains the only use of the function, so move
it there rather than deleting it entirely (it's used to concatenate all
admins' lists of locked pages).
2009-08-25 00:31:40 +01:00
Simon McVittie 7227c2debf Use a hash to de-duplicate dependencies 2009-08-25 00:31:16 +01:00
Simon McVittie fe4f176f72 Optimize the dependencies list
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-24 23:18:10 +01:00
Joey Hess c2e2da6ee2 ikiwiki-transition: deduplinks was broken and threw away all metadata stored by plugins in the index. Fix this bug. 2009-05-22 13:09:11 -04:00
Joey Hess a8318303d8 fix 2009-05-22 13:00:50 -04:00
Joey Hess f7ded1174d ikiwiki-transition: Allow setup files to be passed to all subcommands that need a srcdir. 2009-05-20 13:26:20 -04:00
Joey Hess 9f5f5543bf ikiwiki-transition: If passed a nonexistant srcdir, or one not containing .ikiwiki, abort with an error rather than creating it. 2009-05-06 20:46:26 -04:00
Joey Hess 2a7721febd Avoid %links accumulating duplicates. (For TOVA)
This is sorta an optimisation, and sorta a bug fix. In one
test case I have available, it can speed a page build up from 3
minutes to 3 seconds.

The root of the problem is that $links{$page} contains arrays of
links, rather than hashes of links. And when a link is found,
it is just pushed onto the array, without checking for dups.

Now, the array is emptied before scanning a page, so there
should not be a lot of opportunity for lots of duplicate links
to pile up in it. But, in some cases, they can, and if there
are hundreds of duplicate links in the array, then scanning it
for matching links, as match_link and some other code does,
becomes much more expensive than it needs to be.

Perhaps the real right fix would be to change the data structure
to a hash. But, the list of links is never accessed like that,
you always want to iterate through it.

I also looked at deduping the list in saveindex, but that does
a lot of unnecessary work, and doesn't completly solve the problem.

So, finally, I decided to add an add_link function that handles deduping,
and make ikiwiki-transition remove the old dup links.
2009-05-06 00:27:24 -04:00
Joey Hess 794dbd2476 fix moveprefs transition 2008-12-31 14:54:22 -05:00
Joey Hess 04f064e78a make ikiwiki-transition prefix_directives take a setup file
This is easier to remeber, and less error-prone than passing it all the
pages in the wiki.
2008-12-24 19:48:42 -05:00
Joey Hess 7ba65e7f4b remove deprecated admin prefs
A new ikiwiki-transition moveprefs subcommand can pull the old data out of
the userdb and inject it into the setup file.

Note that it leaves the old values behind in the userdb too. I did this
because I didn't want to lose data if it fails writing the setup file for
some reason, and the old data in the userdb will only use a small amount of
space. Running the command multiple times will mostly not change anything.
2008-12-24 16:16:03 -05:00
Joey Hess 14a9e704c1 enable aggregate_internal by default 2008-12-23 16:08:21 -05:00
Joey Hess 11a4ad8a4d add a guard against multiple cgi or rcs wrappers 2008-08-05 21:02:18 -04:00
Joey Hess ea6dc38325 add ikiwiki-transition setupformat subcommand.
Also fixed a bug in how aggregateinternal used IkiWiki::Setup::load,
and added checks for arguments to other subcommands.
2008-08-05 20:40:49 -04:00
Simon McVittie b29d11b3c6 Fix aggregateinternal migration so it skips expired entries, and deletes output 2008-07-15 03:24:05 +01:00
Simon McVittie 50a5ab3c4e Add aggregateinternal mode to ikiwiki-transition.
Usage:
1. Update all pagespecs that use aggregated pages to use internal()
2. ikiwiki-transition aggregateinternal $srcdir $htmlext
   (where $srcdir and $htmlext are the srcdir and htmlext options in
   your .setup file)
3. Add aggregateinternal to your .setup file
4. Rebuild the wiki
2008-07-14 23:39:22 +01:00
Josh Triplett 1aab048e81 ikiwiki-transition: Fix command-line processing so the prefix_directives transition works again. 2008-07-09 23:42:34 -07:00
Joey Hess e943812dc9 hashed password support, and empty password security fix
This implements the previously documented hashed password support.

While implementing that, I noticed a security hole, which this commit
also fixes..
2008-05-30 17:35:34 -04:00
Joey Hess 82ecf0aa9d fix transitioning of page state 2008-03-21 13:22:47 -04:00
Joey Hess 3479809f96 add transition code for indexdb 2008-03-21 09:37:52 -04:00
Joey Hess 61ffa4a816 rename ikiwiki-prefix-directives into ikiwiki-transition
If we have transitions of this sort in the future, this program will
hopefully be used to handle them too.
2008-01-30 17:22:59 -05:00