aboutsummaryrefslogtreecommitdiffstats
path: root/utils/release/tag.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/release/tag.sh')
-rwxr-xr-xutils/release/tag.sh39
1 files changed, 29 insertions, 10 deletions
diff --git a/utils/release/tag.sh b/utils/release/tag.sh
index 390acaf..503413b 100755
--- a/utils/release/tag.sh
+++ b/utils/release/tag.sh
@@ -18,17 +18,21 @@ release=""
rc=""
rebranch="no"
projects="llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi clang-tools-extra polly lldb lld openmp"
+dryrun=""
+revision="HEAD"
base_url="https://llvm.org/svn/llvm-project"
function usage() {
- echo "usage: `basename $0` -release <num> [-rebranch]"
- echo "usage: `basename $0` -release <num> -rc <num>"
+ echo "usage: `basename $0` -release <num> [-rebranch] [-revision <num>] [-dry-run]"
+ echo "usage: `basename $0` -release <num> -rc <num> [-dry-run]"
echo " "
- echo " -release <num> The version number of the release"
- echo " -rc <num> The release candidate number"
- echo " -rebranch Remove existing branch, if present, before branching"
- echo " -final Tag final release candidate"
+ echo " -release <num> The version number of the release"
+ echo " -rc <num> The release candidate number"
+ echo " -rebranch Remove existing branch, if present, before branching"
+ echo " -final Tag final release candidate"
+ echo " -revision <num> Revision to branch off (default: HEAD)"
+ echo " -dry-run Make no changes to the repository, just print the commands"
}
function tag_version() {
@@ -38,10 +42,11 @@ function tag_version() {
if [ $rebranch = "no" ]; then
continue
fi
- svn remove -m "Removing old release_$branch_release branch for rebranching." \
+ ${dryrun} svn remove -m "Removing old release_$branch_release branch for rebranching." \
$base_url/$proj/branches/release_$branch_release
fi
- svn copy -m "Creating release_$branch_release branch" \
+ ${dryrun} svn copy -m "Creating release_$branch_release branch off revision ${revision}" \
+ -r ${revision} \
$base_url/$proj/trunk \
$base_url/$proj/branches/release_$branch_release
done
@@ -52,10 +57,10 @@ function tag_release_candidate() {
set -x
for proj in $projects ; do
if ! svn ls $base_url/$proj/tags/RELEASE_$tag_release > /dev/null 2>&1 ; then
- svn mkdir -m "Creating release directory for release_$tag_release." $base_url/$proj/tags/RELEASE_$tag_release
+ ${dryrun} svn mkdir -m "Creating release directory for release_$tag_release." $base_url/$proj/tags/RELEASE_$tag_release
fi
if ! svn ls $base_url/$proj/tags/RELEASE_$tag_release/$rc > /dev/null 2>&1 ; then
- svn copy -m "Creating release candidate $rc from release_$tag_release branch" \
+ ${dryrun} svn copy -m "Creating release candidate $rc from release_$tag_release branch" \
$base_url/$proj/branches/release_$branch_release \
$base_url/$proj/tags/RELEASE_$tag_release/$rc
fi
@@ -79,6 +84,13 @@ while [ $# -gt 0 ]; do
-final | --final )
rc="final"
;;
+ -revision | --revision )
+ shift
+ revision="$1"
+ ;;
+ -dry-run | --dry-run )
+ dryrun="echo"
+ ;;
-h | --help | -help )
usage
exit 0
@@ -105,6 +117,13 @@ tag_release=`echo $release | sed -e 's,\.,,g'`
if [ "x$rc" = "x" ]; then
tag_version
else
+ if [ "$revision" != "HEAD" ]; then
+ echo "error: cannot use -revision with -rc"
+ echo
+ usage
+ exit 1
+ fi
+
tag_release_candidate
fi