Support staging commands in bzr backend.
parent
1dec41278d
commit
7538d356c8
|
@ -53,18 +53,24 @@ sub rcs_prepedit ($) { #{{{
|
|||
return "";
|
||||
} #}}}
|
||||
|
||||
sub bzr_author ($$) { #{{{
|
||||
my ($user, $ipaddr) = @_;
|
||||
|
||||
if (defined $user) {
|
||||
return possibly_foolish_untaint($user);
|
||||
}
|
||||
elsif (defined $ipaddr) {
|
||||
return "Anonymous from ".possibly_foolish_untaint($ipaddr);
|
||||
}
|
||||
else {
|
||||
return "Anonymous";
|
||||
}
|
||||
} #}}}
|
||||
|
||||
sub rcs_commit ($$$;$$) { #{{{
|
||||
my ($file, $message, $rcstoken, $user, $ipaddr) = @_;
|
||||
|
||||
if (defined $user) {
|
||||
$user = possibly_foolish_untaint($user);
|
||||
}
|
||||
elsif (defined $ipaddr) {
|
||||
$user = "Anonymous from ".possibly_foolish_untaint($ipaddr);
|
||||
}
|
||||
else {
|
||||
$user = "Anonymous";
|
||||
}
|
||||
$user = bzr_author($user, $ipaddr);
|
||||
|
||||
$message = possibly_foolish_untaint($message);
|
||||
if (! length $message) {
|
||||
|
@ -84,9 +90,22 @@ sub rcs_commit_staged ($$$) {
|
|||
# Commits all staged changes. Changes can be staged using rcs_add,
|
||||
# rcs_remove, and rcs_rename.
|
||||
my ($message, $user, $ipaddr)=@_;
|
||||
|
||||
error("rcs_commit_staged not implemented for bzr"); # TODO
|
||||
}
|
||||
|
||||
$user = bzr_author($user, $ipaddr);
|
||||
|
||||
$message = possibly_foolish_untaint($message);
|
||||
if (! length $message) {
|
||||
$message = "no message given";
|
||||
}
|
||||
|
||||
my @cmdline = ("bzr", "commit", "--quiet", "-m", $message, "--author", $user,
|
||||
$config{srcdir});
|
||||
if (system(@cmdline) != 0) {
|
||||
warn "'@cmdline' failed: $!";
|
||||
}
|
||||
|
||||
return undef; # success
|
||||
} #}}}
|
||||
|
||||
sub rcs_add ($) { # {{{
|
||||
my ($file) = @_;
|
||||
|
@ -100,13 +119,19 @@ sub rcs_add ($) { # {{{
|
|||
sub rcs_remove ($) { # {{{
|
||||
my ($file) = @_;
|
||||
|
||||
error("rcs_remove not implemented for bzr"); # TODO
|
||||
my @cmdline = ("bzr", "rm", "--force", "--quiet", "$config{srcdir}/$file");
|
||||
if (system(@cmdline) != 0) {
|
||||
warn "'@cmdline' failed: $!";
|
||||
}
|
||||
} #}}}
|
||||
|
||||
sub rcs_rename ($$) { # {{{
|
||||
my ($src, $dest) = @_;
|
||||
|
||||
error("rcs_rename not implemented for bzr"); # TODO
|
||||
my @cmdline = ("bzr", "mv", "--quiet", "$config{srcdir}/$src", "$config{srcdir}/$dest");
|
||||
if (system(@cmdline) != 0) {
|
||||
warn "'@cmdline' failed: $!";
|
||||
}
|
||||
} #}}}
|
||||
|
||||
sub rcs_recentchanges ($) { #{{{
|
||||
|
|
17
t/bazaar.t
17
t/bazaar.t
|
@ -12,7 +12,7 @@ BEGIN {
|
|||
}
|
||||
}
|
||||
}
|
||||
use Test::More tests => 11;
|
||||
use Test::More tests => 13;
|
||||
|
||||
BEGIN { use_ok("IkiWiki"); }
|
||||
|
||||
|
@ -45,7 +45,7 @@ my $message = "Added the second page";
|
|||
my $test2 = readfile("t/test2.mdwn");
|
||||
writefile('test2.mdwn', $config{srcdir}, $test2);
|
||||
system "bzr add $config{srcdir}/test2.mdwn";
|
||||
system "bzr commit --author \"$user\" -m \"$message\" $config{srcdir}";
|
||||
system "bzr commit --quiet --author \"$user\" -m \"$message\" $config{srcdir}";
|
||||
|
||||
@changes = IkiWiki::rcs_recentchanges(3);
|
||||
|
||||
|
@ -59,4 +59,17 @@ is($changes[1]{pages}[0]{"page"}, "test1.mdwn");
|
|||
my $ctime = IkiWiki::rcs_getctime("test2.mdwn");
|
||||
ok($ctime >= time() - 20);
|
||||
|
||||
writefile('test3.mdwn', $config{srcdir}, $test1);
|
||||
IkiWiki::rcs_add("test3.mdwn");
|
||||
IkiWiki::rcs_rename("test3.mdwn", "test4.mdwn");
|
||||
IkiWiki::rcs_commit_staged("Added the 4th page", "moo", "Joe User");
|
||||
|
||||
@changes = IkiWiki::rcs_recentchanges(4);
|
||||
|
||||
is($#changes, 2);
|
||||
is($changes[0]{pages}[0]{"page"}, "test4.mdwn");
|
||||
|
||||
IkiWiki::rcs_remove("test4.mdwn");
|
||||
IkiWiki::rcs_commit_staged("Remove the 4th page", "moo", "Joe User");
|
||||
|
||||
system "rm -rf $dir";
|
||||
|
|
Loading…
Reference in New Issue