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" -