Browse Source

tools/version.sh: Update embedded version numbers in build products

We can now use `tools/version.sh --release` to update the MANIFEST.MF
and Maven POM files with the current version number of this project,
so they appear in any build product created.

The counterpart --snapshot option be used to reset files to use
their natural *-SNAPSHOT and *.qualifier state during development.

We use a simple Bourne shell script with Perl calls because we
must edit both Maven pom.xml and OSGi bundle MANIFEST.MF in order
to store the correct data for our parallel build systems.  In the
future we should use a native Java solution which relies upon JGit
to compute the `git describe` portion.

Until we tag our first official release a "tagged snapshot" can be
made by creating an artifical annotated tag first:

  git tag -a -m "initial contribution" v0.5.1 046198cf5f21e5a63e8ec0ecde2ef3fe21db2eae
  tools/version.sh --release

Resulting in a version string like "0.5.1.50-ge16af83".

Change-Id: Ic2bbae75bf96fc8831324c62c2212131277f70e4
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
stable-0.7
Shawn O. Pearce 15 years ago
parent
commit
6f06be9bc2
  1. 88
      tools/version.sh

88
tag_jgit.sh → tools/version.sh

@ -1,5 +1,5 @@
#!/bin/sh
# Copyright (C) 2009, Robin Rosenberg <robin.rosenberg@dewire.com>
# Copyright (C) 2009, Google Inc.
# and other copyright owners as documented in the project's IP log.
#
# This program and the accompanying materials are made available
@ -41,39 +41,67 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Updates MANIFEST.MF files for EGit plugins.
# Update all pom.xml and MANIFEST.MF with new build number
#
# TODO(spearce) This should be converted to some sort of
# Java based Maven plugin so its fully portable.
#
v=$1
if [ -z "$v" ]
then
echo >&2 "usage: $0 version"
exit 1
fi
case "$1" in
--snapshot=*)
V=$(echo "$1" | perl -pe 's/^--snapshot=//')
if [ -z "$V" ]
then
echo >&2 "usage: $0 --snapshot=0.n.0"
exit 1
fi
case "$V" in
*-SNAPSHOT) : ;;
*) V=$V-SNAPSHOT ;;
esac
;;
MF=$(git ls-files | grep META-INF/MANIFEST.MF)
MV=jgit-maven/jgit/pom.xml
ALL="$MF $MV"
--release)
V=$(git describe HEAD) || exit
;;
replace() {
version=$1
*)
echo >&2 "usage: $0 {--snapshot=0.n.0 | --release}"
exit 1
esac
perl -pi -e 's/^(Bundle-Version:).*/$1 '$version/ $MF
perl -pi -e 's,^ <version>.*</version>, <version>'$2'</version>,' $MV
}
case "$V" in
v*) V=$(echo "$V" | perl -pe s/^v//) ;;
esac
replace $v $v
git commit -s -m "JGit $v" $ALL &&
c=$(git rev-parse HEAD) &&
case "$V" in
*-SNAPSHOT)
POM_V=$V
MF_V=$(echo "$V" | perl -pe 's/-SNAPSHOT$/.qualifier/')
;;
*-[1-9]*-g[0-9a-f]*)
POM_V=$(echo "$V" | perl -pe 's/-(\d+-g.*)$/.$1/')
MF_V=$POM_V
;;
*)
POM_V=$V
MF_V=$V
;;
esac
replace $v.qualifier $v-SNAPSHOT &&
git commit -s -m "Re-add version qualifier suffix to $v" $ALL &&
perl -pi -e '
s/^(Bundle-Version:).*/$1 '"$MF_V"'/
' $(git ls-files | grep META-INF/MANIFEST.MF)
echo &&
tagcmd="git tag -s -m 'JGit $v' v$v $c" &&
if ! eval $tagcmd
then
echo >&2
echo >&2 "Tag with:"
echo >&2 " $tagcmd"
exit 1
fi || exit
perl -pi -e '
if ($ARGV ne $old_argv) {
$seen_version = 0;
$old_argv = $ARGV;
}
if (!$seen_version) {
$seen_version = 1 if
s{(<version>).*(</version>)}{${1}'"$POM_V"'${2}};
}
' $(git ls-files | grep pom.xml)
git diff
Loading…
Cancel
Save