]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki.pm
another class of conflicts: subdir/file conflicts
[git.ikiwiki.info.git] / IkiWiki.pm
index d2ed999239b16a36de61bfcff65f892bb8bbd642..85b5424863e5836af0b9d1e0dba2ef0fb73abb87 100644 (file)
@@ -441,6 +441,13 @@ sub getsetup () {
                safe => 0,
                rebuild => 0,
        },
                safe => 0,
                rebuild => 0,
        },
+       wrapper_background_command => {
+               type => "internal",
+               default => '',
+               description => "background shell command to run",
+               safe => 0,
+               rebuild => 0,
+       },
        gettime => {
                type => "internal",
                description => "running in gettime mode",
        gettime => {
                type => "internal",
                description => "running in gettime mode",
@@ -592,10 +599,11 @@ sub loadplugins () {
        return 1;
 }
 
        return 1;
 }
 
-sub loadplugin ($) {
+sub loadplugin ($;$) {
        my $plugin=shift;
        my $plugin=shift;
+       my $force=shift;
 
 
-       return if grep { $_ eq $plugin} @{$config{disable_plugins}};
+       return if ! $force && grep { $_ eq $plugin} @{$config{disable_plugins}};
 
        foreach my $dir (defined $config{libdir} ? possibly_foolish_untaint($config{libdir}) : undef,
                         "$installdir/lib/ikiwiki") {
 
        foreach my $dir (defined $config{libdir} ? possibly_foolish_untaint($config{libdir}) : undef,
                         "$installdir/lib/ikiwiki") {
@@ -871,7 +879,19 @@ sub will_render ($$;$) {
        # Important security check.
        if (-e "$config{destdir}/$dest" && ! $config{rebuild} &&
            ! grep { $_ eq $dest } (@{$renderedfiles{$page}}, @{$oldrenderedfiles{$page}}, @{$wikistate{editpage}{previews}})) {
        # Important security check.
        if (-e "$config{destdir}/$dest" && ! $config{rebuild} &&
            ! grep { $_ eq $dest } (@{$renderedfiles{$page}}, @{$oldrenderedfiles{$page}}, @{$wikistate{editpage}{previews}})) {
-               error("$config{destdir}/$dest independently created, not overwriting with version from $page");
+               my $from_other_page=0;
+               foreach my $p (keys %renderedfiles) {
+                       if (grep {
+                               $_ eq $dest ||
+                               dirname($_) eq $dest
+                           } @{$renderedfiles{$p}}, @{$oldrenderedfiles{$p}}) {
+                               $from_other_page=1;
+                               last;
+                       }
+               }
+
+               error("$config{destdir}/$dest independently created, not overwriting with version from $page")
+                       unless $from_other_page;
        }
 
        if (! $clear || $cleared{$page}) {
        }
 
        if (! $clear || $cleared{$page}) {
@@ -1839,11 +1859,11 @@ sub rcs_prepedit ($) {
        $hooks{rcs}{rcs_prepedit}{call}->(@_);
 }
 
        $hooks{rcs}{rcs_prepedit}{call}->(@_);
 }
 
-sub rcs_commit ($$$;$$) {
+sub rcs_commit (@) {
        $hooks{rcs}{rcs_commit}{call}->(@_);
 }
 
        $hooks{rcs}{rcs_commit}{call}->(@_);
 }
 
-sub rcs_commit_staged ($$$) {
+sub rcs_commit_staged (@) {
        $hooks{rcs}{rcs_commit_staged}{call}->(@_);
 }
 
        $hooks{rcs}{rcs_commit_staged}{call}->(@_);
 }