From 2a60cda1729ead6dd2f13fc40ef1dccec5b30d92 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sat, 25 Dec 2010 23:01:08 +0000 Subject: [PATCH 1/3] tag: optionally write autocreated tags to the transient underlay For the moment, have the tag test keep the old behaviour. --- IkiWiki/Plugin/tag.pm | 20 ++++++++++++++++++-- t/tag.t | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index fd5ce1e8a..e4c8a1155 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -12,6 +12,8 @@ sub import { hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1); hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1); hook(type => "pagetemplate", id => "tag", call => \&pagetemplate); + + IkiWiki::loadplugin("transient"); } sub getopt () { @@ -41,6 +43,14 @@ sub getsetup () { safe => 1, rebuild => undef, }, + tag_autocreate_commit => { + type => "boolean", + example => 1, + default => 1, + description => "commit autocreated tag pages", + safe => 1, + rebuild => 0, + }, } sub taglink ($) { @@ -97,8 +107,14 @@ sub gentag ($) { my $template=template("autotag.tmpl"); $template->param(tagname => tagname($tag)); $template->param(tag => $tag); - writefile($tagfile, $config{srcdir}, $template->output); - if ($config{rcs}) { + + my $dir = $config{srcdir}; + if (! $config{tag_autocreate_commit}) { + $dir = $IkiWiki::Plugin::transient::transientdir; + } + + writefile($tagfile, $dir, $template->output); + if ($config{rcs} && $config{tag_autocreate_commit}) { IkiWiki::disable_commit_hook(); IkiWiki::rcs_add($tagfile); IkiWiki::rcs_commit_staged(message => $message); diff --git a/t/tag.t b/t/tag.t index 693900c43..f4aac765f 100755 --- a/t/tag.t +++ b/t/tag.t @@ -22,6 +22,7 @@ $config{wiki_file_chars} = "-[:alnum:]+/.:_"; $config{userdir} = "users"; $config{tagbase} = "tags"; $config{tag_autocreate} = 1; +$config{tag_autocreate_commit} = 1; $config{default_pageext} = "mdwn"; $config{wiki_file_prune_regexps} = [qr/^\./]; $config{underlaydirbase} = '.'; From f695bdd843520729aa73cd063c22f1ebd1a01f1f Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Fri, 7 Jan 2011 20:11:19 +0000 Subject: [PATCH 2/3] tag test: write tag pages into the transient underlay --- t/tag.t | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/t/tag.t b/t/tag.t index f4aac765f..0d360b06e 100755 --- a/t/tag.t +++ b/t/tag.t @@ -3,7 +3,7 @@ package IkiWiki; use warnings; use strict; -use Test::More tests => 22; +use Test::More tests => 23; BEGIN { use_ok("IkiWiki"); } BEGIN { use_ok("IkiWiki::Render"); } @@ -22,7 +22,7 @@ $config{wiki_file_chars} = "-[:alnum:]+/.:_"; $config{userdir} = "users"; $config{tagbase} = "tags"; $config{tag_autocreate} = 1; -$config{tag_autocreate_commit} = 1; +$config{tag_autocreate_commit} = 0; $config{default_pageext} = "mdwn"; $config{wiki_file_prune_regexps} = [qr/^\./]; $config{underlaydirbase} = '.'; @@ -66,7 +66,8 @@ my (%pages, @del); IkiWiki::gen_autofile("tags/lucky.mdwn", \%pages, \@del); is_deeply(\%pages, {"t/tmp/tags/lucky" => 1}) || diag explain \%pages; is_deeply(\@del, []) || diag explain \@del; -ok(-s "t/tmp/tags/lucky.mdwn"); +ok(! -s "t/tmp/tags/lucky.mdwn"); +ok(-s "t/tmp/.ikiwiki/transient/tags/lucky.mdwn"); # generating an autofile that already exists does nothing %pages = @del = (); From 40f85e5c91c86a55661f68a5e9e38cc2c2a1e1be Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sun, 26 Dec 2010 22:19:58 +0000 Subject: [PATCH 3/3] tag: default to tag_autocreate_commit=1 as intended --- IkiWiki/Plugin/tag.pm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index e4c8a1155..13dabce0c 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -7,6 +7,7 @@ use strict; use IkiWiki 3.00; sub import { + hook(type => "checkconfig", id => "tag", call => \&checkconfig); hook(type => "getopt", id => "tag", call => \&getopt); hook(type => "getsetup", id => "tag", call => \&getsetup); hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1); @@ -53,6 +54,12 @@ sub getsetup () { }, } +sub checkconfig () { + if (! defined $config{tag_autocreate_commit}) { + $config{tag_autocreate_commit} = 1; + } +} + sub taglink ($) { my $tag=shift;