diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/bugs/pruning_is_too_strict.mdwn | 6 | ||||
-rw-r--r-- | doc/patchqueue/pruning_is_too_strict.mdwn | 80 |
2 files changed, 4 insertions, 82 deletions
diff --git a/doc/bugs/pruning_is_too_strict.mdwn b/doc/bugs/pruning_is_too_strict.mdwn index ef8d887e9..628cdc6d4 100644 --- a/doc/bugs/pruning_is_too_strict.mdwn +++ b/doc/bugs/pruning_is_too_strict.mdwn @@ -3,6 +3,8 @@ ikiwiki compiles my wiki successfully. But the svn post-commit hook it installs I think the prune regexp would be more useful if it was only used to check the relative path from the src root to a file in the wiki. > I agree with this feature wish. Here is a _first cut_ -> [[implementation|patchqueue/pruning_is_too_strict]] for this feature. +> implementation for this feature. > -> --[[roktas]]
\ No newline at end of file +> --[[roktas]] + +[[bugs/Done]], and sorry it took so long to apply --[[Joey]] diff --git a/doc/patchqueue/pruning_is_too_strict.mdwn b/doc/patchqueue/pruning_is_too_strict.mdwn deleted file mode 100644 index 0b7ea76f9..000000000 --- a/doc/patchqueue/pruning_is_too_strict.mdwn +++ /dev/null @@ -1,80 +0,0 @@ -Preliminary patch for a feature wishlist item: [[bugs/pruning_is_too_strict]]. - - diff -ur ikiwiki-orig/IkiWiki/CGI.pm ikiwiki/IkiWiki/CGI.pm - --- ikiwiki-orig/IkiWiki/CGI.pm 2006-10-27 20:15:17.000000000 -0700 - +++ ikiwiki/IkiWiki/CGI.pm 2006-11-07 22:32:41.000000000 -0800 - @@ -405,7 +405,7 @@ - my ($page)=$form->field('page'); - $page=titlepage(possibly_foolish_untaint($page)); - if (! defined $page || ! length $page || - - $page=~/$config{wiki_file_prune_regexp}/ || $page=~/^\//) { - + is_prune($page) || $page=~/^\//) { - error("bad page name"); - } - - @@ -495,8 +495,7 @@ - my $best_loc; - if (! defined $from || ! length $from || - $from ne $form->field('from') || - - $from=~/$config{wiki_file_prune_regexp}/ || - - $from=~/^\// || - + is_prune($from) || $from=~/^\// || - $form->submitted eq "Preview") { - @page_locs=$best_loc=$page; - } - diff -ur ikiwiki-orig/IkiWiki/Render.pm ikiwiki/IkiWiki/Render.pm - --- ikiwiki-orig/IkiWiki/Render.pm 2006-10-27 20:15:17.000000000 -0700 - +++ ikiwiki/IkiWiki/Render.pm 2006-11-07 22:36:48.000000000 -0800 - @@ -189,7 +193,7 @@ - no_chdir => 1, - wanted => sub { - $_=decode_utf8($_); - - if (/$config{wiki_file_prune_regexp}/) { - + if (is_prune($_)) { - $File::Find::prune=1; - } - elsif (! -d $_ && ! -l $_) { - @@ -209,7 +213,7 @@ - no_chdir => 1, - wanted => sub { - $_=decode_utf8($_); - - if (/$config{wiki_file_prune_regexp}/) { - + if (is_prune($_, $config{underlaydir})) { - $File::Find::prune=1; - } - elsif (! -d $_ && ! -l $_) { - diff -ur ikiwiki-orig/IkiWiki.pm ikiwiki/IkiWiki.pm - --- ikiwiki-orig/IkiWiki.pm 2006-10-27 20:15:23.000000000 -0700 - +++ ikiwiki/IkiWiki.pm 2006-11-07 22:21:17.000000000 -0800 - @@ -21,6 +21,8 @@ - # Optimisation. - use Memoize; - memoize("abs2rel"); - +memoize("basefile"); - +memoize("is_prune"); - memoize("pagespec_translate"); - - my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE - @@ -343,6 +352,22 @@ - return $page; - } #}}} - - +sub basefile ($;$) { #{{{ - + my $file=shift; - + my $base=shift || $config{srcdir}; - + - + require File::Spec; - + $base=File::Spec->canonpath($base); - + my $ret=File::Spec->canonpath($file); - + - + $ret=~s#^$base/*##; - + return $ret; - +} #}}} - + - +sub is_prune ($;$) { #{{{ - + return basefile($_[0], $_[1])=~m/$config{wiki_file_prune_regexp}/; - +} #}}} - + - sub abs2rel ($$) { #{{{ - # Work around very innefficient behavior in File::Spec if abs2rel - # is passed two relative paths. It's much faster if paths are |