view contrib/reghunt/bin/gcc-svn-ids @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children f6334be47118
line wrap: on
line source

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