summaryrefslogtreecommitdiff
path: root/doc/bugs/Http_error_500_when_using_mercurial_backend.mdwn
blob: f78dd61d9d65b953aa6dab06a5a8d1a86aeeca3b (plain)

The mercurial backend is broken when no changelog message is given.

Here is a quick patch, partialy copying the svn backend.

--- /usr/share/perl5/IkiWiki/Rcs/mercurial.pm	2007-03-18 23:19:40.000000000 +0100
+++ ./mercurial.pm	2007-03-24 13:11:36.000000000 +0100
@@ -70,12 +70,15 @@
 
 	if (defined $user) {
 		$user = possibly_foolish_untaint($user);
+		$message="web commit by $user".(length $message ? ": $message" : "");
 	}
 	elsif (defined $ipaddr) {
 		$user = "Anonymous from $ipaddr";
+		$message="web commit from $ipaddr".(length $message ? ": $message" : "");
 	}
 	else {
 		$user = "Anonymous";
+		$message="web commit by Anonymous".(length $message ? ": $message" : "");
 	}
 
 	$message = possibly_foolish_untaint($message);

The svn backend puts the user info in the message because that's the only way to store the user info, unlike with mercurial. The svn plugin also removes that info when getting the RecentChanges info. Since mercurial does not do that, it seemed better to me to test for an empty message and set it to a dummy commit string, which I've [[done]]. --[[Joey]]

Thanks for the correct fix, Joey. --hb