home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 December / PCWorld_2001-12_cd.bin / Novinky / gnucz / software / cvsrepo.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2001-02-13  |  2KB  |  97 lines

  1. #! /bin/sh
  2. # cvsrepo - change the repository location of a checked-out CVS module
  3. #
  4. # This script was written by a famous, but anonymous hacker.  I just
  5. # named, de-Bashified, and documented it.
  6. #
  7. # - Gordon Matzigkeit <gord@gnu.org>, 1999-12-06
  8.  
  9. progname=`echo "$0" | sed 's%^.*/%%'`
  10. help="Type \`$progname --help' for more information."
  11. ROOT=
  12. MODULE=
  13. TOPDIR=
  14.  
  15. for arg
  16. do
  17.  case "$arg" in
  18.  --help | --hel | --he | --h)
  19.   cat <<EOF
  20. Usage: $progname [OPTION]... ROOT MODULE [TOPDIR]
  21.  
  22. Modify the repository root and module name of a currently checked-out
  23. CVS tree.
  24.  
  25.     --help           display this message and exit
  26.  
  27. ROOT is the new CVS repository root directory.
  28.  
  29. MODULE is the name of the module in the new CVS repository.
  30.  
  31. TOPDIR is the top of the checkout directory [default=MODULE].
  32.  
  33. Example: $progname :gserver:subversions.gnu.org:/home/cvs grub
  34. EOF
  35.   exit 0
  36.   ;;
  37.  
  38.  -*)
  39.   echo "$progname: unrecognized option \`$arg'" 1>&2
  40.   echo "$help" 1>&2
  41.   exit 1
  42.   ;;
  43.  
  44.  *)
  45.   if test -z "$ROOT"; then
  46.    ROOT="$arg"
  47.   elif test -z "$MODULE"; then
  48.    MODULE="$arg"
  49.   elif test -z "$TOPDIR"; then
  50.    TOPDIR="$arg"
  51.   else
  52.    echo "$progname: too many arguments" 1>&2
  53.    echo "$help" 1>&2
  54.    exit 1
  55.   fi
  56.   ;;
  57.  esac
  58. done
  59.  
  60. if test -z "$ROOT"; then
  61.  echo "$progname: you must specify a ROOT" 1>&2
  62.  echo "$help" 1>&2
  63.  exit 1
  64. fi
  65. if test -z "$MODULE"; then
  66.  echo "$progname: you must specify a MODULE" 1>&2
  67.  echo "$help" 1>&2
  68.  exit 1
  69. fi
  70. test -z "$TOPDIR" && TOPDIR="$MODULE"
  71.  
  72. echo "Converting \`$TOPDIR'"
  73. rep=`echo "$ROOT" | sed 's/.*://'`
  74. find "$TOPDIR" \( -name Repository -o -name Root \) -print | while read f; do
  75.  
  76.  case "$f" in
  77.  /*|./*|../*)
  78.   echo "$progname: TOPDIR must be a relative path from the top of the checkout"\
  79.  1>&2
  80.   echo "$help" 1>&2
  81.   exit 1
  82.   ;;
  83.  esac
  84.  
  85.  case "$f" in
  86.  */CVS/Root) echo "$ROOT" > $f ;;
  87.  */CVS/Repository)
  88.   r=`echo "$f" | sed "s%^$TOPDIR%%"`
  89.   r=`echo "$MODULE$r" | sed 's%/CVS/Repository$%%'`
  90.   echo "$rep/$r" > "$f"
  91.   ;;
  92.  esac
  93.  
  94. done
  95.  
  96. exit 0
  97.