home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / cvs-1.8.7-src.tgz / tar.out / fsf / cvs / contrib / rcs2sccs.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1996-09-28  |  4KB  |  144 lines

  1. #! /bin/sh
  2. #
  3. #
  4. # OrigId: rcs2sccs,v 1.12 90/10/04 20:52:23 kenc Exp Locker: kenc
  5. # $Id: rcs2sccs.sh,v 1.1 1995/07/10 02:26:45 kfogel Exp $
  6.  
  7. ############################################################
  8. # Error checking
  9. #
  10. if [ ! -d SCCS ] ; then
  11.     mkdir SCCS
  12. fi
  13.  
  14. logfile=/tmp/rcs2sccs_$$_log
  15. rm -f $logfile
  16. tmpfile=/tmp/rcs2sccs_$$_tmp
  17. rm -f $tmpfile
  18. emptyfile=/tmp/rcs2sccs_$$_empty
  19. echo -n "" > $emptyfile
  20. initialfile=/tmp/rcs2sccs_$$_init
  21. echo "Initial revision" > $initialfile
  22. sedfile=/tmp/rcs2sccs_$$_sed
  23. rm -f $sedfile
  24. revfile=/tmp/rcs2sccs_$$_rev
  25. rm -f $revfile
  26. commentfile=/tmp/rcs2sccs_$$_comment
  27. rm -f $commentfile
  28.  
  29. # create the sed script
  30. cat > $sedfile << EOF
  31. s,;Id;,%Z%%M% %I% %E%,g
  32. s,;SunId;,%Z%%M% %I% %E%,g
  33. s,;RCSfile;,%M%,g
  34. s,;Revision;,%I%,g
  35. s,;Date;,%E%,g
  36. s,;Id:.*;,%Z%%M% %I% %E%,g
  37. s,;SunId:.*;,%Z%%M% %I% %E%,g
  38. s,;RCSfile:.*;,%M%,g
  39. s,;Revision:.*;,%I%,g
  40. s,;Date:.*;,%E%,g
  41. EOF
  42. sed -e 's/;/\\$/g' $sedfile > $tmpfile
  43. cp $tmpfile $sedfile
  44. ############################################################
  45. # Loop over every RCS file in RCS dir
  46. #
  47. for vfile in *,v; do
  48.     # get rid of the ",v" at the end of the name
  49.     file=`echo $vfile | sed -e 's/,v$//'`
  50.  
  51.     # work on each rev of that file in ascending order
  52.     firsttime=1
  53.     rlog $file | grep "^revision [0-9][0-9]*\." | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u +0 +1 +2 +3 +4 +5 +6 +7 +8 | sed -e 's/ /./g' > $revfile
  54.     for rev in `cat $revfile`; do
  55.         if [ $? != 0 ]; then
  56.         echo ERROR - revision
  57.         exit
  58.     fi
  59.         # get file into current dir and get stats
  60.         date=`rlog -r$rev $file | grep "^date: " | awk '{print $2; exit}' | sed -e 's/^19//'`
  61.         time=`rlog -r$rev $file | grep "^date: " | awk '{print $3; exit}' | sed -e 's/;//'`
  62.         author=`rlog -r$rev $file | grep "^date: " | awk '{print $5; exit}' | sed -e 's/;//'`
  63.     date="$date $time"
  64.         echo ""
  65.     rlog -r$rev $file | sed -e '/^branches: /d' -e '1,/^date: /d' -e '/^===========/d' -e 's/$/\\/' | awk '{if ((total += length($0) + 1) < 510) print $0}' > $commentfile
  66.         echo "==> file $file, rev=$rev, date=$date, author=$author"
  67.     rm -f $file
  68.         co -r$rev $file >> $logfile  2>&1
  69.         if [ $? != 0 ]; then
  70.         echo ERROR - co
  71.         exit
  72.     fi
  73.         echo checked out of RCS
  74.  
  75.         # add SCCS keywords in place of RCS keywords
  76.         sed -f $sedfile $file > $tmpfile
  77.         if [ $? != 0 ]; then
  78.         echo ERROR - sed
  79.         exit
  80.     fi
  81.         echo performed keyword substitutions
  82.     rm -f $file
  83.         cp $tmpfile $file
  84.  
  85.         # check file into SCCS
  86.         if [ "$firsttime" = "1" ]; then
  87.             firsttime=0
  88.         echo about to do sccs admin
  89.             echo sccs admin -n -i$file $file < $commentfile
  90.             sccs admin -n -i$file $file < $commentfile >> $logfile 2>&1
  91.             if [ $? != 0 ]; then
  92.             echo ERROR - sccs admin
  93.             exit
  94.         fi
  95.             echo initial rev checked into SCCS
  96.         else
  97.         case $rev in
  98.         *.*.*.*)
  99.         brev=`echo $rev | sed -e 's/\.[0-9]*$//'`
  100.         sccs admin -fb $file 2>>$logfile
  101.         echo sccs get -e -p -r$brev $file
  102.         sccs get -e -p -r$brev $file >/dev/null 2>>$logfile
  103.         ;;
  104.         *)
  105.         echo sccs get -e -p $file
  106.         sccs get -e -p $file >/dev/null 2>> $logfile
  107.         ;;
  108.         esac
  109.         if [ $? != 0 ]; then
  110.             echo ERROR - sccs get
  111.             exit
  112.         fi
  113.         sccs delta $file < $commentfile >> $logfile 2>&1
  114.             if [ $? != 0 ]; then
  115.             echo ERROR - sccs delta -r$rev $file
  116.             exit
  117.         fi
  118.             echo checked into SCCS
  119.     fi
  120.     sed -e "s;^d D $rev ../../.. ..:..:.. [^ ][^ ]*;d D $rev $date $author;" SCCS/s.$file > $tmpfile
  121.     rm -f SCCS/s.$file
  122.     cp $tmpfile SCCS/s.$file
  123.     chmod 444 SCCS/s.$file
  124.     sccs admin -z $file
  125.         if [ $? != 0 ]; then
  126.         echo ERROR - sccs admin -z
  127.         exit
  128.     fi
  129.     done
  130.     rm -f $file
  131. done
  132.  
  133.  
  134. ############################################################
  135. # Clean up
  136. #
  137. echo cleaning up...
  138. rm -f $tmpfile $emptyfile $initialfile $sedfile $commentfile
  139. echo ===================================================
  140. echo "       Conversion Completed Successfully"
  141. echo ===================================================
  142.  
  143. rm -f *,v
  144.