| #! /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} |