Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce2009-11-17 18:25:14 +0000
committerShawn O. Pearce2009-11-17 18:25:14 +0000
commit6f06be9bc29b5d6c21264be48316c65ade42df62 (patch)
tree48623cdbd8a8d8d310e5f2dee464c8a1726f5586
parentddefff9875ef63c2df4edfb04c6d8fb935bb3038 (diff)
downloadjgit-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

Back to the top