diff options
author | Shawn O. Pearce | 2009-11-17 18:25:14 +0000 |
---|---|---|
committer | Shawn O. Pearce | 2009-11-17 18:25:14 +0000 |
commit | 6f06be9bc29b5d6c21264be48316c65ade42df62 (patch) | |
tree | 48623cdbd8a8d8d310e5f2dee464c8a1726f5586 | |
parent | ddefff9875ef63c2df4edfb04c6d8fb935bb3038 (diff) | |
download | jgit-6f06be9bc29b5d6c21264be48316c65ade42df62.tar.gz jgit-6f06be9bc29b5d6c21264be48316c65ade42df62.tar.xz jgit-6f06be9bc29b5d6c21264be48316c65ade42df62.zip |
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>
-rw-r--r-- | tools/version.sh (renamed from tag_jgit.sh) | 88 |
1 files changed, 58 insertions, 30 deletions
diff --git a/tag_jgit.sh b/tools/version.sh index 77103d8618..eee41f00a1 100644 --- a/tag_jgit.sh +++ b/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 |