#!/bin/csh -f # # This script updates the entire tree, saves the output in cvs.out, # and then separately prints out the files that had merge conflicts, # those that were merged successfully, and those that are new. # Note that this script uses "cvs update -P -d". # # USAGE: # cvsupdate ## normal run # cvsupdate -n ## run grep commands on output of the last run of cvs # cvsupdate -h ## usage information # set pstatus = 0 onintr cleanup alias usage 'echo "USAGE: $0:t [-h][-n]"; set pstatus = 1; goto cleanup' set doit = 1 set printnew = 0 unset options_done while ( !( $?options_done ) && ($#argv > 0)) switch ($argv[1]) case -h : usage case -n : set doit = 0; shift argv; breaksw case -new : set printnew = 1; shift argv; breaksw default : set options_done; breaksw endsw end if ($doit == 1) then /bin/mv -f cvs.out cvs.out.bak >&/dev/null cvs update -P -d >& cvs.out ## if ($status != 0) then ## echo "ERROR: CVS update failed: " ## cat cvs.out ## exit 1 endif else echo ""; echo "NOT UPDATING FILES. RESULTS FROM LAST RUN:"; echo "" endif echo ""; echo " FILES UPDATED:" grep '^U' cvs.out echo ""; echo " UPDATE CONFLICTS OCCURRED FOR THE FOLLOWING FILES:" grep '^C' cvs.out echo ""; echo " FILES REMOVED FROM YOUR DIRECTORY:" grep 'no longer in the repository' cvs.out echo ""; echo " FILES SUCCESSFULLY MERGED (or locally modified):" grep '^M' cvs.out | grep -v Merging echo ""; echo " NEW FILES AND DIRECTORIES:" if ($printnew != 0) then grep '^\?' cvs.out | & grep -v '\.bc' | grep -v Updating | grep -v cvsup | grep -v 'cvs.out' | grep -v gnumake.out | grep -v '\.mc$' | grep -v '\.s$' | grep -v '\.native' else echo '(USE "cvsupdate -n -new" TO SEE NEW FILES AND DIRECTORIES.)' endif echo "" #========================================================= # CODE TO BE EXECUTED IF INTERRUPT IS RECEIVED #========================================================= cleanup: exit($pstatus)