#! /bin/sh # Convert one kind of changeset identifier to another. # # Usage: gcc-svn-ids -f from_kind -t to_kind id # # Where from_kind is one of: # index index into the changeset list used by the reghunt tools # rev is the Subversion revision name # and to_kind is one of: # index index into the changeset list used by the reghunt tools # rev is the Subversion revision name # date expanded UTC date string # branch the branch, or "trunk" for mainline # author the person who checked in the patch errmsg () { echo $1 1>&2 } usage () { echo 'cvs_ids -f kind -t kind id' 1>&2 echo ' where from_kind is index or rev' 1>&2 echo ' and to_kind is index, rev, date, author, or branch' 1>&2 echo "error" exit 1 } if [ "x${REG_CHANGESET_LIST}" = "x" ]; then errmsg "REG_CHANGESET_LIST is not defined" echo "error" exit 1 fi if [ ! -f ${REG_CHANGESET_LIST} ]; then errmsg "changeset list ${REG_CHANGESET_LIST} does not exist" echo "error" exit 1 fi # Use a shorter name here. LIST=${REG_CHANGESET_LIST} while getopts "f:t:" ARG; do case ${ARG} in f) FROM_KIND="${OPTARG}";; t) TO_KIND="${OPTARG}";; h) usage;; *) errmsg "unrecognized option: ${ARG}"; usage;; esac done shift `expr ${OPTIND} - 1` if [ $# -eq 0 ]; then errmsg "too few arguments, ID is missing" usage fi if [ $# -gt 1 ]; then errmsg "unexpected arguments: $*" usage fi ID="$1" case ${FROM_KIND} in index) LINE=`awk -F '|' -v id="${ID}" '{if ($1 == id) print }' < ${LIST}`;; rev) LINE=`awk -F '|' -v id="${ID}" '{if ($2 == id) print }' < ${LIST}`;; *) errmsg "unrecognized FROM kind: ${FROM_KIND}"; usage;; esac if [ "x${LINE}" = "x" ]; then errmsg "no entry found for ${FROM_KIND} = ${ID}" echo "error" exit 1 fi case ${TO_KIND} in index) TO_ID="`echo ${LINE} | awk -F '|' '{ print $1 }'`";; rev) TO_ID="`echo ${LINE} | awk -F '|' '{ print $2 }'`";; author) TO_ID="`echo ${LINE} | awk -F '|' '{ print $3 }'`";; date) TO_ID="`echo ${LINE} | awk -F '|' '{ print $4 }'`";; branch) TO_ID="`echo ${LINE} | awk -F '|' '{ print $5 }'`";; *) errmsg "unrecognized TO kind: ${TO_KIND}"; usage;; esac echo ${TO_ID}