From 46950597d0100ef78024b3e9f55100d583228773 Mon Sep 17 00:00:00 2001 From: Kai Liu Date: Mon, 30 Dec 2013 16:40:08 -0800 Subject: [PATCH] Automate the preparation step for a new release Summary: Added a script that prepares the repo for facebook's new rocksdb release, which will automatically do some necessary work to make sure this repo is ready for 3rdparty release. Test Plan: Run this script and observed: * new version was created (both in local and remote repo) as a git tag. * build_version.cc was updated * build_detect_platform was changed so that it won't create any new change. Reviewers: haobo, dhruba, sdong, igor CC: leveldb Differential Revision: https://reviews.facebook.net/D15003 --- build_tools/make_new_version.sh | 61 +++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 build_tools/make_new_version.sh diff --git a/build_tools/make_new_version.sh b/build_tools/make_new_version.sh new file mode 100755 index 000000000..ca8a21262 --- /dev/null +++ b/build_tools/make_new_version.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# Copyright (c) 2013, Facebook, Inc. All rights reserved. +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. An additional grant +# of patent rights can be found in the PATENTS file in the same directory. + +set -e +# Print out the colored progress info so that it can be brainlessly +# distinguished by users. +function title() { + echo -e "\033[1;32m$*\033[0m" +} + +usage="Create new rocksdb version and prepare it for the release process\n" +usage+="USAGE: ./make_new_version.sh " + +# -- Pre-check +if [[ $# < 1 ]]; then + echo -e $usage + exit 1 +fi + +ROCKSDB_VERSION=$1 + +GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` +if [ $GIT_BRANCH != "master" ]; then + echo "Error: Current branch is '$GIT_BRANCH', Please switch to master branch." +fi + +# --Step 1: cutting new tag +title "Adding new tag for this release ..." +git tag -a "$ROCKSDB_VERSION.fb" -m "Rocksdb $ROCKSDB_VERSION" + +# Setting up the proxy for remote repo access +export http_proxy=http://172.31.255.99:8080 +export https_proxy="$http_proxy"; + +title "Pushing new tag to remote repo ..." +proxycmd.sh git push origin --tags + +# --Step 2: Update README.fb +title "Updating the latest version info in README.fb ..." +sed -i "s/Latest release is [0-9]\+.[0-9]\+.fb/Latest release is $ROCKSDB_VERSION.fb/" README.fb +git commit README.fb -m "update the latest version in README.fb to $ROCKSDB_VERSION" +proxycmd.sh git push + +# --Step 3: Prepare this repo for 3rd release +title "Cleaning up repo ..." +make clean +git clean -fxd + +title "Generating the build info ..." +# Comment out the call of `build_detection_version` so that the SHA number and build date of this +# release will remain constant. Otherwise everytime we run "make" util/build_version.cc will be +# overridden. +sed -i 's/^\$PWD\/build_tools\/build_detect_version$//' build_tools/build_detect_platform + +# Generate util/build_version.cc +build_tools/build_detect_version + +title "Done!"