# HG changeset patch # User Matti Hamalainen # Date 1210331617 -10800 # Node ID 407ddf6cd67646138de591dbea2268be04a3bf45 # Parent 4cf32ca7b15e1c3652da69237d47ba7f3359ddc9 Removed mkchangelog, it is replaced by hg2cl. diff -r 4cf32ca7b15e -r 407ddf6cd676 mkchangelog --- a/mkchangelog Fri May 09 14:13:10 2008 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -#!/usr/bin/perl -w -use strict; -my $HG = "hg"; - -my $argc = ($#ARGV + 1); -print STDERR "mkchangelog v0.1 (C) 2008 Matti 'ccr' Hamalainen\n"; -die("Usage: mkchangelog [revision]\n". -"Assumes latest tagged revision if no revision given." -) unless ($argc <= 1); -my $startrev = ""; -if ($argc >= 1) { $startrev = shift; } - - -### Parse tag information -my $hgcmd = "$HG tags"; -open(PIIPPU, '-|', $hgcmd) or die("Cannot execute $hgcmd\n"); -my %tags = (); -my $gottags = 0; -while () { - chop; - if (/^(\S+)\s+(\d+):(.+)$/) { - $tags{$2} = $1; - $gottags = 1; - } -} -close PIIPPU; - -die("No Mercurial tags data found, quitting.\n") unless ($gottags); - -### Do shit -if ($startrev eq "") { - foreach my $i (sort { $a <=> $b } keys %tags) { - if ($tags{$i} ne "tip") { $startrev = $i; } - } -} - -my $revcmd; -my $therevs = "tip:$startrev"; -if ($startrev ne "") { - $revcmd = "-r $therevs"; - print STDERR "Getting log for revisions $therevs ...\n"; -} else { - $revcmd = ""; - $therevs = "ALL"; - print STDERR "Getting log for all revisions ...\n"; -} - -### Parse log -$hgcmd = "$HG log -M -v -f $revcmd --template '\@\$REV:#rev#:#node|short#:#files#\$\@\n#desc#\n\@\$END\$\@\n'"; -open(PIIPPU, '-|', $hgcmd) or die("Cannot execute $hgcmd\n"); -my %log = (); -my %loghash = (); -my %revhash = (); -my %filehash = (); -my %rmref = (); -my $isdesc = 0; -my $rev = -1; -my $hash = ""; -my $text = ""; -my $gotrevs = 0; -my $files = ""; -while () { - chop; - if (/^\@\$REV:(\d+):([0-9a-f]{12}):(.*)\$\@$/) { - $rev = $1; - $hash = $2; - $files = $3; - $text = ""; - $isdesc = 1; - $gotrevs = 1; - } elsif (/^\@\$END\$\@$/) { - die("lol\n") unless ($isdesc); - $isdesc = 0; - $filehash{$rev} = $files; - $log{$rev} = $text; - $loghash{$hash} = $rev; - $revhash{$rev} = $hash; - } elsif ($isdesc) { - $text .= $_." "; - } else { - print STDERR "? $_\n"; - } -} -close PIIPPU; - -die("No Mercurial revision data found? How odd... quitting.\n") unless ($gotrevs); - -### -my %hide = (); -foreach my $i (sort { $a <=> $b } keys %log) { - if ($log{$i} =~ /Backed out changeset ([0-9a-f]{12})/) { - my $href = $1; - if (defined($loghash{$href})) { - $hide{$i} = 1; - $rmref{$href} = $revhash{$i}; - } - } -} - -my $s = "ChangeLog between revisions $therevs"; -print "$s\n"; -print "=" x length($s) . "\n\n"; - -foreach my $i (sort { $a <=> $b } keys %log) { - my $href = $revhash{$i}; - if (!defined($rmref{$href}) && !defined($hide{$i})) { - my @foo = split(/\s+/,$filehash{$i}); - my $n = $#foo + 1; - if ($n > 3) { $n = 3; } - - print "- $log{$i} [".($#foo + 1).": "; - for (my $k = 0; $k < $n; $k++) { - print $foo[$k]; - print " " unless ($k+1 == $n); - } - print " ..." unless ($#foo <= $n); - print "]\n"; - } -} -