diff options
Diffstat (limited to 'util/tagbranch.sh')
-rwxr-xr-x | util/tagbranch.sh | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/util/tagbranch.sh b/util/tagbranch.sh deleted file mode 100755 index 3e196b6f25..0000000000 --- a/util/tagbranch.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -# -# Copyright 2017 The Chromium OS Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -# -# Generate git strings for tagging EC branches. -# -# This script builds up on ideas put by vpalatin@ into util/getversion.sh -# -# Git allows to count number of patches between the current state of the tree -# and any directly preceding tag in the tree. That is if we tag the first -# patch in the current branch, we can tell how many patches are in the branch -# above that tag. And if we tag the branch such that the tag string includes -# the branch name, we can also say what branch we are in looking at the -# closest tag in the tree. -# -# This admittedly brittle script automates the process of tagging for the EC -# git tree in Chrome OS repo, but it could be used for any other Chrome OS -# repo git tree just as well. -# -# The script is brittle because it relies on the following assumptions which -# are true for Chrome OS repo at the time of writing: -# -# - the upstream branch alias name shows up in the 'git branch -a' output -# separated by -> -# - the upstream branch alias name has the format of -# cros/<branch name> -# - the remote git server name shows up in 'git config -l' output in the -# line starting with "remote.cros.url=" -# - firmware branch names have format of firmware-<board>-XXXXXX -# - the current branch was cut off of <remote name>/master -# -# The tag name generated by this script would be the XXXXX string with dots, -# if any, replaced by underscores. - -# Retrieve the upstream branch alias name -UPSTREAM="$(git branch -a | awk '/->/ {print $3}')" -if [[ -z "${UPSTREAM}" ]]; then - echo "Failed to determine upstream branch alias" >&2 - exit 1 -fi - -export ORIGIN_NAME="cros" -ORIGIN="$(git config "remote.${ORIGIN_NAME}.url")" - -# The last common patch between this branch and the master. -BRANCH_POINT="$(git merge-base "${UPSTREAM}" "${ORIGIN_NAME}/master")" -if [[ -z "${BRANCH_POINT}" ]]; then - echo "Failed to determine cros/master branch point" >&2 - exit 1 -fi - -# Derive tag base string from the upstream branch name as described above. -TAG_BASE="$(sed 's/.*-// # drop everything up to including the last - - s/\./_/g # replace dots and dashes with underscores - ' <<< "${UPSTREAM}" )" - -if [[ "${TAG_BASE}" == "master" ]]; then - echo "Nothing to tag in master branch" >&2 - exit 1 -fi - -TAG="v1.${TAG_BASE}.0" - -#SHA1 of the first patch of this branch -BASE_SHA="$(git rev-list --ancestry-path "${BRANCH_POINT}".."${UPSTREAM}" | - tail -1)" - -echo "Will run git tag -a -m \"firmware branch ${TAG}\" ${TAG} ${BASE_SHA}" -if git tag -a -m "firmware branch ${TAG}" "${TAG}" "${BASE_SHA}"; then - cat <<EOF - -A new tag '$TAG' has been set. Use the following command -to push it to the server - -git push --tags ${ORIGIN} ${TAG} - -Or if you want to delete it: - -git tag -d $TAG - -EOF -fi |