Mercurial > hg > buildtools
changeset 2:4cf32ca7b15e
Added very preliminary version of hg2cl (requires svn2cl.xsl) which
generates ChangeLog from Mercurial repository.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 09 May 2008 14:13:10 +0300 |
parents | 2375efb3340d |
children | 407ddf6cd676 |
files | hg2cl |
diffstat | 1 files changed, 140 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /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 '<?xml version="1.0"?>' && +echo '<log>' && \ +hg log $EXTRAOPTS -M -v -f --template \ +'<logentry revision="#rev#"><author>#author|escape#</author><date>#date|isodate#</date><paths><path>#files#</path></paths><msg>#desc|escape#</msg></logentry>\n' && \ +echo '</log>' ) | \ +iconv -f "iso-8859-1" -t "utf-8" | \ +xsltproc --stringparam strip-prefix "$STRIPPREFIX" \ + --stringparam linelen $LINELEN \ + --stringparam groupbyday $GROUPBYDAY \ + --stringparam include-rev $INCLUDEREV \ + "$XSL" -