finish with rcs plugin conversion
parent
14cd75746a
commit
6154dd03cb
47
IkiWiki.pm
47
IkiWiki.pm
|
@ -414,13 +414,10 @@ sub checkconfig () { #{{{
|
||||||
unless exists $config{wikistatedir};
|
unless exists $config{wikistatedir};
|
||||||
|
|
||||||
if ($config{rcs}) {
|
if ($config{rcs}) {
|
||||||
eval qq{use IkiWiki::Rcs::$config{rcs}};
|
loadplugin($config{rcs});
|
||||||
if ($@) {
|
|
||||||
error("Failed to load RCS module IkiWiki::Rcs::$config{rcs}: $@");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
require IkiWiki::Rcs::Stub;
|
loadplugin("norcs");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined $config{umask}) {
|
if (defined $config{umask}) {
|
||||||
|
@ -1428,6 +1425,46 @@ sub run_hooks ($$) { # {{{
|
||||||
return 1;
|
return 1;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_update () { #{{{
|
||||||
|
$hooks{rcs}{rcs_update}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_prepedit ($) { #{{{
|
||||||
|
$hooks{rcs}{rcs_prepedit}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_commit ($$$;$$) { #{{{
|
||||||
|
$hooks{rcs}{rcs_commit}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_commit_staged ($$$) { #{{{
|
||||||
|
$hooks{rcs}{rcs_commit_staged}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_add ($) { #{{{
|
||||||
|
$hooks{rcs}{rcs_add}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_remove ($) { #{{{
|
||||||
|
$hooks{rcs}{rcs_remove}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_rename ($$) { #{{{
|
||||||
|
$hooks{rcs}{rcs_rename}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_recentchanges ($) { #{{{
|
||||||
|
$hooks{rcs}{rcs_recentchanges}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_diff ($) { #{{{
|
||||||
|
$hooks{rcs}{rcs_diff}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub rcs_getctime ($) { #{{{
|
||||||
|
$hooks{rcs}{rcs_getctime}{call}->(@_);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
sub globlist_to_pagespec ($) { #{{{
|
sub globlist_to_pagespec ($) { #{{{
|
||||||
my @globlist=split(' ', shift);
|
my @globlist=split(' ', shift);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
package IkiWiki::Plugin::bzr;
|
||||||
package IkiWiki;
|
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
|
@ -8,19 +7,34 @@ use IkiWiki;
|
||||||
use Encode;
|
use Encode;
|
||||||
use open qw{:utf8 :std};
|
use open qw{:utf8 :std};
|
||||||
|
|
||||||
hook(type => "checkconfig", id => "bzr", call => sub { #{{{
|
sub import { #{{{
|
||||||
|
hook(type => "checkconfig", id => "bzr", call => \&checkconfig);
|
||||||
|
hook(type => "getsetup", id => "bzr", call => \&getsetup);
|
||||||
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit_staged", call => \&rcs_commit_staged);
|
||||||
|
hook(type => "rcs", id => "rcs_add", call => \&rcs_add);
|
||||||
|
hook(type => "rcs", id => "rcs_remove", call => \&rcs_remove);
|
||||||
|
hook(type => "rcs", id => "rcs_rename", call => \&rcs_rename);
|
||||||
|
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
|
||||||
|
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
||||||
|
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub checkconfig () { #{{{
|
||||||
if (! defined $config{diffurl}) {
|
if (! defined $config{diffurl}) {
|
||||||
$config{diffurl}="";
|
$config{diffurl}="";
|
||||||
}
|
}
|
||||||
if (length $config{bzr_wrapper}) {
|
if (defined $config{bzr_wrapper} && length $config{bzr_wrapper}) {
|
||||||
push @{$config{wrappers}}, {
|
push @{$config{wrappers}}, {
|
||||||
wrapper => $config{bzr_wrapper},
|
wrapper => $config{bzr_wrapper},
|
||||||
wrappermode => (defined $config{bzr_wrappermode} ? $config{bzr_wrappermode} : "06755"),
|
wrappermode => (defined $config{bzr_wrappermode} ? $config{bzr_wrappermode} : "06755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
hook(type => "getsetup", id => "bzr", call => sub { #{{{
|
sub getsetup () { #{{{
|
||||||
return
|
return
|
||||||
bzr_wrapper => {
|
bzr_wrapper => {
|
||||||
type => "string",
|
type => "string",
|
||||||
|
@ -50,7 +64,7 @@ hook(type => "getsetup", id => "bzr", call => sub { #{{{
|
||||||
safe => 1,
|
safe => 1,
|
||||||
rebuild => 1,
|
rebuild => 1,
|
||||||
},
|
},
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
sub bzr_log ($) { #{{{
|
sub bzr_log ($) { #{{{
|
||||||
my $out = shift;
|
my $out = shift;
|
||||||
|
@ -101,10 +115,10 @@ sub bzr_author ($$) { #{{{
|
||||||
my ($user, $ipaddr) = @_;
|
my ($user, $ipaddr) = @_;
|
||||||
|
|
||||||
if (defined $user) {
|
if (defined $user) {
|
||||||
return possibly_foolish_untaint($user);
|
return IkiWiki::possibly_foolish_untaint($user);
|
||||||
}
|
}
|
||||||
elsif (defined $ipaddr) {
|
elsif (defined $ipaddr) {
|
||||||
return "Anonymous from ".possibly_foolish_untaint($ipaddr);
|
return "Anonymous from ".IkiWiki::possibly_foolish_untaint($ipaddr);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return "Anonymous";
|
return "Anonymous";
|
||||||
|
@ -116,7 +130,7 @@ sub rcs_commit ($$$;$$) { #{{{
|
||||||
|
|
||||||
$user = bzr_author($user, $ipaddr);
|
$user = bzr_author($user, $ipaddr);
|
||||||
|
|
||||||
$message = possibly_foolish_untaint($message);
|
$message = IkiWiki::possibly_foolish_untaint($message);
|
||||||
if (! length $message) {
|
if (! length $message) {
|
||||||
$message = "no message given";
|
$message = "no message given";
|
||||||
}
|
}
|
||||||
|
@ -137,7 +151,7 @@ sub rcs_commit_staged ($$$) {
|
||||||
|
|
||||||
$user = bzr_author($user, $ipaddr);
|
$user = bzr_author($user, $ipaddr);
|
||||||
|
|
||||||
$message = possibly_foolish_untaint($message);
|
$message = IkiWiki::possibly_foolish_untaint($message);
|
||||||
if (! length $message) {
|
if (! length $message) {
|
||||||
$message = "no message given";
|
$message = "no message given";
|
||||||
}
|
}
|
||||||
|
@ -172,7 +186,7 @@ sub rcs_remove ($) { # {{{
|
||||||
sub rcs_rename ($$) { # {{{
|
sub rcs_rename ($$) { # {{{
|
||||||
my ($src, $dest) = @_;
|
my ($src, $dest) = @_;
|
||||||
|
|
||||||
my $parent = dirname($dest);
|
my $parent = IkiWiki::dirname($dest);
|
||||||
if (system("bzr", "add", "--quiet", "$config{srcdir}/$parent") != 0) {
|
if (system("bzr", "add", "--quiet", "$config{srcdir}/$parent") != 0) {
|
||||||
warn("bzr add $parent failed\n");
|
warn("bzr add $parent failed\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
package IkiWiki::Plugin::git;
|
||||||
package IkiWiki;
|
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
|
@ -11,7 +10,22 @@ use open qw{:utf8 :std};
|
||||||
my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate Git sha1sums
|
my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate Git sha1sums
|
||||||
my $dummy_commit_msg = 'dummy commit'; # message to skip in recent changes
|
my $dummy_commit_msg = 'dummy commit'; # message to skip in recent changes
|
||||||
|
|
||||||
hook(type => "checkconfig", id => "git", call => sub { #{{{
|
sub import { #{{{
|
||||||
|
hook(type => "checkconfig", id => "git", call => \&checkconfig);
|
||||||
|
hook(type => "getsetup", id => "git", call => \&getsetup);
|
||||||
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit_staged", call => \&rcs_commit_staged);
|
||||||
|
hook(type => "rcs", id => "rcs_add", call => \&rcs_add);
|
||||||
|
hook(type => "rcs", id => "rcs_remove", call => \&rcs_remove);
|
||||||
|
hook(type => "rcs", id => "rcs_rename", call => \&rcs_rename);
|
||||||
|
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
|
||||||
|
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
||||||
|
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub checkconfig () { #{{{
|
||||||
if (! defined $config{diffurl}) {
|
if (! defined $config{diffurl}) {
|
||||||
$config{diffurl}="";
|
$config{diffurl}="";
|
||||||
}
|
}
|
||||||
|
@ -21,15 +35,15 @@ hook(type => "checkconfig", id => "git", call => sub { #{{{
|
||||||
if (! defined $config{gitmaster_branch}) {
|
if (! defined $config{gitmaster_branch}) {
|
||||||
$config{gitmaster_branch}="master";
|
$config{gitmaster_branch}="master";
|
||||||
}
|
}
|
||||||
if (length $config{git_wrapper}) {
|
if (defined $config{git_wrapper} && length $config{git_wrapper}) {
|
||||||
push @{$config{wrappers}}, {
|
push @{$config{wrappers}}, {
|
||||||
wrapper => $config{git_wrapper},
|
wrapper => $config{git_wrapper},
|
||||||
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
|
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
hook(type => "getsetup", id => "git", call => sub { #{{{
|
sub getsetup () { #{{{
|
||||||
return
|
return
|
||||||
git_wrapper => {
|
git_wrapper => {
|
||||||
type => "string",
|
type => "string",
|
||||||
|
@ -73,9 +87,9 @@ hook(type => "getsetup", id => "git", call => sub { #{{{
|
||||||
safe => 0, # paranoia
|
safe => 0, # paranoia
|
||||||
rebuild => 0,
|
rebuild => 0,
|
||||||
},
|
},
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
sub _safe_git (&@) { #{{{
|
sub safe_git (&@) { #{{{
|
||||||
# Start a child process safely without resorting /bin/sh.
|
# Start a child process safely without resorting /bin/sh.
|
||||||
# Return command output or success state (in scalar context).
|
# Return command output or success state (in scalar context).
|
||||||
|
|
||||||
|
@ -107,12 +121,12 @@ sub _safe_git (&@) { #{{{
|
||||||
return wantarray ? @lines : ($? == 0);
|
return wantarray ? @lines : ($? == 0);
|
||||||
}
|
}
|
||||||
# Convenient wrappers.
|
# Convenient wrappers.
|
||||||
sub run_or_die ($@) { _safe_git(\&error, @_) }
|
sub run_or_die ($@) { safe_git(\&error, @_) }
|
||||||
sub run_or_cry ($@) { _safe_git(sub { warn @_ }, @_) }
|
sub run_or_cry ($@) { safe_git(sub { warn @_ }, @_) }
|
||||||
sub run_or_non ($@) { _safe_git(undef, @_) }
|
sub run_or_non ($@) { safe_git(undef, @_) }
|
||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
sub _merge_past ($$$) { #{{{
|
sub merge_past ($$$) { #{{{
|
||||||
# Unlike with Subversion, Git cannot make a 'svn merge -rN:M file'.
|
# Unlike with Subversion, Git cannot make a 'svn merge -rN:M file'.
|
||||||
# Git merge commands work with the committed changes, except in the
|
# Git merge commands work with the committed changes, except in the
|
||||||
# implicit case of '-m' of git checkout(1). So we should invent a
|
# implicit case of '-m' of git checkout(1). So we should invent a
|
||||||
|
@ -206,7 +220,7 @@ sub _merge_past ($$$) { #{{{
|
||||||
return $conflict;
|
return $conflict;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub _parse_diff_tree ($@) { #{{{
|
sub parse_diff_tree ($@) { #{{{
|
||||||
# Parse the raw diff tree chunk and return the info hash.
|
# Parse the raw diff tree chunk and return the info hash.
|
||||||
# See git-diff-tree(1) for the syntax.
|
# See git-diff-tree(1) for the syntax.
|
||||||
|
|
||||||
|
@ -326,7 +340,7 @@ sub git_commit_info ($;$) { #{{{
|
||||||
my ($prefix) = run_or_die('git', 'rev-parse', '--show-prefix');
|
my ($prefix) = run_or_die('git', 'rev-parse', '--show-prefix');
|
||||||
|
|
||||||
my @ci;
|
my @ci;
|
||||||
while (my $parsed = _parse_diff_tree(($prefix or ""), \@raw_lines)) {
|
while (my $parsed = parse_diff_tree(($prefix or ""), \@raw_lines)) {
|
||||||
push @ci, $parsed;
|
push @ci, $parsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,7 +393,7 @@ sub rcs_commit ($$$;$$) { #{{{
|
||||||
my ($prev) = $rcstoken =~ /^($sha1_pattern)$/; # untaint
|
my ($prev) = $rcstoken =~ /^($sha1_pattern)$/; # untaint
|
||||||
|
|
||||||
if (defined $cur && defined $prev && $cur ne $prev) {
|
if (defined $cur && defined $prev && $cur ne $prev) {
|
||||||
my $conflict = _merge_past($prev, $file, $dummy_commit_msg);
|
my $conflict = merge_past($prev, $file, $dummy_commit_msg);
|
||||||
return $conflict if defined $conflict;
|
return $conflict if defined $conflict;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,7 +416,7 @@ sub rcs_commit_staged ($$$) {
|
||||||
|
|
||||||
# git commit returns non-zero if file has not been really changed.
|
# git commit returns non-zero if file has not been really changed.
|
||||||
# so we should ignore its exit status (hence run_or_non).
|
# so we should ignore its exit status (hence run_or_non).
|
||||||
$message = possibly_foolish_untaint($message);
|
$message = IkiWiki::possibly_foolish_untaint($message);
|
||||||
if (run_or_non('git', 'commit', '--cleanup=verbatim',
|
if (run_or_non('git', 'commit', '--cleanup=verbatim',
|
||||||
'-q', '-m', $message)) {
|
'-q', '-m', $message)) {
|
||||||
if (length $config{gitorigin_branch}) {
|
if (length $config{gitorigin_branch}) {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
package IkiWiki::Plugin::mercurial;
|
||||||
package IkiWiki;
|
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
|
@ -8,19 +7,34 @@ use IkiWiki;
|
||||||
use Encode;
|
use Encode;
|
||||||
use open qw{:utf8 :std};
|
use open qw{:utf8 :std};
|
||||||
|
|
||||||
hook(type => "checkconfig", id => "mercurial", call => sub { #{{{
|
sub import { #{{{
|
||||||
|
hook(type => "checkconfig", id => "mercurial", call => \&checkconfig);
|
||||||
|
hook(type => "getsetup", id => "mercurial", call => \&getsetup);
|
||||||
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit_staged", call => \&rcs_commit_staged);
|
||||||
|
hook(type => "rcs", id => "rcs_add", call => \&rcs_add);
|
||||||
|
hook(type => "rcs", id => "rcs_remove", call => \&rcs_remove);
|
||||||
|
hook(type => "rcs", id => "rcs_rename", call => \&rcs_rename);
|
||||||
|
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
|
||||||
|
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
||||||
|
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub checkconfig () { #{{{
|
||||||
if (! defined $config{diffurl}) {
|
if (! defined $config{diffurl}) {
|
||||||
$config{diffurl}="";
|
$config{diffurl}="";
|
||||||
}
|
}
|
||||||
if (length $config{mercurial_wrapper}) {
|
if (exists $config{mercurial_wrapper} && length $config{mercurial_wrapper}) {
|
||||||
push @{$config{wrappers}}, {
|
push @{$config{wrappers}}, {
|
||||||
wrapper => $config{mercurial_wrapper},
|
wrapper => $config{mercurial_wrapper},
|
||||||
wrappermode => (defined $config{mercurial_wrappermode} ? $config{mercurial_wrappermode} : "06755"),
|
wrappermode => (defined $config{mercurial_wrappermode} ? $config{mercurial_wrappermode} : "06755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
hook(type => "getsetup", id => "mercurial", call => sub { #{{{
|
sub getsetup () { #{{{
|
||||||
return
|
return
|
||||||
mercurial_wrapper => {
|
mercurial_wrapper => {
|
||||||
type => "string",
|
type => "string",
|
||||||
|
@ -50,7 +64,7 @@ hook(type => "getsetup", id => "mercurial", call => sub { #{{{
|
||||||
safe => 1,
|
safe => 1,
|
||||||
rebuild => 1,
|
rebuild => 1,
|
||||||
},
|
},
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
sub mercurial_log ($) { #{{{
|
sub mercurial_log ($) { #{{{
|
||||||
my $out = shift;
|
my $out = shift;
|
||||||
|
@ -113,16 +127,16 @@ sub rcs_commit ($$$;$$) { #{{{
|
||||||
my ($file, $message, $rcstoken, $user, $ipaddr) = @_;
|
my ($file, $message, $rcstoken, $user, $ipaddr) = @_;
|
||||||
|
|
||||||
if (defined $user) {
|
if (defined $user) {
|
||||||
$user = possibly_foolish_untaint($user);
|
$user = IkiWiki::possibly_foolish_untaint($user);
|
||||||
}
|
}
|
||||||
elsif (defined $ipaddr) {
|
elsif (defined $ipaddr) {
|
||||||
$user = "Anonymous from ".possibly_foolish_untaint($ipaddr);
|
$user = "Anonymous from ".IkiWiki::possibly_foolish_untaint($ipaddr);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$user = "Anonymous";
|
$user = "Anonymous";
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = possibly_foolish_untaint($message);
|
$message = IkiWiki::possibly_foolish_untaint($message);
|
||||||
if (! length $message) {
|
if (! length $message) {
|
||||||
$message = "no message given";
|
$message = "no message given";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
package IkiWiki::Plugin::monotone;
|
||||||
package IkiWiki;
|
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
|
@ -11,7 +10,22 @@ use Date::Format qw(time2str);
|
||||||
|
|
||||||
my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate sha1sums
|
my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate sha1sums
|
||||||
|
|
||||||
hook(type => "checkconfig", id => "monotone", call => sub { #{{{
|
sub import { #{{{
|
||||||
|
hook(type => "checkconfig", id => "monotone", call => \&checkconfig);
|
||||||
|
hook(type => "getsetup", id => "monotone", call => \&getsetup);
|
||||||
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit_staged", call => \&rcs_commit_staged);
|
||||||
|
hook(type => "rcs", id => "rcs_add", call => \&rcs_add);
|
||||||
|
hook(type => "rcs", id => "rcs_remove", call => \&rcs_remove);
|
||||||
|
hook(type => "rcs", id => "rcs_rename", call => \&rcs_rename);
|
||||||
|
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
|
||||||
|
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
||||||
|
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub checkconfig () { #{{{
|
||||||
if (!defined($config{mtnrootdir})) {
|
if (!defined($config{mtnrootdir})) {
|
||||||
$config{mtnrootdir} = $config{srcdir};
|
$config{mtnrootdir} = $config{srcdir};
|
||||||
}
|
}
|
||||||
|
@ -47,9 +61,9 @@ hook(type => "checkconfig", id => "monotone", call => sub { #{{{
|
||||||
wrappermode => (defined $config{mtn_wrappermode} ? $config{mtn_wrappermode} : "06755"),
|
wrappermode => (defined $config{mtn_wrappermode} ? $config{mtn_wrappermode} : "06755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
hook(type => "getsetup", id => "monotone", call => sub { #{{{
|
sub getsetup () { #{{{
|
||||||
return
|
return
|
||||||
mtn_wrapper => {
|
mtn_wrapper => {
|
||||||
type => "string",
|
type => "string",
|
||||||
|
@ -99,7 +113,7 @@ hook(type => "getsetup", id => "monotone", call => sub { #{{{
|
||||||
safe => 0, # path
|
safe => 0, # path
|
||||||
rebuild => 0,
|
rebuild => 0,
|
||||||
},
|
},
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
sub get_rev () { #{{{
|
sub get_rev () { #{{{
|
||||||
my $sha1 = `mtn --root=$config{mtnrootdir} automate get_base_revision_id`;
|
my $sha1 = `mtn --root=$config{mtnrootdir} automate get_base_revision_id`;
|
||||||
|
@ -156,7 +170,7 @@ sub mtn_merge ($$$$) { #{{{
|
||||||
return $mergeRev;
|
return $mergeRev;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub commit_file_to_new_rev($$$$$$$$) { #{{{
|
sub commit_file_to_new_rev ($$$$$$$$) { #{{{
|
||||||
my $automator=shift;
|
my $automator=shift;
|
||||||
my $wsfilename=shift;
|
my $wsfilename=shift;
|
||||||
my $oldFileID=shift;
|
my $oldFileID=shift;
|
||||||
|
@ -398,7 +412,7 @@ sub rcs_commit ($$$;$$) { #{{{
|
||||||
|
|
||||||
if (system("mtn", "--root=$config{mtnrootdir}", "commit", "--quiet",
|
if (system("mtn", "--root=$config{mtnrootdir}", "commit", "--quiet",
|
||||||
"--author", $author, "--key", $config{mtnkey}, "-m",
|
"--author", $author, "--key", $config{mtnkey}, "-m",
|
||||||
possibly_foolish_untaint($message), $file) != 0) {
|
IkiWiki::possibly_foolish_untaint($message), $file) != 0) {
|
||||||
debug("Traditional commit failed! Returning data as conflict.");
|
debug("Traditional commit failed! Returning data as conflict.");
|
||||||
my $conflict=readfile("$config{srcdir}/$file");
|
my $conflict=readfile("$config{srcdir}/$file");
|
||||||
if (system("mtn", "--root=$config{mtnrootdir}", "revert",
|
if (system("mtn", "--root=$config{mtnrootdir}", "revert",
|
||||||
|
@ -443,7 +457,7 @@ sub rcs_commit_staged ($$$) {
|
||||||
|
|
||||||
if (system("mtn", "--root=$config{mtnrootdir}", "commit", "--quiet",
|
if (system("mtn", "--root=$config{mtnrootdir}", "commit", "--quiet",
|
||||||
"--author", $author, "--key", $config{mtnkey}, "-m",
|
"--author", $author, "--key", $config{mtnkey}, "-m",
|
||||||
possibly_foolish_untaint($message)) != 0) {
|
IkiWiki::possibly_foolish_untaint($message)) != 0) {
|
||||||
error("Monotone commit failed");
|
error("Monotone commit failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,99 +1,58 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
# Stubs for no revision control.
|
# Stubs for no revision control.
|
||||||
|
package IkiWiki::Plugin::norcs;
|
||||||
package IkiWiki;
|
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use IkiWiki;
|
use IkiWiki;
|
||||||
|
|
||||||
sub rcs_update () {
|
sub import { #{{{
|
||||||
# Update working directory to current version.
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
# (May be more complex for distributed RCS.)
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
}
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit_staged", call => \&rcs_commit_staged);
|
||||||
|
hook(type => "rcs", id => "rcs_add", call => \&rcs_add);
|
||||||
|
hook(type => "rcs", id => "rcs_remove", call => \&rcs_remove);
|
||||||
|
hook(type => "rcs", id => "rcs_rename", call => \&rcs_rename);
|
||||||
|
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
|
||||||
|
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
||||||
|
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
sub rcs_prepedit ($) {
|
sub rcs_update () { #{{{
|
||||||
# Prepares to edit a file under revision control. Returns a token
|
} #}}}
|
||||||
# that must be passed into rcs_commit when the file is ready
|
|
||||||
# for committing.
|
sub rcs_prepedit ($) { #{{{
|
||||||
# The file is relative to the srcdir.
|
|
||||||
return ""
|
return ""
|
||||||
}
|
} #}}}
|
||||||
|
|
||||||
sub rcs_commit ($$$;$$) {
|
sub rcs_commit ($$$;$$) { #{{{
|
||||||
# Tries to commit the page; returns undef on _success_ and
|
|
||||||
# a version of the page with the rcs's conflict markers on failure.
|
|
||||||
# The file is relative to the srcdir.
|
|
||||||
my ($file, $message, $rcstoken, $user, $ipaddr) = @_;
|
my ($file, $message, $rcstoken, $user, $ipaddr) = @_;
|
||||||
return undef # success
|
return undef # success
|
||||||
}
|
} #}}}
|
||||||
|
|
||||||
sub rcs_commit_staged ($$$) {
|
sub rcs_commit_staged ($$$) { #{{{
|
||||||
# Commits all staged changes. Changes can be staged using rcs_add,
|
|
||||||
# rcs_remove, and rcs_rename.
|
|
||||||
my ($message, $user, $ipaddr)=@_;
|
my ($message, $user, $ipaddr)=@_;
|
||||||
return undef # success
|
return undef # success
|
||||||
}
|
} #}}}
|
||||||
|
|
||||||
sub rcs_add ($) {
|
sub rcs_add ($) { #{{{
|
||||||
# Add a file. The filename is relative to the root of the srcdir.
|
} #}}}
|
||||||
# Note that this should not check the new file in, it should only
|
|
||||||
# prepare for it to be checked in when rcs_commit is called.
|
|
||||||
# Note that the file may be in a new subdir that is not yet added
|
|
||||||
# to version control; the subdir can be added if so.
|
|
||||||
}
|
|
||||||
|
|
||||||
sub rcs_remove ($) {
|
sub rcs_remove ($) { #{{{
|
||||||
# Remove a file. The filename is relative to the root of the srcdir.
|
} #}}}
|
||||||
# Note that this should not check the removal in, it should only
|
|
||||||
# prepare for it to be checked in when rcs_commit is called.
|
|
||||||
# Note that the new file may be in a new subdir that is not yet added
|
|
||||||
# to version control; the subdir can be added if so.
|
|
||||||
}
|
|
||||||
|
|
||||||
sub rcs_rename ($$) {
|
sub rcs_rename ($$) { #{{{
|
||||||
# Rename a file. The filenames are relative to the root of the srcdir.
|
} #}}}
|
||||||
# Note that this should not commit the rename, it should only
|
|
||||||
# prepare it for when rcs_commit is called.
|
|
||||||
# The new filename may be in a new subdir, that is not yet added to
|
|
||||||
# version control. If so, the subdir will exist already, and should
|
|
||||||
# be added to revision control.
|
|
||||||
}
|
|
||||||
|
|
||||||
sub rcs_recentchanges ($) {
|
sub rcs_recentchanges ($) { #{{{
|
||||||
# Examine the RCS history and generate a list of recent changes.
|
} #}}}
|
||||||
# The data structure returned for each change is:
|
|
||||||
# {
|
|
||||||
# rev => # the RCSs id for this commit
|
|
||||||
# user => # name of user who made the change,
|
|
||||||
# committype => # either "web" or the name of the rcs,
|
|
||||||
# when => # time when the change was made,
|
|
||||||
# message => [
|
|
||||||
# { line => "commit message line" },
|
|
||||||
# { line => "commit message line" },
|
|
||||||
# # etc,
|
|
||||||
# ],
|
|
||||||
# pages => [
|
|
||||||
# {
|
|
||||||
# page => # name of page changed,
|
|
||||||
# diffurl => # optional url to a diff showing
|
|
||||||
# # the changes,
|
|
||||||
# },
|
|
||||||
# # repeat for each page changed in this commit,
|
|
||||||
# ],
|
|
||||||
# }
|
|
||||||
}
|
|
||||||
|
|
||||||
sub rcs_diff ($) {
|
sub rcs_diff ($) { #{{{
|
||||||
# Optional, used to get diffs for recentchanges.
|
} #}}}
|
||||||
# The parameter is the rev from rcs_recentchanges.
|
|
||||||
# Should return a list of lines of the diff (including \n) in list
|
|
||||||
# context, and the whole diff in scalar context.
|
|
||||||
}
|
|
||||||
|
|
||||||
sub rcs_getctime ($) {
|
sub rcs_getctime ($) { #{{{
|
||||||
# Optional, used to get the page creation time from the RCS.
|
|
||||||
error gettext("getctime not implemented");
|
error gettext("getctime not implemented");
|
||||||
}
|
} #}}}
|
||||||
|
|
||||||
1
|
1
|
||||||
|
|
|
@ -1,13 +1,27 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
package IkiWiki::Plugin::svn;
|
||||||
package IkiWiki;
|
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use IkiWiki;
|
use IkiWiki;
|
||||||
use POSIX qw(setlocale LC_CTYPE);
|
use POSIX qw(setlocale LC_CTYPE);
|
||||||
|
|
||||||
hook(type => "checkconfig", id => "svn", call => sub { #{{{
|
sub import { #{{{
|
||||||
|
hook(type => "checkconfig", id => "svn", call => \&checkconfig);
|
||||||
|
hook(type => "getsetup", id => "svn", call => \&getsetup);
|
||||||
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit_staged", call => \&rcs_commit_staged);
|
||||||
|
hook(type => "rcs", id => "rcs_add", call => \&rcs_add);
|
||||||
|
hook(type => "rcs", id => "rcs_remove", call => \&rcs_remove);
|
||||||
|
hook(type => "rcs", id => "rcs_rename", call => \&rcs_rename);
|
||||||
|
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
|
||||||
|
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
||||||
|
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub checkconfig () { #{{{
|
||||||
if (! defined $config{diffurl}) {
|
if (! defined $config{diffurl}) {
|
||||||
$config{diffurl}="";
|
$config{diffurl}="";
|
||||||
}
|
}
|
||||||
|
@ -20,15 +34,15 @@ hook(type => "checkconfig", id => "svn", call => sub { #{{{
|
||||||
$config{svnpath}=~s/\/$//;
|
$config{svnpath}=~s/\/$//;
|
||||||
$config{svnpath}=~s/^\///;
|
$config{svnpath}=~s/^\///;
|
||||||
}
|
}
|
||||||
if (length $config{svn_wrapper}) {
|
if (defined $config{svn_wrapper} && length $config{svn_wrapper}) {
|
||||||
push @{$config{wrappers}}, {
|
push @{$config{wrappers}}, {
|
||||||
wrapper => $config{svn_wrapper},
|
wrapper => $config{svn_wrapper},
|
||||||
wrappermode => (defined $config{svn_wrappermode} ? $config{svn_wrappermode} : "04755"),
|
wrappermode => (defined $config{svn_wrappermode} ? $config{svn_wrappermode} : "04755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
hook(type => "getsetup", id => "svn", call => sub { #{{{
|
sub getsetup () { #{{{
|
||||||
return
|
return
|
||||||
svnrepo => {
|
svnrepo => {
|
||||||
type => "string",
|
type => "string",
|
||||||
|
@ -72,7 +86,7 @@ hook(type => "getsetup", id => "svn", call => sub { #{{{
|
||||||
safe => 1,
|
safe => 1,
|
||||||
rebuild => 1,
|
rebuild => 1,
|
||||||
},
|
},
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
# svn needs LC_CTYPE set to a UTF-8 locale, so try to find one. Any will do.
|
# svn needs LC_CTYPE set to a UTF-8 locale, so try to find one. Any will do.
|
||||||
sub find_lc_ctype() {
|
sub find_lc_ctype() {
|
||||||
|
@ -160,7 +174,7 @@ sub rcs_commit ($$$;$$) { #{{{
|
||||||
|
|
||||||
if (system("svn", "commit", "--quiet",
|
if (system("svn", "commit", "--quiet",
|
||||||
"--encoding", "UTF-8", "-m",
|
"--encoding", "UTF-8", "-m",
|
||||||
possibly_foolish_untaint($message),
|
IkiWiki::possibly_foolish_untaint($message),
|
||||||
$config{srcdir}) != 0) {
|
$config{srcdir}) != 0) {
|
||||||
my $conflict=readfile("$config{srcdir}/$file");
|
my $conflict=readfile("$config{srcdir}/$file");
|
||||||
if (system("svn", "revert", "--quiet", "$config{srcdir}/$file") != 0) {
|
if (system("svn", "revert", "--quiet", "$config{srcdir}/$file") != 0) {
|
||||||
|
@ -186,7 +200,7 @@ sub rcs_commit_staged ($$$) {
|
||||||
|
|
||||||
if (system("svn", "commit", "--quiet",
|
if (system("svn", "commit", "--quiet",
|
||||||
"--encoding", "UTF-8", "-m",
|
"--encoding", "UTF-8", "-m",
|
||||||
possibly_foolish_untaint($message),
|
IkiWiki::possibly_foolish_untaint($message),
|
||||||
$config{srcdir}) != 0) {
|
$config{srcdir}) != 0) {
|
||||||
warn("svn commit failed\n");
|
warn("svn commit failed\n");
|
||||||
return 1; # failure
|
return 1; # failure
|
||||||
|
@ -199,10 +213,10 @@ sub rcs_add ($) { #{{{
|
||||||
my $file=shift;
|
my $file=shift;
|
||||||
|
|
||||||
if (-d "$config{srcdir}/.svn") {
|
if (-d "$config{srcdir}/.svn") {
|
||||||
my $parent=dirname($file);
|
my $parent=IkiWiki::dirname($file);
|
||||||
while (! -d "$config{srcdir}/$parent/.svn") {
|
while (! -d "$config{srcdir}/$parent/.svn") {
|
||||||
$file=$parent;
|
$file=$parent;
|
||||||
$parent=dirname($file);
|
$parent=IkiWiki::dirname($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (system("svn", "add", "--quiet", "$config{srcdir}/$file") != 0) {
|
if (system("svn", "add", "--quiet", "$config{srcdir}/$file") != 0) {
|
||||||
|
@ -329,7 +343,7 @@ sub rcs_recentchanges ($) { #{{{
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub rcs_diff ($) { #{{{
|
sub rcs_diff ($) { #{{{
|
||||||
my $rev=possibly_foolish_untaint(int(shift));
|
my $rev=IkiWiki::possibly_foolish_untaint(int(shift));
|
||||||
return `svnlook diff $config{svnrepo} -r$rev --no-diff-deleted`;
|
return `svnlook diff $config{svnrepo} -r$rev --no-diff-deleted`;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,38 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
package IkiWiki::Plugin::tla;
|
||||||
package IkiWiki;
|
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use IkiWiki;
|
use IkiWiki;
|
||||||
|
|
||||||
hook(type => "checkconfig", id => "tla", call => sub { #{{{
|
sub import { #{{{
|
||||||
|
hook(type => "checkconfig", id => "tla", call => \&checkconfig);
|
||||||
|
hook(type => "getsetup", id => "tla", call => \&getsetup);
|
||||||
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
hook(type => "rcs", id => "rcs_commit_staged", call => \&rcs_commit_staged);
|
||||||
|
hook(type => "rcs", id => "rcs_add", call => \&rcs_add);
|
||||||
|
hook(type => "rcs", id => "rcs_remove", call => \&rcs_remove);
|
||||||
|
hook(type => "rcs", id => "rcs_rename", call => \&rcs_rename);
|
||||||
|
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
|
||||||
|
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
||||||
|
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub checkconfig () { #{{{
|
||||||
if (! defined $config{diffurl}) {
|
if (! defined $config{diffurl}) {
|
||||||
$config{diffurl}="";
|
$config{diffurl}="";
|
||||||
}
|
}
|
||||||
if (length $config{tla_wrapper}) {
|
if (defined $config{tla_wrapper} && length $config{tla_wrapper}) {
|
||||||
push @{$config{wrappers}}, {
|
push @{$config{wrappers}}, {
|
||||||
wrapper => $config{tla_wrapper},
|
wrapper => $config{tla_wrapper},
|
||||||
wrappermode => (defined $config{tla_wrappermode} ? $config{tla_wrappermode} : "06755"),
|
wrappermode => (defined $config{tla_wrappermode} ? $config{tla_wrappermode} : "06755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
hook(type => "getsetup", id => "tla", call => sub { #{{{
|
sub getsetup () { #{{{
|
||||||
return
|
return
|
||||||
tla_wrapper => {
|
tla_wrapper => {
|
||||||
type => "string",
|
type => "string",
|
||||||
|
@ -48,9 +62,9 @@ hook(type => "getsetup", id => "tla", call => sub { #{{{
|
||||||
safe => 1,
|
safe => 1,
|
||||||
rebuild => 1,
|
rebuild => 1,
|
||||||
},
|
},
|
||||||
}); #}}}
|
} #}}}
|
||||||
|
|
||||||
sub quiet_system (@) {
|
sub quiet_system (@) { #{{{
|
||||||
# See Debian bug #385939.
|
# See Debian bug #385939.
|
||||||
open (SAVEOUT, ">&STDOUT");
|
open (SAVEOUT, ">&STDOUT");
|
||||||
close STDOUT;
|
close STDOUT;
|
||||||
|
@ -60,7 +74,7 @@ sub quiet_system (@) {
|
||||||
open (STDOUT, ">&SAVEOUT");
|
open (STDOUT, ">&SAVEOUT");
|
||||||
close SAVEOUT;
|
close SAVEOUT;
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
} #}}}
|
||||||
|
|
||||||
sub rcs_update () { #{{{
|
sub rcs_update () { #{{{
|
||||||
if (-d "$config{srcdir}/{arch}") {
|
if (-d "$config{srcdir}/{arch}") {
|
||||||
|
@ -110,7 +124,7 @@ sub rcs_commit ($$$;$$) { #{{{
|
||||||
}
|
}
|
||||||
|
|
||||||
if (quiet_system("tla", "commit",
|
if (quiet_system("tla", "commit",
|
||||||
"-L".possibly_foolish_untaint($message),
|
"-L".IkiWiki::possibly_foolish_untaint($message),
|
||||||
'-d', $config{srcdir}) != 0) {
|
'-d', $config{srcdir}) != 0) {
|
||||||
my $conflict=readfile("$config{srcdir}/$file");
|
my $conflict=readfile("$config{srcdir}/$file");
|
||||||
if (system("tla", "undo", "-n", "--quiet", "-d", "$config{srcdir}") != 0) {
|
if (system("tla", "undo", "-n", "--quiet", "-d", "$config{srcdir}") != 0) {
|
||||||
|
|
|
@ -3,8 +3,10 @@ ikiwiki (2.60) UNRELEASED; urgency=low
|
||||||
* Add getsetup hook, all plugins that add fields to %config should use it.
|
* Add getsetup hook, all plugins that add fields to %config should use it.
|
||||||
* ikiwiki --dumpsetup can generate a nice setup file snapshotting ikiwiki's
|
* ikiwiki --dumpsetup can generate a nice setup file snapshotting ikiwiki's
|
||||||
current configuration.
|
current configuration.
|
||||||
|
* Large amounts of internal config data reorg.
|
||||||
* The way wrappers are defined in the setup file has changed. Old setup
|
* The way wrappers are defined in the setup file has changed. Old setup
|
||||||
files will continue to work, for now.
|
files will continue to work, for now.
|
||||||
|
* Version control backends promoted to first-class plugins.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Mon, 21 Jul 2008 11:35:46 -0400
|
-- Joey Hess <joeyh@debian.org> Mon, 21 Jul 2008 11:35:46 -0400
|
||||||
|
|
||||||
|
|
|
@ -654,15 +654,107 @@ PageSpecs glob patterns, but instead only by a special `internal()`
|
||||||
|
|
||||||
### RCS plugins
|
### RCS plugins
|
||||||
|
|
||||||
ikiwiki's support for [[revision_control_systems|rcs]] also uses pluggable
|
ikiwiki's support for [[revision_control_systems|rcs]] is also done via
|
||||||
perl modules. These are in the `IkiWiki::RCS` namespace, for example
|
plugins. See [[RCS_details|rcs/details]] for some more info.
|
||||||
`IkiWiki::RCS::svn`.
|
|
||||||
|
|
||||||
Each RCS plugin must support all the `IkiWiki::rcs_*` functions.
|
RCS plugins must register a number of hooks. Each hook has type 'rcs',
|
||||||
See IkiWiki::RCS::Stub for the full list of functions. It's ok if
|
and the 'id' field is set to the name of the hook. For example:
|
||||||
`rcs_getctime` does nothing except for throwing an error.
|
|
||||||
|
|
||||||
See [[RCS_details|rcs/details]] for some more info.
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
|
|
||||||
|
#### `rcs_update()`
|
||||||
|
|
||||||
|
Updates the working directory with any remote changes.
|
||||||
|
|
||||||
|
#### `rcs_prepedit($)`
|
||||||
|
|
||||||
|
Is passed a file to prepare to edit. It can generate and return an arbitrary
|
||||||
|
token, that will be passed into `rcs_commit` when committing. For example,
|
||||||
|
it might return the current revision ID of the file, and use that
|
||||||
|
information later when merging changes.
|
||||||
|
|
||||||
|
#### `rcs_commit($$$;$$)`
|
||||||
|
|
||||||
|
Passed a file, message, token (from `rcs_prepedit`), user, and ip address.
|
||||||
|
Should try to commit the file. Returns `undef` on *success* and a version
|
||||||
|
of the page with the rcs's conflict markers on failure.
|
||||||
|
|
||||||
|
#### `rcs_commit_staged($$$)`
|
||||||
|
|
||||||
|
Passed a message, user, and ip address. Should commit all staged changes.
|
||||||
|
Returns undef on success, and an error message on failure.
|
||||||
|
|
||||||
|
Changes can be staged by calls to `rcs_add, `rcs_remove`, and
|
||||||
|
`rcs_rename`.
|
||||||
|
|
||||||
|
#### `rcs_add($)`
|
||||||
|
|
||||||
|
Adds the passed file to the archive. The filename is relative to the root
|
||||||
|
of the srcdir.
|
||||||
|
|
||||||
|
Note that this should not check the new file in, it should only
|
||||||
|
prepare for it to be checked in when rcs_commit (or `rcs_commit_staged`) is
|
||||||
|
called. Note that the file may be in a new subdir that is not yet in
|
||||||
|
to version control; the subdir can be added if so.
|
||||||
|
|
||||||
|
#### `rcs_remove($)`
|
||||||
|
|
||||||
|
Remove a file. The filename is relative to the root of the srcdir.
|
||||||
|
|
||||||
|
Note that this should not check the removal in, it should only prepare for it
|
||||||
|
to be checked in when `rcs_commit` (or `rcs_commit_staged`) is called. Note
|
||||||
|
that the new file may be in a new subdir that is not yet inversion
|
||||||
|
control; the subdir can be added if so.
|
||||||
|
|
||||||
|
#### `rcs_rename($$)`
|
||||||
|
|
||||||
|
Rename a file. The filenames are relative to the root of the srcdir.
|
||||||
|
|
||||||
|
Note that this should not commit the rename, it should only
|
||||||
|
prepare it for when `rcs_commit` (or `rcs_commit_staged`) is called.
|
||||||
|
The new filename may be in a new subdir, that is not yet added to
|
||||||
|
version control. If so, the subdir will exist already, and should
|
||||||
|
be added to revision control.
|
||||||
|
|
||||||
|
#### `rcs_recentchanges($)`
|
||||||
|
|
||||||
|
Examine the RCS history and generate a list of recent changes.
|
||||||
|
The parameter is how many changes to return.
|
||||||
|
|
||||||
|
The data structure returned for each change is:
|
||||||
|
|
||||||
|
{
|
||||||
|
rev => # the RCSs id for this commit
|
||||||
|
user => # name of user who made the change,
|
||||||
|
committype => # either "web" or the name of the rcs,
|
||||||
|
when => # time when the change was made,
|
||||||
|
message => [
|
||||||
|
{ line => "commit message line 1" },
|
||||||
|
{ line => "commit message line 2" },
|
||||||
|
# etc,
|
||||||
|
],
|
||||||
|
pages => [
|
||||||
|
{
|
||||||
|
page => # name of page changed,
|
||||||
|
diffurl => # optional url to a diff of changes
|
||||||
|
},
|
||||||
|
# repeat for each page changed in this commit,
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
#### `rcs_diff($)`
|
||||||
|
|
||||||
|
The parameter is the rev from `rcs_recentchanges`.
|
||||||
|
Should return a list of lines of the diff (including \n) in list
|
||||||
|
context, and the whole diff in scalar context.
|
||||||
|
|
||||||
|
#### `rcs_getctime($)`
|
||||||
|
|
||||||
|
This is used to get the page creation time for a file from the RCS, by looking
|
||||||
|
it up in the history.
|
||||||
|
|
||||||
|
It's ok if this is not implemented, and throws an error.
|
||||||
|
|
||||||
### PageSpec plugins
|
### PageSpec plugins
|
||||||
|
|
||||||
|
|
170
po/ikiwiki.pot
170
po/ikiwiki.pot
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2008-07-25 16:16-0400\n"
|
"POT-Creation-Date: 2008-07-26 22:24-0400\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -50,7 +50,7 @@ msgid "%s is not an editable page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/CGI.pm:437 ../IkiWiki/Plugin/brokenlinks.pm:24
|
#: ../IkiWiki/CGI.pm:437 ../IkiWiki/Plugin/brokenlinks.pm:24
|
||||||
#: ../IkiWiki/Plugin/inline.pm:261 ../IkiWiki/Plugin/opendiscussion.pm:17
|
#: ../IkiWiki/Plugin/inline.pm:306 ../IkiWiki/Plugin/opendiscussion.pm:17
|
||||||
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:78
|
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:78
|
||||||
#: ../IkiWiki/Render.pm:148
|
#: ../IkiWiki/Render.pm:148
|
||||||
msgid "discussion"
|
msgid "discussion"
|
||||||
|
@ -71,122 +71,122 @@ msgstr ""
|
||||||
msgid "You are banned."
|
msgid "You are banned."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/CGI.pm:758 ../IkiWiki/CGI.pm:759 ../IkiWiki.pm:788
|
#: ../IkiWiki/CGI.pm:758 ../IkiWiki/CGI.pm:759 ../IkiWiki.pm:1086
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:57
|
#: ../IkiWiki/Plugin/aggregate.pm:76
|
||||||
msgid "Aggregation triggered via web."
|
msgid "Aggregation triggered via web."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:66
|
#: ../IkiWiki/Plugin/aggregate.pm:85
|
||||||
msgid "Nothing to do right now, all feeds are up-to-date!"
|
msgid "Nothing to do right now, all feeds are up-to-date!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:193
|
#: ../IkiWiki/Plugin/aggregate.pm:212
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "missing %s parameter"
|
msgid "missing %s parameter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:227
|
#: ../IkiWiki/Plugin/aggregate.pm:246
|
||||||
msgid "new feed"
|
msgid "new feed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:241
|
#: ../IkiWiki/Plugin/aggregate.pm:260
|
||||||
msgid "posts"
|
msgid "posts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:243
|
#: ../IkiWiki/Plugin/aggregate.pm:262
|
||||||
msgid "new"
|
msgid "new"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:406
|
#: ../IkiWiki/Plugin/aggregate.pm:425
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "expiring %s (%s days old)"
|
msgid "expiring %s (%s days old)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:413
|
#: ../IkiWiki/Plugin/aggregate.pm:432
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "expiring %s"
|
msgid "expiring %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:440
|
#: ../IkiWiki/Plugin/aggregate.pm:459
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "processed ok at %s"
|
msgid "processed ok at %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:444
|
#: ../IkiWiki/Plugin/aggregate.pm:463
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "checking feed %s ..."
|
msgid "checking feed %s ..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:449
|
#: ../IkiWiki/Plugin/aggregate.pm:468
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "could not find feed at %s"
|
msgid "could not find feed at %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:464
|
#: ../IkiWiki/Plugin/aggregate.pm:483
|
||||||
msgid "feed not found"
|
msgid "feed not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:475
|
#: ../IkiWiki/Plugin/aggregate.pm:494
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "(invalid UTF-8 stripped from feed)"
|
msgid "(invalid UTF-8 stripped from feed)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:481
|
#: ../IkiWiki/Plugin/aggregate.pm:500
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "(feed entities escaped)"
|
msgid "(feed entities escaped)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:487
|
#: ../IkiWiki/Plugin/aggregate.pm:506
|
||||||
msgid "feed crashed XML::Feed!"
|
msgid "feed crashed XML::Feed!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/aggregate.pm:561
|
#: ../IkiWiki/Plugin/aggregate.pm:580
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "creating new page %s"
|
msgid "creating new page %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/amazon_s3.pm:30
|
#: ../IkiWiki/Plugin/amazon_s3.pm:31
|
||||||
msgid "deleting bucket.."
|
msgid "deleting bucket.."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/amazon_s3.pm:37 ../IkiWiki/Setup.pm:117
|
#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:188
|
||||||
msgid "done"
|
msgid "done"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/amazon_s3.pm:46
|
#: ../IkiWiki/Plugin/amazon_s3.pm:93
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "Must specify %s"
|
msgid "Must specify %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/amazon_s3.pm:85
|
#: ../IkiWiki/Plugin/amazon_s3.pm:132
|
||||||
msgid "Failed to create bucket in S3: "
|
msgid "Failed to create bucket in S3: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/amazon_s3.pm:170
|
#: ../IkiWiki/Plugin/amazon_s3.pm:217
|
||||||
msgid "Failed to save file to S3: "
|
msgid "Failed to save file to S3: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/amazon_s3.pm:192
|
#: ../IkiWiki/Plugin/amazon_s3.pm:239
|
||||||
msgid "Failed to delete file from S3: "
|
msgid "Failed to delete file from S3: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/attachment.pm:22
|
#: ../IkiWiki/Plugin/attachment.pm:34
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "there is already a page named %s"
|
msgid "there is already a page named %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/attachment.pm:41
|
#: ../IkiWiki/Plugin/attachment.pm:53
|
||||||
msgid "prohibited by allowed_attachments"
|
msgid "prohibited by allowed_attachments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/attachment.pm:144
|
#: ../IkiWiki/Plugin/attachment.pm:156
|
||||||
msgid "bad attachment filename"
|
msgid "bad attachment filename"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/attachment.pm:186
|
#: ../IkiWiki/Plugin/attachment.pm:198
|
||||||
msgid "attachment upload"
|
msgid "attachment upload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -262,33 +262,33 @@ msgstr ""
|
||||||
msgid "failed to determine size of image %s"
|
msgid "failed to determine size of image %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/inline.pm:47
|
#: ../IkiWiki/Plugin/inline.pm:89
|
||||||
msgid "Must specify url to wiki with --url when using --rss or --atom"
|
msgid "Must specify url to wiki with --url when using --rss or --atom"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/inline.pm:101
|
#: ../IkiWiki/Plugin/inline.pm:146
|
||||||
msgid "missing pages parameter"
|
msgid "missing pages parameter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/inline.pm:149
|
#: ../IkiWiki/Plugin/inline.pm:194
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "unknown sort type %s"
|
msgid "unknown sort type %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/inline.pm:220
|
#: ../IkiWiki/Plugin/inline.pm:265
|
||||||
msgid "Add a new post titled:"
|
msgid "Add a new post titled:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/inline.pm:236
|
#: ../IkiWiki/Plugin/inline.pm:281
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "nonexistant template %s"
|
msgid "nonexistant template %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/inline.pm:269 ../IkiWiki/Render.pm:82
|
#: ../IkiWiki/Plugin/inline.pm:314 ../IkiWiki/Render.pm:82
|
||||||
msgid "Discussion"
|
msgid "Discussion"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/inline.pm:506
|
#: ../IkiWiki/Plugin/inline.pm:551
|
||||||
msgid "RPC::XML::Client not found, not pinging"
|
msgid "RPC::XML::Client not found, not pinging"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -301,11 +301,11 @@ msgstr ""
|
||||||
msgid "%s is locked by %s and cannot be edited"
|
msgid "%s is locked by %s and cannot be edited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/mdwn.pm:28
|
#: ../IkiWiki/Plugin/mdwn.pm:40
|
||||||
msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed"
|
msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/mdwn.pm:51
|
#: ../IkiWiki/Plugin/mdwn.pm:63
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
|
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -322,11 +322,11 @@ msgstr ""
|
||||||
msgid "redir cycle is not allowed"
|
msgid "redir cycle is not allowed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/mirrorlist.pm:23
|
#: ../IkiWiki/Plugin/mirrorlist.pm:35
|
||||||
msgid "Mirrors"
|
msgid "Mirrors"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/mirrorlist.pm:23
|
#: ../IkiWiki/Plugin/mirrorlist.pm:35
|
||||||
msgid "Mirror"
|
msgid "Mirror"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -334,11 +334,15 @@ msgstr ""
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/openid.pm:45
|
#: ../IkiWiki/Plugin/norcs.pm:55
|
||||||
|
msgid "getctime not implemented"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../IkiWiki/Plugin/openid.pm:57
|
||||||
msgid "Log in with"
|
msgid "Log in with"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/openid.pm:48
|
#: ../IkiWiki/Plugin/openid.pm:60
|
||||||
msgid "Get an OpenID"
|
msgid "Get an OpenID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -350,31 +354,31 @@ msgstr ""
|
||||||
msgid "bad or missing template"
|
msgid "bad or missing template"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/passwordauth.pm:223
|
#: ../IkiWiki/Plugin/passwordauth.pm:243
|
||||||
msgid "Account creation successful. Now you can Login."
|
msgid "Account creation successful. Now you can Login."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/passwordauth.pm:226
|
#: ../IkiWiki/Plugin/passwordauth.pm:246
|
||||||
msgid "Error creating account."
|
msgid "Error creating account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/passwordauth.pm:233
|
#: ../IkiWiki/Plugin/passwordauth.pm:253
|
||||||
msgid "No email address, so cannot email password reset instructions."
|
msgid "No email address, so cannot email password reset instructions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/passwordauth.pm:265
|
#: ../IkiWiki/Plugin/passwordauth.pm:287
|
||||||
msgid "Failed to send mail"
|
msgid "Failed to send mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/passwordauth.pm:267
|
#: ../IkiWiki/Plugin/passwordauth.pm:289
|
||||||
msgid "You have been mailed password reset instructions."
|
msgid "You have been mailed password reset instructions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/passwordauth.pm:302
|
#: ../IkiWiki/Plugin/passwordauth.pm:324
|
||||||
msgid "incorrect password reset url"
|
msgid "incorrect password reset url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/passwordauth.pm:305
|
#: ../IkiWiki/Plugin/passwordauth.pm:327
|
||||||
msgid "password reset denied"
|
msgid "password reset denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -382,21 +386,21 @@ msgstr ""
|
||||||
msgid "Ping received."
|
msgid "Ping received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/pinger.pm:37
|
#: ../IkiWiki/Plugin/pinger.pm:49
|
||||||
msgid "requires 'from' and 'to' parameters"
|
msgid "requires 'from' and 'to' parameters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/pinger.pm:42
|
#: ../IkiWiki/Plugin/pinger.pm:54
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "Will ping %s"
|
msgid "Will ping %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/pinger.pm:45
|
#: ../IkiWiki/Plugin/pinger.pm:57
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "Ignoring ping directive for wiki %s (this wiki is %s)"
|
msgid "Ignoring ping directive for wiki %s (this wiki is %s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/pinger.pm:61
|
#: ../IkiWiki/Plugin/pinger.pm:73
|
||||||
msgid "LWP not found, not pinging"
|
msgid "LWP not found, not pinging"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -476,23 +480,23 @@ msgstr ""
|
||||||
msgid "%A night"
|
msgid "%A night"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/prettydate.pm:78
|
#: ../IkiWiki/Plugin/prettydate.pm:96
|
||||||
msgid "at teatime on %A"
|
msgid "at teatime on %A"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/prettydate.pm:82
|
#: ../IkiWiki/Plugin/prettydate.pm:100
|
||||||
msgid "at midnight"
|
msgid "at midnight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/prettydate.pm:85
|
#: ../IkiWiki/Plugin/prettydate.pm:103
|
||||||
msgid "at noon on %A"
|
msgid "at noon on %A"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/recentchanges.pm:76
|
#: ../IkiWiki/Plugin/recentchanges.pm:95
|
||||||
msgid "missing page"
|
msgid "missing page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/recentchanges.pm:78
|
#: ../IkiWiki/Plugin/recentchanges.pm:97
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "The page %s does not exist."
|
msgid "The page %s does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -576,17 +580,17 @@ msgstr ""
|
||||||
msgid "update for rename of %s to %s"
|
msgid "update for rename of %s to %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/search.pm:20
|
#: ../IkiWiki/Plugin/search.pm:32
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "Must specify %s when using the search plugin"
|
msgid "Must specify %s when using the search plugin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/search.pm:166
|
#: ../IkiWiki/Plugin/search.pm:178
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "need Digest::SHA1 to index %s"
|
msgid "need Digest::SHA1 to index %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Plugin/search.pm:201
|
#: ../IkiWiki/Plugin/search.pm:213
|
||||||
msgid "search"
|
msgid "search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -688,10 +692,6 @@ msgstr ""
|
||||||
msgid "failed to generate image from code"
|
msgid "failed to generate image from code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Rcs/Stub.pm:96
|
|
||||||
msgid "getctime not implemented"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297
|
#: ../IkiWiki/Render.pm:276 ../IkiWiki/Render.pm:297
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "skipping bad filename %s"
|
msgid "skipping bad filename %s"
|
||||||
|
@ -739,23 +739,11 @@ msgstr ""
|
||||||
|
|
||||||
#. translators: The first parameter is a filename, and the second
|
#. translators: The first parameter is a filename, and the second
|
||||||
#. translators: is a (probably not translated) error message.
|
#. translators: is a (probably not translated) error message.
|
||||||
#: ../IkiWiki/Setup.pm:25
|
#: ../IkiWiki/Setup.pm:23
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "cannot read %s: %s"
|
msgid "cannot read %s: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Setup.pm:58
|
|
||||||
msgid "generating wrappers.."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../IkiWiki/Setup.pm:107
|
|
||||||
msgid "rebuilding wiki.."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../IkiWiki/Setup.pm:110
|
|
||||||
msgid "refreshing wiki.."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../IkiWiki/Wrapper.pm:16
|
#: ../IkiWiki/Wrapper.pm:16
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "%s doesn't seem to be executable"
|
msgid "%s doesn't seem to be executable"
|
||||||
|
@ -792,23 +780,31 @@ msgstr ""
|
||||||
msgid "usage: ikiwiki [options] source dest"
|
msgid "usage: ikiwiki [options] source dest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../ikiwiki.in:82
|
#: ../ikiwiki.in:79
|
||||||
msgid "usage: --set var=value"
|
msgid "usage: --set var=value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki.pm:126
|
#: ../ikiwiki.in:118
|
||||||
|
msgid "generating wrappers.."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../ikiwiki.in:177
|
||||||
|
msgid "rebuilding wiki.."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../ikiwiki.in:180
|
||||||
|
msgid "refreshing wiki.."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../IkiWiki.pm:410
|
||||||
msgid "Must specify url to wiki with --url when using --cgi"
|
msgid "Must specify url to wiki with --url when using --cgi"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: The first parameter is a
|
#: ../IkiWiki.pm:1069
|
||||||
#. translators: preprocessor directive name,
|
|
||||||
#. translators: the second a page name, the
|
|
||||||
#. translators: third a number.
|
|
||||||
#: ../IkiWiki.pm:771
|
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "%s preprocessing loop detected on %s at depth %i"
|
msgid "preprocessing loop detected on %s at depth %i"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki.pm:1219
|
#: ../IkiWiki.pm:1557
|
||||||
msgid "yes"
|
msgid "yes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -6,7 +6,7 @@ use Test::More;
|
||||||
my @progs="ikiwiki.in";
|
my @progs="ikiwiki.in";
|
||||||
my @libs="IkiWiki.pm";
|
my @libs="IkiWiki.pm";
|
||||||
# monotone, external, amazon_s3 skipped since they need perl modules
|
# monotone, external, amazon_s3 skipped since they need perl modules
|
||||||
push @libs, map { chomp; $_ } `find IkiWiki -type f -name \\*.pm | grep -v IkiWiki/Rcs/monotone.pm | grep -v IkiWiki/Plugin/external.pm | grep -v IkiWiki/Plugin/amazon_s3.pm`;
|
push @libs, map { chomp; $_ } `find IkiWiki -type f -name \\*.pm | grep -v monotone.pm | grep -v external.pm | grep -v amazon_s3.pm`;
|
||||||
|
|
||||||
plan(tests => (@progs + @libs));
|
plan(tests => (@progs + @libs));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue