]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/patchqueue/pruning_is_too_strict.mdwn
web commit by JoshTriplett: Remove duplicate vote.
[git.ikiwiki.info.git] / doc / patchqueue / pruning_is_too_strict.mdwn
index c9087ae90098a85b5f9ff1bca145a5223786f03b..0b7ea76f99a9a3ad0fd401a9828046b859c45d21 100644 (file)
@@ -1,83 +1,80 @@
 Preliminary patch for a feature wishlist item: [[bugs/pruning_is_too_strict]].
 
-    diff --git a/IkiWiki.pm b/IkiWiki.pm
-    index 1a00f2d..0119a26 100644
-    --- a/IkiWiki.pm
-    +++ b/IkiWiki.pm
-    @@ -20,6 +20,8 @@ our $VERSION = 1.00;
+    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
-    @@ -318,6 +320,22 @@ sub baseurl (;$) { #{{{
-       return $page;
+    @@ -343,6 +352,22 @@
+        return $page;
      } #}}}
-     
+
     +sub basefile ($;$) { #{{{
-    +  my $file=shift;
-    +  my $base=shift || $config{srcdir};
+    +   my $file=shift;
+    +   my $base=shift || $config{srcdir};
     +
-    +  require File::Spec;
-    +  $base=File::Spec->canonpath($base);
-    +  my $ret=File::Spec->canonpath($file);
+    +   require File::Spec;
+    +   $base=File::Spec->canonpath($base);
+    +   my $ret=File::Spec->canonpath($file);
     +
-    +  $ret=~s#^$base/*##;
-    +  return $ret;
+    +   $ret=~s#^$base/*##;
+    +   return $ret;
     +} #}}}
     +
     +sub is_prune ($;$) { #{{{
-    +  return basefile($_[0], $_[1])=~m/$config{wiki_file_prune_regexp}/;
+    +   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
-    diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
-    index f550b67..5d1991d 100644
-    --- a/IkiWiki/CGI.pm
-    +++ b/IkiWiki/CGI.pm
-    @@ -386,7 +386,7 @@ sub cgi_editpage ($$) { #{{{
-       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");
-       }
-       
-    @@ -476,8 +476,7 @@ sub cgi_editpage ($$) { #{{{
-                       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 --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
-    index 48a25be..a083d3f 100644
-    --- a/IkiWiki/Render.pm
-    +++ b/IkiWiki/Render.pm
-    @@ -202,7 +202,7 @@ sub refresh () { #{{{
-               no_chdir => 1,
-               wanted => sub {
-                       $_=decode_utf8($_);
-    -                  if (/$config{wiki_file_prune_regexp}/) {
-    +                  if (is_prune($_)) {
-                               $File::Find::prune=1;
-                       }
-                       elsif (! -d $_ && ! -l $_) {
-    @@ -222,7 +222,7 @@ sub refresh () { #{{{
-               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 $_) {
\ No newline at end of file
+        # Work around very innefficient behavior in File::Spec if abs2rel
+        # is passed two relative paths. It's much faster if paths are