# HG changeset patch # User Matti Hamalainen # Date 1210331590 -10800 # Node ID 4cf32ca7b15e1c3652da69237d47ba7f3359ddc9 # Parent 2375efb3340d464c90dc516e9992cde44b9d3c4a Added very preliminary version of hg2cl (requires svn2cl.xsl) which generates ChangeLog from Mercurial repository. diff -r 2375efb3340d -r 4cf32ca7b15e hg2cl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hg2cl Fri May 09 14:13:10 2008 +0300 @@ -0,0 +1,140 @@ +#!/bin/sh + +# hg2cl.sh - front end shell script for svn2cl.xsl, calls xsltproc +# with the correct parameters +# +# Copyright (C) 2005 Arthur de Jong. +# Copyright (C) 2008 Matti Hamalainen +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# exit on any failures +set -e + +# svn2cl version +VERSION="0.2" + +# set default parameters +STRIPPREFIX=`basename $(pwd)` +LINELEN=75 +GROUPBYDAY="yes" +INCLUDEREV="no" +CHANGELOG="ChangeLog" + +# do command line checking +prog=`basename $0` +while [ -n "$1" ] +do + case "$1" in + --strip-prefix) + STRIPPREFIX="$2" + shift 2 + ;; + --linelen) + LINELEN="$2"; + shift 2 + ;; + --separate) + GROUPBYDAY="no"; + shift + ;; + -r|--include-rev) + INCLUDEREV="yes"; + shift + ;; + -O|--hg-options) + EXTRAOPTS="$2" + shift 2 + ;; + -o|--output) + CHANGELOG="$2" + shift 2 + ;; + --stdout) + CHANGELOG="-" + shift + ;; + -V|--version) + echo "$prog $VERSION"; + echo "Written by Arthur de Jong." + echo "Modified for Mercurial by Matti Hamalainen." + echo "Copyright (C) 2005 Arthur de Jong." + echo "Copyright (C) 2008 Matti Hamalainen." + echo "" + echo "This is free software; see the source for copying conditions. There is NO" + echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit 0 + ;; + -h|--help) + echo "Usage: $prog [OPTION]..." + echo "Generate a ChangeLog from a checked out subversion repository." + echo "" + echo " --strip-prefix NAME prefix to strip from all entries, defaults" + echo " to the name of the current directory" + echo " --linelen NUM maximum length of an output line" + echo " --separate don't group changelog entries by day" + echo " -r, --include-rev include revision numbers" + echo " -o, --output FILE output to FILE instead of ChangeLog" + echo " --stdout output to stdout instead of ChangeLog" + echo " -O, --hg-options OPTS options passed to Mercurial" + echo " -h, --help display this help and exit" + echo " -V, --version output version information and exit" + exit 0 + ;; + *) + echo "$prog: invalid option -- $1" + echo "Try \`$prog --help' for more information." + exit 1 + ;; + esac +done + +# find the directory that this script resides in +prog="$0" +while test -h "$prog"; do + prog=`ls -ld "$prog" | sed "s/^.*-> \(.*\)/\1/;/^[^/]/s,^,$(dirname "$prog")/,"` +done +dir=`dirname $prog` +dir=`cd $dir && pwd` +XSL="$dir/svn2cl.xsl" + +# redirect stdout to the changelog file if needed +if test "x$CHANGELOG" != "x-"; then + exec > "$CHANGELOG" +fi + +# actually run the command we need +( echo '' && +echo '' && \ +hg log $EXTRAOPTS -M -v -f --template \ +'#author|escape##date|isodate##files##desc|escape#\n' && \ +echo '' ) | \ +iconv -f "iso-8859-1" -t "utf-8" | \ +xsltproc --stringparam strip-prefix "$STRIPPREFIX" \ + --stringparam linelen $LINELEN \ + --stringparam groupbyday $GROUPBYDAY \ + --stringparam include-rev $INCLUDEREV \ + "$XSL" -