Re: [PATCH] Include extra information in mutt version string for developer builds
* David Champion on Wednesday, September 15, 2010 at 23:46:04 -0500
> # HG changeset patch
> # User David Champion <dgc@xxxxxxxxxxxx>
> # Date 1284612294 18000
> # Branch HEAD
> # Node ID 1c6c5a4e168219a6e26ba6143cabe9f7564dfcac
> # Parent 59aad6c21703484a9a298536efd4d971039d0a61
> Include extra information in mutt version string for developer builds.
Good idea.
> When a build is based on an hg clone, include extra information about
> the changeset node, distance from a tagged release, and mq applied patch
> count.
>
> For example, after this patch is applied my mutt build identifies itself
> (in mutt -v and in <show-version>) as:
>
> Mutt 1.5.21+26,mq+22 (7edc2073390d) (2010-09-15)
>
> I have applied 26 changesets applied since 1.5.21 was tagged, 22 of
> which are in my mq patch series. A 1.5.21 release build that is not
> mercurial-based would still appear simply as "1.5.21".
>
> diff -r 59aad6c21703 -r 1c6c5a4e1682 configure.ac
> --- a/configure.ac Wed Sep 15 11:47:39 2010 -0700
> +++ b/configure.ac Wed Sep 15 23:44:54 2010 -0500
> @@ -7,7 +7,7 @@
> AC_INIT([mutt.h])
> AM_CONFIG_HEADER([config.h])
>
> -mutt_cv_version=`cat $srcdir/VERSION`
> +mutt_cv_version=`./version`
> AM_INIT_AUTOMAKE(mutt, $mutt_cv_version)
> AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/VERSION'])
>
> diff -r 59aad6c21703 -r 1c6c5a4e1682 version
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/version Wed Sep 15 23:44:54 2010 -0500
> @@ -0,0 +1,36 @@
> +#!/bin/sh
> +
> +[ -d .hg ] || { cat VERSION; exit 0; }
> +hg >/dev/null 2>&1 || { cat VERSION; exit 0; }
> +
> +# This is a mercurial repo and we have the hg command
> +
> +cur=$(hg id -n -r .)
> +qparent=$(hg log -r qparent --template='{rev}\n' 2>/dev/null || echo $cur)
> +qdelta=$(expr $cur - $qparent)
> +
> +# The while loop is wonky but some shells (bash) have trouble with piping
> +# into "read", as with "echo 1 2 | read one two".
> +hg parents --template='{latesttag} {latesttagdistance} {node|short}\n' |
> while read tag dist node; do
You are aware that the latesttag and latesttagdistance keywords
are only available since Mercurial 1.4?
> + # first translate release tags into ##.##.## notation
> + case "$tag" in
> + mutt-*-rel) tag=`echo $tag | sed -e 's/mutt-//' -e
> 's/-rel//' | tr - .`;;
> + esac
> +
> + # if we have nonzero distance from the latest tag, include that info
> + if [ $dist -eq 0 ]; then
> + dist=""
> + else
> + dist="+$dist"
> + fi
> +
> + # if we have mq patches applied, mention it
> + if [ $qdelta -eq 0 ]; then
> + qdist=""
> + else
> + qdist=",mq+$qdelta"
> + fi
> +
> + echo "$tag$dist$qdist ($node)"
> + exit 0
> +done
c
--
theatre - books - texts - movies
Black Trash Productions at home: http://www.blacktrash.org
Black Trash Productions on Facebook:
http://www.facebook.com/blacktrashproductions