Admin/cvs-copy
author wenzelm
Sat Sep 02 21:44:31 2000 +0200 (2000-09-02)
changeset 9796 68a7ef151426
parent 9781 32378f1c2f17
child 12721 226fc0e2e7e3
permissions -rwxr-xr-x
tuned;
wenzelm@9781
     1
#!/bin/bash
wenzelm@9781
     2
#
wenzelm@9781
     3
# $Id$
wenzelm@9781
     4
#
wenzelm@9781
     5
# cvs-copy - make copy of CVS controlled directory hierarchy
wenzelm@9781
     6
#
wenzelm@9781
     7
wenzelm@9781
     8
## diagnostics
wenzelm@9781
     9
wenzelm@9781
    10
PRG=$(basename "$0")
wenzelm@9781
    11
THIS=$(cd $(dirname "$0"); echo "$PWD")
wenzelm@9781
    12
wenzelm@9781
    13
function usage()
wenzelm@9781
    14
{
wenzelm@9781
    15
  echo
wenzelm@9781
    16
  echo "Usage: $PRG FROMDIR TODIR"
wenzelm@9781
    17
  echo
wenzelm@9781
    18
  echo "  Make copy of CVS controlled directory hierarchy"
wenzelm@9781
    19
  exit 1
wenzelm@9781
    20
}
wenzelm@9781
    21
wenzelm@9781
    22
function fail()
wenzelm@9781
    23
{
wenzelm@9781
    24
  echo "$1" >&2
wenzelm@9781
    25
  exit 2
wenzelm@9781
    26
}
wenzelm@9781
    27
wenzelm@9781
    28
wenzelm@9781
    29
## process command line
wenzelm@9781
    30
wenzelm@9781
    31
[ "$#" -ne 2 ] && usage
wenzelm@9781
    32
wenzelm@9781
    33
FROMDIR="$1"; shift
wenzelm@9781
    34
TODIR="$1"; shift
wenzelm@9781
    35
wenzelm@9781
    36
wenzelm@9781
    37
## main
wenzelm@9781
    38
wenzelm@9781
    39
function copy ()
wenzelm@9781
    40
{
wenzelm@9781
    41
  local PREFIX="$1"
wenzelm@9781
    42
  local TYPE NAME REST
wenzelm@9781
    43
wenzelm@9781
    44
  [ -d "$FROMDIR/${PREFIX}CVS" ] || fail "Bad CVS directory '$FROMDIR/${PREFIX}.'"
wenzelm@9781
    45
wenzelm@9781
    46
  { cat "$FROMDIR/${PREFIX}CVS/Entries" || \
wenzelm@9781
    47
    fail "Cannot read '$FROMDIR/${PREFIX}CVS/Entries'"; } | \
wenzelm@9781
    48
  {
wenzelm@9781
    49
    ORIG_IFS="$IFS"
wenzelm@9781
    50
    IFS="/"
wenzelm@9781
    51
    while read TYPE NAME REST
wenzelm@9781
    52
    do
wenzelm@9781
    53
      if [ -n "$NAME" ]; then
wenzelm@9781
    54
        if [ "$TYPE" = D ]; then
wenzelm@9796
    55
          echo "X ${PREFIX}$NAME"
wenzelm@9781
    56
          mkdir -p "$TODIR/${PREFIX}$NAME" || fail "Bad directory '$TODIR/${PREFIX}$NAME'"
wenzelm@9781
    57
          copy "${PREFIX}$NAME/" || return "$?"
wenzelm@9781
    58
        else
wenzelm@9781
    59
          { [ ! -d "$TODIR/${PREFIX}$NAME" ] && \
wenzelm@9781
    60
            cp -af "$FROMDIR/${PREFIX}$NAME" "$TODIR/${PREFIX}$NAME"; } || \
wenzelm@9781
    61
          fail "Cannot install '$TODIR/${PREFIX}$NAME'"
wenzelm@9781
    62
        fi
wenzelm@9781
    63
      fi
wenzelm@9781
    64
    done
wenzelm@9781
    65
    IFS="$ORIG_IFS"
wenzelm@9781
    66
  }
wenzelm@9781
    67
}
wenzelm@9781
    68
wenzelm@9781
    69
mkdir -p "$TODIR" || fail "Bad directory '$TODIR'"
wenzelm@9781
    70
copy ""