X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/38353384cf7ccb4cbc81e77f82875d8a959fbea7..d7fdd04b5a113b6dded40cb79b670b16570c11b3:/IkiWiki/Rcs/monotone.pm?ds=sidebyside diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index be6b36c66..0ae2c1a32 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -239,14 +239,11 @@ sub rcs_commit ($$$;$$) { #{{{ # Something has been committed, has this file changed? my ($out, $err); - #$automator->setOpts("-r", $oldrev, "-r", $rev); - #my ($out, $err) = $automator->call("content_diff", $file); - #debug("Problem committing $file") if ($err ne ""); - # FIXME: use of $file in these backticks is not wise from a - # security POV. Probably safe, but should be avoided - # anyway. - my $diff = `mtn --root=$config{mtnrootdir} au content_diff -r $oldrev -r $rev $file`; # was just $out; - + $automator->setOpts("r", $oldrev, "r", $rev); + ($out, $err) = $automator->call("content_diff", $file); + debug("Problem committing $file") if ($err ne ""); + my $diff = $out; + if ($diff) { # Commit a revision with just this file changed off # the old revision. @@ -314,8 +311,6 @@ sub rcs_commit ($$$;$$) { #{{{ "Please use the non-web interface to resolve the conflicts."); } - # suspend this revision because it has - # conflict markers... if (system("mtn", "--root=$config{mtnrootdir}", "update", "-r", $mergeResult) != 0) { debug("Unable to update to rev $mergeResult after conflict-enhanced merge on conflicted commit!"); @@ -363,7 +358,7 @@ sub rcs_add ($) { #{{{ check_config(); if (system("mtn", "--root=$config{mtnrootdir}", "add", "--quiet", - "$config{srcdir}/$file") != 0) { + $file) != 0) { error("Monotone add failed"); } } #}}} @@ -421,7 +416,7 @@ sub rcs_recentchanges ($) { #{{{ $committype = "monotone"; } } elsif ($cert->{name} eq "date") { - $when = time - str2time($cert->{value}, 'UTC'); + $when = str2time($cert->{value}, 'UTC'); } elsif ($cert->{name} eq "changelog") { my $messageText = $cert->{value}; # split the changelog into multiple @@ -457,54 +452,6 @@ sub rcs_recentchanges ($) { #{{{ return @ret; } #}}} -sub rcs_notify () { #{{{ - debug("The monotone rcs_notify function is currently untested. Use at own risk!"); - - if (! exists $ENV{REV}) { - error(gettext("REV is not set, not running from mtn post-commit hook, cannot send notifications")); - } - if ($ENV{REV} !~ m/($sha1_pattern)/) { # sha1 is untainted now - error(gettext("REV is not a valid revision identifier, cannot send notifications")); - } - my $rev = $1; - - check_config(); - - my $automator = Monotone->new(); - $automator->open(undef, $config{mtnrootdir}); - - my $certs = [read_certs($automator, $rev)]; - my $user; - my $message; - my $when; - - foreach my $cert (@$certs) { - if ($cert->{signature} eq "ok" && $cert->{trust} eq "trusted") { - if ($cert->{name} eq "author") { - $user = $cert->{value}; - } elsif ($cert->{name} eq "date") { - $when = $cert->{value}; - } elsif ($cert->{name} eq "changelog") { - $message = $cert->{value}; - } - } - } - - my @changed_pages = get_changed_files($automator, $rev); - - $automator->close(); - - require IkiWiki::UserInfo; - send_commit_mails( - sub { - return $message; - }, - sub { - `mtn --root=$config{mtnrootdir} au content_diff -r $rev`; - }, - $user, @changed_pages); -} #}}} - sub rcs_getctime ($) { #{{{ my $file=shift;