aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/bzr.pm28
-rwxr-xr-xt/bazaar.t5
2 files changed, 23 insertions, 10 deletions
diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index f79ca7c8f..3712302ce 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -286,14 +286,8 @@ sub rcs_diff ($) {
}
}
-sub rcs_getctime ($) {
- my ($file) = @_;
-
- # XXX filename passes through the shell here, should try to avoid
- # that just in case
- my @cmdline = ("bzr", "log", "--limit", '1', "$config{srcdir}/$file");
- open (my $out, "@cmdline |");
-
+sub extract_timestamp ($) {
+ my ($out) = @_;
my @log = bzr_log($out);
if (length @log < 1) {
@@ -307,8 +301,24 @@ sub rcs_getctime ($) {
return $ctime;
}
+sub rcs_getctime ($) {
+ my ($file) = @_;
+
+ # XXX filename passes through the shell here, should try to avoid
+ # that just in case
+ my @cmdline = ("bzr", "log", "--forward", "--limit", '1', "$config{srcdir}/$file");
+ open (my $out, "@cmdline |");
+ return extract_timestamp($out);
+}
+
sub rcs_getmtime ($) {
- error "rcs_getmtime is not implemented for bzr\n"; # TODO
+ my ($file) = @_;
+
+ # XXX filename passes through the shell here, should try to avoid
+ # that just in case
+ my @cmdline = ("bzr", "log", "--limit", '1', "$config{srcdir}/$file");
+ open (my $out, "@cmdline |");
+ return extract_timestamp($out);
}
1
diff --git a/t/bazaar.t b/t/bazaar.t
index 2ca44a65e..0bdd883d5 100755
--- a/t/bazaar.t
+++ b/t/bazaar.t
@@ -12,7 +12,7 @@ BEGIN {
}
}
}
-use Test::More tests => 16;
+use Test::More tests => 17;
BEGIN { use_ok("IkiWiki"); }
@@ -60,6 +60,9 @@ is($changes[1]{pages}[0]{"page"}, "test1");
my $ctime = IkiWiki::rcs_getctime("test2.mdwn");
ok($ctime >= time() - 20);
+my $mtime = IkiWiki::rcs_getmtime("test2.mdwn");
+ok($mtime >= time() - 20);
+
writefile('test3.mdwn', $config{srcdir}, $test1);
IkiWiki::rcs_add("test3.mdwn");
IkiWiki::rcs_rename("test3.mdwn", "test4.mdwn");