From d621aa3802b4c34dbf7a224cedac84dab0b929e1 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 27 Jul 2006 22:32:54 +0000 Subject: Add Version control system scripts. --- localsvnlog2cl | 84 ++++++++++++++++++++++++++++++++++++++++++ localvcsactions | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ xmc | 2 +- 3 files changed, 197 insertions(+), 1 deletion(-) create mode 100755 localsvnlog2cl create mode 100755 localvcsactions diff --git a/localsvnlog2cl b/localsvnlog2cl new file mode 100755 index 0000000..bf4ff44 --- /dev/null +++ b/localsvnlog2cl @@ -0,0 +1,84 @@ +#!/usr/bin/perl -w + +# Origin: /usr/share/doc/subversion/examples/gnuify-changelog.pl.gz + +# a script to munge the output of 'svn log' into something approaching the +# style of a GNU ChangeLog. +# +# to use this, just fill in the 'hackers' hash with the usernames and +# name/emails of the people who work on your project, go to the top level +# of your working copy, and run: +# +# $ svn log | /path/to/gnuify-changelog.pl > ChangeLog + +require 5.0; +use strict; + +my %hackers = ( +# "jonas" => 'Jonas Smedegaard ', +); + +my $parse_next_line = 0; +my $last_line_empty = 0; +my $last_rev = ""; + +while (my $entry = <>) { + + # Axe windows style line endings, since we should try to be consistent, and + # the repos has both styles in its log entries + $entry =~ s/\r\n$/\n/; + + # Remove trailing whitespace + $entry =~ s/\s+$/\n/; + + my $this_line_empty = $entry eq "\n"; + + # Avoid duplicate empty lines + next if $this_line_empty and $last_line_empty; + + # Don't fail on valid dash-only lines + if ($entry =~ /^-+$/ and length($entry) >= 72) { + + # We're at the start of a log entry, so we need to parse the next line + $parse_next_line = 1; + + # Check to see if the final line of the commit message was blank, + # if not insert one + print "\n" if $last_rev ne "" and !$last_line_empty; + + } elsif ($parse_next_line) { + + # Transform from svn style to GNU style + $parse_next_line = 0; + + my @parts = split (/ /, $entry); + $last_rev = $parts[0]; + my $hacker = $parts[2]; + my $tstamp = $parts[4]; + + # Use alias if we can't resolve to name, email + $hacker = $hackers{$hacker} if defined $hackers{$hacker}; + + printf "%s %s\n", $tstamp, $hacker; + + } elsif ($this_line_empty) { + + print "\n"; + + } else { + + print "\t$entry"; + + } + + $last_line_empty = $this_line_empty; +} + +# As a HERE doc so it also sets the final changelog's coding +print <&1 || exit 1 ) \ + | egrep -v '^cvs(pserver)? (server|update): Updating' || [ $? -lt 2 ] # catch grep failures + ;; + SVN) + ( cd $project/$target && svn update ) + ;; + ARCH) + ( cd $project/$target && tla update ) + ;; + Mercurial) + ( cd $project/$target && hg pull -u ) + ;; + *) + echo "ERROR: Action \"$action\" not supported for \"$project/$target\"." + exit 1 + ;; + esac + ;; + archive) + echo " ** Creating snapshot of $versys project \"$project\" target \"$target\"${repository:+ (repository \"$repository\"${branch:+ branch \"$branch\"})}" + case $versys in + CVS|SVN|ARCH|Mercurial) + ( cd $project && tar chf - --exclude CVS $tar_excludes $target ) \ + | gzip -f9 > $project/$target-$versysfile$(date '+%Y%m%d').tar.gz + ;; + *) + echo "ERROR: Action \"$action\" not supported for \"$project/$target\"." + exit 1 + ;; + esac + ;; + mkchanges) + echo " ** Building changelog of $versys project \"$project\" target \"$target\"${repository:+ (repository \"$repository\"${branch:+ branch \"$branch\"})}" + case $versys in + CVS) +# ( cd $project/$target && cvs2cl --gmt -S --no-wrap -f ../$target.ChangeLog 2>&1 || exit 1 ) \ +# ( cd $project/$target && cvs2cl --gmt -S --no-wrap ${branch:+-F $branch} -f ../$target.ChangeLog 2>&1 || exit 1 ) \ + ( cd $project/$target && cvs2cl --gmt -S --no-wrap -F ${branch:-TRUNK} -f ../$target.ChangeLog 2>&1 || exit 1 ) \ + | egrep -v '^cvs(pserver)? (server|log): Logging' || [ $? -lt 2 ] # catch grep failures + ;; + SVN) + ( cd $project/$target && test -f ../$target.ChangeLog && mv -f ../$target.ChangeLog ../$target.ChangeLog.bak ) + ( cd $project/$target && svn log -v | localsvnlog2cl > ../$target.ChangeLog ) + ;; + ARCH) + ( cd $project/$target && test -f ../$target.ChangeLog && mv -f ../$target.ChangeLog ../$target.ChangeLog.bak ) + ( cd $project/$target && tla changelog > ../$target.ChangeLog ) + ;; + Mercurial) + ( cd $project/$target && test -f ../$target.ChangeLog && mv -f ../$target.ChangeLog ../$target.ChangeLog.bak ) + ( cd $project/$target && hg log -v > ../$target.ChangeLog ) + ;; + *) + echo "ERROR: Action \"$action\" not supported for \"$project/$target\"." + exit 1 + ;; + esac + ;; + *) + echo "ERROR: Unknown action \"$action\" for \"$project/$target\"." + exit 1 + ;; + esac + done + fi +done diff --git a/xmc b/xmc index 7fb8d1c..735ef64 100755 --- a/xmc +++ b/xmc @@ -1,7 +1,7 @@ #!/bin/bash # danish locale is broken - see http://bugs.debian.org/181027 -export LC_ALL=C +#export LC_ALL=C if [ $# -eq 0 ]; then xsh localhost mc -- cgit v1.2.3