diff --git a/scripts/create-release.sh b/scripts/create-release.sh index 88ea4429d..3fee3e11f 100755 --- a/scripts/create-release.sh +++ b/scripts/create-release.sh @@ -29,6 +29,24 @@ then fi +# Checks whether remote branch has local tracking branch +ensure_local_branch() { + if ! git branch | grep -q '^..'"$1"'$' ; then + git branch --track $1 origin/$1 + fi +} + +# Marks current head of given branch as head of other branch +# Used for STABLE/TESTING tracking +mark_as_release() { + branch=$1 + rel_branch=$2 + echo "* Marking release as $rel_branch" + ensure_local_branch $rel_branch + git checkout $rel_branch + git merge $branch +} + # Read required parameters version=$1 shift @@ -57,7 +75,21 @@ if [ "$do_release" != 'y' ]; then exit 100 fi +# Ensure we have tracking branch +ensure_local_branch $branch + +# Create working copy +mkdir -p release +workdir=release/phpMyAdmin-$version +if [ -d $workdir ] ; then + echo "Working directory '$workdir' already exists, please move it out of way" + exit 1 +fi +git clone --local . $workdir +cd $workdir + # Checkout branch +ensure_local_branch $branch git checkout $branch # Check release version @@ -78,16 +110,6 @@ if ! grep -q "Version $version\$" README ; then exit 2 fi -# Create working copy -mkdir -p release -workdir=release/phpMyAdmin-$version -if [ -d $workdir ] ; then - echo "Working directory '$workdir' already exists, please move it out of way" - exit 1 -fi -git clone --local . $workdir -cd $workdir - # Cleanup release dir LC_ALL=C date -u > RELEASE-DATE-${version} @@ -192,11 +214,12 @@ if [ $# -gt 0 ] ; then echo "* Tagging release as $tagname" git tag -a -m "Released $version" $tagname $branch if echo $version | grep '[a-z_-]' ; then - echo "* Tagging release as TESTING" - git tag -a -f -m "Released $version" TESTING $branch + mark_as_release $branch TESTING else - echo "* Tagging release as STABLE" - git tag -a -f -m "Released $version" STABLE $branch + # We update both branches here + # As it does not make sense to have older testing than stable + mark_as_release $branch TESTING + mark_as_release $branch STABLE fi echo " Dont forget to push tags using: git push --tags" ;; @@ -215,7 +238,7 @@ cat <