]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Rcs/mercurial.pm
Handle the case when HTML got tidied.
[git.ikiwiki.info.git] / IkiWiki / Rcs / mercurial.pm
index 84bf99c687d95cd0f956343b0bffeca1bacfd13a..8c3f03e07145a84f38e80f515b0918be26c9e382 100644 (file)
@@ -1,13 +1,13 @@
 #!/usr/bin/perl
 
 #!/usr/bin/perl
 
+package IkiWiki;
+
 use warnings;
 use strict;
 use IkiWiki;
 use Encode;
 use open qw{:utf8 :std};
 
 use warnings;
 use strict;
 use IkiWiki;
 use Encode;
 use open qw{:utf8 :std};
 
-package IkiWiki;
-
 sub mercurial_log($) {
        my $out = shift;
        my @infos;
 sub mercurial_log($) {
        my $out = shift;
        my @infos;
@@ -72,7 +72,7 @@ sub rcs_commit ($$$;$$) { #{{{
                $user = possibly_foolish_untaint($user);
        }
        elsif (defined $ipaddr) {
                $user = possibly_foolish_untaint($user);
        }
        elsif (defined $ipaddr) {
-               $user = "Anonymous from $ipaddr";
+               $user = "Anonymous from ".possibly_foolish_untaint($ipaddr);
        }
        else {
                $user = "Anonymous";
        }
        else {
                $user = "Anonymous";
@@ -92,22 +92,40 @@ sub rcs_commit ($$$;$$) { #{{{
        return undef; # success
 } #}}}
 
        return undef; # success
 } #}}}
 
+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 mercurial"); # TODO
+}
+
 sub rcs_add ($) { # {{{
        my ($file) = @_;
 
 sub rcs_add ($) { # {{{
        my ($file) = @_;
 
-       my @cmdline = ("hg", "-q", "-R", "$config{srcdir}", "add", "$file");
+       my @cmdline = ("hg", "-q", "-R", "$config{srcdir}", "add", "$config{srcdir}/$file");
        if (system(@cmdline) != 0) {
                warn "'@cmdline' failed: $!";
        }
 } #}}}
 
        if (system(@cmdline) != 0) {
                warn "'@cmdline' failed: $!";
        }
 } #}}}
 
+sub rcs_remove ($) { # {{{
+       my ($file) = @_;
+
+       error("rcs_remove not implemented for mercurial"); # TODO
+} #}}}
+
+sub rcs_rename ($$) { # {{{
+       my ($src, $dest) = @_;
+
+       error("rcs_rename not implemented for mercurial"); # TODO
+} #}}}
+
 sub rcs_recentchanges ($) { #{{{
        my ($num) = @_;
 
 sub rcs_recentchanges ($) { #{{{
        my ($num) = @_;
 
-       eval q{use CGI 'escapeHTML'};
-       error($@) if $@;
-
-       my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v", "-l", $num);
+       my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v", "-l", $num,
+               "--style", "default");
        open (my $out, "@cmdline |");
 
        eval q{use Date::Parse};
        open (my $out, "@cmdline |");
 
        eval q{use Date::Parse};
@@ -141,7 +159,7 @@ sub rcs_recentchanges ($) { #{{{
                        rev        => $info->{"changeset"},
                        user       => $user,
                        committype => "mercurial",
                        rev        => $info->{"changeset"},
                        user       => $user,
                        committype => "mercurial",
-                       when       => time - str2time($info->{"date"}),
+                       when       => str2time($info->{"date"}),
                        message    => [@message],
                        pages      => [@pages],
                };
                        message    => [@message],
                        pages      => [@pages],
                };
@@ -150,7 +168,7 @@ sub rcs_recentchanges ($) { #{{{
        return @ret;
 } #}}}
 
        return @ret;
 } #}}}
 
-sub rcs_notify () { #{{{
+sub rcs_diff ($) { #{{{
        # TODO
 } #}}}
 
        # TODO
 } #}}}
 
@@ -159,7 +177,8 @@ sub rcs_getctime ($) { #{{{
 
        # XXX filename passes through the shell here, should try to avoid
        # that just in case
 
        # XXX filename passes through the shell here, should try to avoid
        # that just in case
-       my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v", "-l", '1', $file);
+       my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v", "-l", '1', 
+               "--style", "default", "$config{srcdir}/$file");
        open (my $out, "@cmdline |");
 
        my @log = mercurial_log($out);
        open (my $out, "@cmdline |");
 
        my @log = mercurial_log($out);