Your message dated Thu, 07 Sep 2006 23:17:05 -0700
with message-id <[EMAIL PROTECTED]>
and subject line Bug#385936: fixed in ikiwiki 1.25
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: ikiwiki
Version: 1.21
Severity: wishlist

Attached is rudimentary tla support for ikiwiki.
#!/usr/bin/perl
# For Arch support.

use warnings;
use strict;
use IkiWiki;
use POSIX qw(setlocale LC_CTYPE);

package IkiWiki;

my $tla_webcommit=qr/^web commit (by (\w+)|from (\d+\.\d+\.\d+\.\d+)):?(.*)/;

sub rcs_update () { #{{{
    if (-d "$config{srcdir}/{arch}") {
	if (system("tla replay -d $config{srcdir} >/dev/null") != 0) {
	    warn("tla replay failed\n");
	}
    }
} #}}}

sub rcs_prepedit ($) { #{{{
# 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.
# The file is relative to the srcdir.
    my $file=shift;

    if (-d "$config{srcdir}/{arch}") {
# For Arch, return the tree-id of archive when
# editing begins.
	my $rev=`tla tree-id $config{srcdir}`;
	return defined $rev ? $rev : "";
    }
} #}}}

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=shift;
    my $message=shift;
    my $rcstoken=shift;

    if (-d "$config{srcdir}/{arch}") {
# Check to see if the page has been changed by someone
# else since rcs_prepedit was called.
	my ($oldrev)=$rcstoken=~/^([EMAIL PROTECTED]/._-]+)$/; # untaint
	    my $rev=`tla tree-id $config{srcdir}`;
	if (defined $rev && defined $oldrev && $rev ne $oldrev) {
# Merge their changes into the file that we've
# changed.
		if (system("tla", "update", "-d",
			    "$config{srcdir}/$file") != 0) {
		    warn("tla update failed\n");
		}
	}

	if (system("tla commit -L'".possibly_foolish_untaint($message)."' -d $config{srcdir} >/dev/null") != 0) {
	    my $conflict=readfile("$config{srcdir}/$file");
	    if (system("tla", "undo", "--quiet", "-d", "$config{srcdir}") != 0) {
		warn("tla undo failed\n");
	}
	return $conflict;
	}
    }
    return undef # success
} #}}}

sub rcs_add ($) { #{{{
# filename is relative to the root of the srcdir
    my $file=shift;

    if (-d "$config{srcdir}/{arch}") {

	if (system("tla add $config{srcdir}/$file >/dev/null") != 0) {
	    warn("tla add failed\n");
	}
    }
} #}}}

sub rcs_recentchanges ($) {
    my $num=shift;
    my @ret;
    my $i = 0;

    return unless -d "$config{srcdir}/{arch}";

    eval q{use CGI 'escapeHTML'};
    eval q{use Date::Parse};
    eval q{use Time::Duration};
    eval q{use Mail::Header};

    my $logs = `tla logs -d $config{srcdir}`;
    my @changesets = reverse split(/\n/, $logs);

    for($i=0;$i<$num && $i<$#changesets;$i++) {
	my ($change)=$changesets[$i]=~/^([EMAIL PROTECTED]/._-]+)$/; # untaint

	open(LOG, "tla cat-log -d $config{srcdir} $change|");
	my $head = new Mail::Header \*LOG;
	close(LOG);

	my $rev = $head->get("Revision");
	my $summ = $head->get("Summary");
	my $newfiles = $head->get("New-files");
	my $modfiles = $head->get("Modified-files");
	my $user = $head->get("Creator");

	my @paths = grep {!/^.*\/\.arch-ids\/.*\.id$/} split(/ /,
		"$newfiles $modfiles");

	my $sdate = $head->get("Standard-date");
	my $when=concise(ago(time - str2time($sdate, 'UTC')));

	my $committype = "web";
	if (defined $summ && $summ =~ /$tla_webcommit/) {
	    $user = defined $2 ? "$2" : "$3";
	    $summ = $4;
	}
	else {
	    $committype="tla";
	}

	my @message;
        push @message, { line => escapeHTML($summ) };
	$user = escapeHTML($user);

	my @pages;

	foreach my $file (@paths) {
	    my $diffurl=$config{diffurl};
	    $diffurl=~s/\[\[file\]\]/$file/g;
	    $diffurl=~s/\[\[rev\]\]/$change/g;
	    push @pages, {
		link => htmllink("", "", pagename($file), 1),
		     diffurl => $diffurl,
	    } if length $file;
	}
	push @ret, { rev => $change,
	    user => htmllink("", "", $user, 1),
	    committype => $committype,
	    when => $when,
	    message => [EMAIL PROTECTED],
	    pages => [EMAIL PROTECTED],
	} if @pages;

	last if ($i == $num);
    }

    return @ret;
}

sub rcs_notify () { #{{{
    if (! exists $ENV{REV}) {
	error("REV is not set, not running from tla post-commit hook, cannot send notifications");
    }
    my $rev=int(possibly_foolish_untaint($ENV{REV}));

    eval q{use Mail::Header};

    my $log=`cat $ENV{ARCH_LOG}`;

    open(LOG, $ENV{"ARCH_LOG"});
    my $head = new Mail::Header \*LOG;
    close(LOG);

    my $message = $head->get("Summary");
    my $user = $head->get("Creator");

    my $newfiles = $head->get("New-files");
    my $modfiles = $head->get("Modified-files");

    my @changed_pages = grep {!/^.*\/\.arch-ids\/.*\.id$/} split(/ /,
	    "$newfiles $modfiles");

    if ($message =~ /$tla_webcommit/) {
	$user=defined $2 ? "$2" : "$3";
	$message=$4;
    }

    require IkiWiki::UserInfo;
    my @email_recipients=commit_notify_list($user, @changed_pages);
    if (@email_recipients) {
# TODO: if a commit spans multiple pages, this will send
# subscribers a diff that might contain pages they did not
# sign up for. Should separate the diff per page and
# reassemble into one mail with just the pages subscribed to.
        my $logs = `tla logs -d $config{srcdir}`;
        my @changesets = reverse split(/\n/, $logs);
	my $i;

	for($i=0;$i<$#changesets;$i++) {
	last if $changesets[$i] eq $rev;
	}

	my $revminusone = $changesets[$i+1];
	my $diff=`tla diff -d $ENV{ARCH_TREE_ROOT} $revminusone`;

	my $subject="$config{wikiname} update of ";
	if (@changed_pages > 2) {
	    $subject.="$changed_pages[0] $changed_pages[1] etc";
	}
	else {
	    $subject.=join(" ", @changed_pages);
	}
	$subject.=" by $user";

	my $template=template("notifymail.tmpl");
	$template->param(
		wikiname => $config{wikiname},
		diff => $diff,
		user => $user,
		message => $message,
		);

	eval q{use Mail::Sendmail};
	foreach my $email (@email_recipients) {
	    sendmail(
		    To => $email,
		    From => "$config{wikiname} <$config{adminemail}>",
		    Subject => $subject,
		    Message => $template->output,
		    ) or error("Failed to send update notification mail");
	}
    }
} #}}}

sub rcs_getctime ($) { #{{{
    my $file=shift;
    eval q{use Date::Parse};
    eval q{use Mail::Header};

    my $logs = `tla logs -d $config{srcdir}`;
    my @changesets = reverse split(/\n/, $logs);
    my $sdate;

    for(my $i=0;$i<$#changesets;$i++) {
	my $change = $changesets[$i];

	open(LOG, "tla cat-log -d $config{srcdir} $change|");
	my $head = new Mail::Header \*LOG;
	close(LOG);

	$sdate = $head->get("Standard-date");
	my $newfiles = $head->get("New-files");

	my ($lastcreation) = grep {/^$file$/} split(/ /, "$newfiles");
	last if defined($lastcreation);
    }

    my $date=str2time($sdate, 'UTC');
    debug("found ctime ".localtime($date)." for $file");
    return $date;
} #}}}

1

--- End Message ---
--- Begin Message ---
Source: ikiwiki
Source-Version: 1.25

We believe that the bug you reported is fixed in the latest version of
ikiwiki, which is due to be installed in the Debian FTP archive:

ikiwiki_1.25.dsc
  to pool/main/i/ikiwiki/ikiwiki_1.25.dsc
ikiwiki_1.25.tar.gz
  to pool/main/i/ikiwiki/ikiwiki_1.25.tar.gz
ikiwiki_1.25_all.deb
  to pool/main/i/ikiwiki/ikiwiki_1.25_all.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [EMAIL PROTECTED],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Joey Hess <[EMAIL PROTECTED]> (supplier of updated ikiwiki package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [EMAIL PROTECTED])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Fri,  8 Sep 2006 01:54:14 -0400
Source: ikiwiki
Binary: ikiwiki
Architecture: source all
Version: 1.25
Distribution: unstable
Urgency: low
Maintainer: Joey Hess <[EMAIL PROTECTED]>
Changed-By: Joey Hess <[EMAIL PROTECTED]>
Description: 
 ikiwiki    - a wiki compiler
Closes: 385936
Changes: 
 ikiwiki (1.25) unstable; urgency=low
 .
   * Add proper waitpid calls for open2ed processes throughout to avoid
     zombies; this hit htmltidy especially badly.
   * Drop real uid/gid in the suid wrapper, thus allowing commits to remote
     subversion repos and fixing some other issues.
   * Add support for tla, contributed by Clint Adams. Closes: #385936
   * Add support for mercurial, contributed by Emanuele Aina.
   * Include <link rel> tag for RSS feeds, used by some aggregators and
     firefox to find the feed.
   * Add a linkmap plugin (requires graphviz).
Files: 
 0ccb00c71b0a7c57f04a525c3ed13eb3 649 web optional ikiwiki_1.25.dsc
 a4de9ae466e8ef6d73da9b79980b1363 153241 web optional ikiwiki_1.25.tar.gz
 bce5b092ef2b11cde2f1816ad09058dc 194432 web optional ikiwiki_1.25_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFFAQXH2tp5zXiKP0wRAoB6AJ0aypj1pEBRl9hE3NJgRsnWsPTH0QCcC7+/
M0dpi//xqLfL5fcDL6h094Y=
=U2he
-----END PGP SIGNATURE-----


--- End Message ---

Reply via email to