⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sccs2rcs

📁 MSYS在windows下模拟了一个类unix的终端
💻
字号:
#! no -f## Sccs2rcs is a script to convert an existing SCCS# history into an RCS history without losing any of# the information contained therein.# It has been tested under the following OS's:#     SunOS 3.5, 4.0.3, 4.1#     Ultrix-32 2.0, 3.1## Things to note:#   + It will NOT delete or alter your ./SCCS history under any circumstances.##   + Run in a directory where ./SCCS exists and where you can#       create ./RCS##   + /usr/local/bin is put in front of the default path.#     (SCCS under Ultrix is set-uid sccs, bad bad bad, so#     /usr/local/bin/sccs here fixes that)##   + Date, time, author, comments, branches, are all preserved.##   + If a command fails somewhere in the middle, it bombs with#     a message -- remove what it's done so far and try again.#         "rm -rf RCS; sccs unedit `sccs tell`; sccs clean"#     There is no recovery and exit is far from graceful.#     If a particular module is hanging you up, consider#     doing it separately; move it from the current area so that#     the next run will have a better chance or working.#     Also (for the brave only) you might consider hacking#     the s-file for simpler problems:  I've successfully changed#     the date of a delta to be in sync, then run "sccs admin -z"#     on the thing.##   + After everything finishes, ./SCCS will be moved to ./old-SCCS.## This file may be copied, processed, hacked, mutilated, and# even destroyed as long as you don't tell anyone you wrote it.## Ken Cox# Viewlogic Systems, Inc.# kenstir@viewlogic.com# ...!harvard!cg-atla!viewlog!kenstir## Various hacks made by Brian Berliner before inclusion in CVS contrib area.#we'll assume the user set up the path correctly# for the Pmax, /usr/ucb/sccs is suid sccs, what a pain#   /usr/local/bin/sccs should override /usr/ucb/sccs thereset path = (/usr/local/bin $path)############################################################# Error checking#if (! -w .) then    echo "Error: ./ not writeable by you."    exit 1endifif (! -d SCCS) then    echo "Error: ./SCCS directory not found."    exit 1endifset edits = (`sccs tell`)if ($#edits) then    echo "Error: $#edits file(s) out for edit...clean up before converting."    exit 1endifif (-d RCS) then    echo "Warning: RCS directory exists"    if (`ls -a RCS | wc -l` > 2) then        echo "Error: RCS directory not empty        exit 1    endifelse    mkdir RCSendifsccs cleanset logfile = /tmp/sccs2rcs_$$_logrm -f $logfileset tmpfile = /tmp/sccs2rcs_$$_tmprm -f $tmpfileset emptyfile = /tmp/sccs2rcs_$$_emptyecho -n "" > $emptyfileset initialfile = /tmp/sccs2rcs_$$_initecho "Initial revision" > $initialfileset sedfile = /tmp/sccs2rcs_$$_sedrm -f $sedfileset revfile = /tmp/sccs2rcs_$$_revrm -f $revfile# the quotes surround the dollar signs to fool RCS when I check in this scriptset sccs_keywords = (\    '%W%[ 	]*%G%'\    '%W%[ 	]*%E%'\    '%W%'\    '%Z%%M%[ 	]*%I%[ 	]*%G%'\    '%Z%%M%[ 	]*%I%[ 	]*%E%'\    '%M%[ 	]*%I%[ 	]*%G%'\    '%M%[ 	]*%I%[ 	]*%E%'\    '%M%'\    '%I%'\    '%G%'\    '%E%'\    '%U%')set rcs_keywords = (\    '$'Id'$'\    '$'Id'$'\    '$'Id'$'\    '$'SunId'$'\    '$'SunId'$'\    '$'Id'$'\    '$'Id'$'\    '$'RCSfile'$'\    '$'Revision'$'\    '$'Date'$'\    '$'Date'$'\    '')############################################################# Get some answers from user#echo ""echo "Do you want to be prompted for a description of each"echo "file as it is checked in to RCS initially?"echo -n "(y=prompt for description, n=null description) [y] ?"set ans = $<if ((_$ans == _) || (_$ans == _y) || (_$ans == _Y)) then    set nodesc = 0else    set nodesc = 1endifecho ""echo "The default keyword substitutions are as follows and are"echo "applied in the order specified:"set i = 1while ($i <= $#sccs_keywords)#    echo '	'\"$sccs_keywords[$i]\"'	==>	'\"$rcs_keywords[$i]\"    echo "	$sccs_keywords[$i]	==>	$rcs_keywords[$i]"    @ i = $i + 1endecho ""echo -n "Do you want to change them [n] ?"set ans = $<if ((_$ans != _) && (_$ans != _n) && (_$ans != _N)) then    echo "You can't always get what you want."    echo "Edit this script file and change the variables:"    echo '    $sccs_keywords'    echo '    $rcs_keywords'else    echo "good idea."endif# create the sed scriptset i = 1while ($i <= $#sccs_keywords)    echo "s,$sccs_keywords[$i],$rcs_keywords[$i],g" >> $sedfile    @ i = $i + 1endonintr ERROR############################################################# Loop over every s-file in SCCS dir#foreach sfile (SCCS/s.*)    # get rid of the "s." at the beginning of the name    set file = `echo $sfile:t | sed -e "s/^..//"`    # work on each rev of that file in ascending order    set firsttime = 1    sccs prs $file | grep "^D " | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u +0 +1 +2 +3 +4 +5 +6 +7 +8 | sed -e 's/ /./g' > $revfile    foreach rev (`cat $revfile`)        if ($status != 0) goto ERROR        # get file into current dir and get stats	set year = `echo $date | cut -c3-4`	if ($year < 70) then		# Y2K Bug, change century to 20		set date = `echo $date | sed -e s/19/20/`	endif        set date = `sccs prs -r$rev $file | grep "^D " | awk '{printf("19%s %s", $3, $4); exit}'`        set author = `sccs prs -r$rev $file | grep "^D " | awk '{print $5; exit}'`        echo ""        echo "==> file $file, rev=$rev, date=$date, author=$author"        sccs edit -r$rev $file >>& $logfile        if ($status != 0) goto ERROR        echo checked out of SCCS        # add RCS keywords in place of SCCS keywords        sed -f $sedfile $file > $tmpfile        if ($status != 0) goto ERROR        echo performed keyword substitutions        cp $tmpfile $file        # check file into RCS        if ($firsttime) then            set firsttime = 0            if ($nodesc) then		echo about to do ci                echo ci -f -r$rev -d"$date" -w$author -t$emptyfile $file                 ci -f -r$rev -d"$date" -w$author -t$emptyfile $file < $initialfile >>& $logfile                if ($status != 0) goto ERROR                echo initial rev checked into RCS without description            else                echo ""                echo Enter a brief description of the file $file \(end w/ Ctrl-D\):                cat > $tmpfile                ci -f -r$rev -d"$date" -w$author -t$tmpfile $file < $initialfile >>& $logfile                if ($status != 0) goto ERROR                echo initial rev checked into RCS            endif        else            # get RCS lock	    set lckrev = `echo $rev | sed -e 's/\.[0-9]*$//'`	    if ("$lckrev" =~ [0-9]*.*) then		# need to lock the brach -- it is OK if the lock fails		rcs -l$lckrev $file >>& $logfile	    else		# need to lock the trunk -- must succeed                rcs -l $file >>& $logfile                if ($status != 0) goto ERROR	    endif            echo got lock            sccs prs -r$rev $file | grep "." > $tmpfile            # it's OK if grep fails here and gives status == 1            # put the delta message in $tmpfile            ed $tmpfile >>& $logfile <<EOF/COMMENTS1,.dwqEOF            ci -f -r$rev -d"$date" -w$author $file < $tmpfile >>& $logfile            if ($status != 0) goto ERROR            echo checked into RCS        endif        sccs unedit $file >>& $logfile        if ($status != 0) goto ERROR    end    rm -f $fileend############################################################# Clean up#echo cleaning up...mv SCCS old-SCCSrm -f $tmpfile $emptyfile $initialfile $sedfileecho ===================================================echo "       Conversion Completed Successfully"echo ""echo "         SCCS history now in old-SCCS/"echo ===================================================set exitval = 0goto cleanupERROR:foreach f (`sccs tell`)    sccs unedit $fendecho ""echo ""echo Danger\!  Danger\!echo Some command exited with a non-zero exit status.echo Log file exists in $logfile.echo ""echo Incomplete history in ./RCS -- remove itecho Original unchanged history in ./SCCSset exitval = 1cleanup:# leave log filerm -f $tmpfile $emptyfile $initialfile $sedfile $revfileexit $exitval

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -