[FFmpeg-devel] [PATCH 2/2] version.sh: Add next release to the version
Timothy Gu
timothygu99 at gmail.com
Sun Mar 6 02:50:50 CET 2016
Also make consistent the fallback versions.
This patch uses a RELEASE-based approach rather than a tag-based one.
There are several reasons for this. First, the -dev tags never convey
more information than RELEASE. Second, RELEASE can provide a version
even without Git.
The new script is designed to be fairly robust, tested under a plethora
of conditions.
---
RELEASE | 2 +-
version.sh | 50 +++++++++++++++++++++++++++++++-------------------
2 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/RELEASE b/RELEASE
index b889d20..f25eb1f 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1 +1 @@
-3.0.git
+n3.1-master
diff --git a/version.sh b/version.sh
index c46aec5..e92c811 100755
--- a/version.sh
+++ b/version.sh
@@ -4,42 +4,54 @@
export GIT_DIR="$1/.git"
-# check for git short hash
+# Check version using git describe.
if ! test "$revision"; then
- if (cd "$1" && grep git RELEASE 2> /dev/null >/dev/null) ; then
+ if (cd "$1" && grep -q master RELEASE); then
+ # If we are not in a release branch, use the N-based
+ # revision.
revision=$(git describe --tags --match N 2> /dev/null)
else
- revision=$(git describe --tags --always 2> /dev/null)
+ # Check if there is a tag on this commit.
+ test "$version" || version=$(git describe --tags --exact-match 2> /dev/null)
+
+ # If not, use git describe to find delta from latest tag
+ # as the revision.
+ revision=$(git describe --tags 2> /dev/null | cut -d- -f2-)
fi
fi
# Shallow Git clones (--depth) do not have the N tag:
-# use 'git-YYYY-MM-DD-hhhhhhh'.
-test "$revision" || revision=$(
- git log -1 --pretty=format:"git-%cd-%h" --date=short 2> /dev/null)
+# use 'ghhhhhhh'.
+if ! test "$revision"; then
+ revision=$(git log -1 --pretty=format:"%h" 2> /dev/null)
+ test "$revision" && revision=g$revision
+fi
# Snapshots from gitweb are in a directory called ffmpeg-hhhhhhh or
# ffmpeg-HEAD-hhhhhhh.
if [ -z "$revision" ]; then
- srcdir=$(cd "$1" && pwd)
- case "$srcdir" in
- */ffmpeg-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])
- git_hash="${srcdir##*-}";;
- */ffmpeg-HEAD-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])
- git_hash="${srcdir##*-}";;
- esac
+ srcdir=$(cd "$1" && pwd)
+ case "$srcdir" in
+ */ffmpeg-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])
+ revision="g${srcdir##*-}";;
+ */ffmpeg-HEAD-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])
+ revision="g${srcdir##*-}";;
+ esac
fi
-# no revision number found
-test "$revision" || revision=$(cd "$1" && cat RELEASE 2> /dev/null)
+# If we have a revision prepend it with a hyphen.
+test "$revision" && revision="-$revision"
+
+# Prepend RELEASE.
+revision=$(cat "$1/RELEASE" | cut -d- -f1)-dev$revision
-# Append the Git hash if we have one
-test "$revision" && test "$git_hash" && revision="$revision-$git_hash"
+# Check if this is a release through the VERSION file
+test "$version" || version=$(cd "$1" && cat VERSION 2> /dev/null)
-# releases extract the version number from the VERSION file
-version=$(cd "$1" && cat VERSION 2> /dev/null)
+# If not a release, use the revision.
test "$version" || version=$revision
+# Append any extra version string.
test -n "$3" && version=$version-$3
if [ -z "$2" ]; then
--
1.9.1
More information about the ffmpeg-devel
mailing list