Če želite namesto CVS uporabljati RCS, si lahko pomagate z naslednjimi lupinskimi skripti.
#!/bin/ksh # cotree.sh (lupinski skript za prevzemanje drevesa) # cotree.sh - Prevzame celotni imenik iz RCS # Uporaba : # Tako boste dobili vse imenike # unix> cotree.sh # # Tako pa boste dobili samo drevo iz enega imenika # unix> cotree.sh <ime imenika> # Oglejte si tudi cofiles.sh ############################################################### # Nastavljanje RCS (Revision Control System) # Namestite si programe RCS - dobili boste ukaze co, ci, rcslog # Naredite domači imenik za RCS, kamor boste odlagali datoteke # iz skladišča izvorne kode. Recimo, da se imenuje # $RCSDIR=/home/rcs_version_control # Nastavite vrednost spremenljivki okolja RCSDIR=/home/rcs_version_control # v datoteki $HOME/.profile. Npr. # export RCSDIR=/home/rcs_version_control # Pod $RCSDIR naredite imeniško strukturo in vanjo vločite vse vaše # datoteke z uporabo ci . Oglejte si 'man ci' # Sedaj naredite povezavo iz vašega domačega imenika do vašega projekta # pod $RCSDIR # cd $HOME # mkdir $HOME/myproject # cd $HOME/myproject # in poženite ta skript, da boste dobili vse datoteke in drevo imenikov # cotree.sh # Ta skript bo naredil celotno drevo izvorne kode v uporabnikov # domači imenik in bo imel tudi mehko povezavo do imenikov RCS. Vsak # uporabnik bo pognal ta skript v svojem domačem imeniku. ############################################################### check_out_directory() { # Korenski imenik RCS (revision control system) # npr. RCSDIR=/home/rcs_version_control RCSDIR=$1 DIRNAME=$2 # Ime podanega imenika mora obstajati v korenskem imeniku RCS if [ "$DIRNAME" = "" -o ! -d $RCSDIR/$DIRNAME ]; then print "\nImenik DIRNAME=$DIRNAME ne obstaja!!" print "\nPrekinjam program ... in končujem ...\n" exit fi mkdir -p $DIRNAME ln -s $RCSDIR/$DIRNAME/RCS $DIRNAME ( cd $DIRNAME # To ne bo uspelo v primeru ime datoteke=vzorec,vv # kar bo znotraj RCS enako RCS/vzorec,vv,v # ls RCS | cut -d',' -f1 | xargs co # Uporabite ujemanje za konec imena $, kot je spodaj - # Uporabite ls RCS/*, da se znebite imen ./ in ../ #ls RCS/* | cut -d'/' -f2 | sed -e's/,v$//g' | xargs co if [ -d RCS ]; then ls RCS/* | cut -d'/' -f2 | sed -e's/,v$//g' | \ while read ii do #echo "ii je : $ii" if [ -f "RCS/$ii,v" ]; then co $ii fi done fi ) } # Korenski imenik (revision control system) # npr. RCSDIR=/home/rcs_version_control if [ "$RCSDIR" = "" -o ! -d $RCSDIR ]; then print "\nImenik RCSDIR=$RCSDIR ne obstaja!!" print "\nPrekinjam program ... in ga končujem...\n" exit fi #echo "RCSDIR je : $RCSDIR" # Če je kot argument podano ime imenika, potem prevzemi vse # datoteke samo za ta imenik in končaj. if [ "$1" != "" ]; then (cd $RCSDIR; find $1 -type d -print ) | while read DIRNAME do #echo DIRNAME=$DIRNAME #DIRNAME=c_src #Korenski imenik RCS in ime imenika naj bosta relativna na rcs root dir tmpaa=` basename $DIRNAME ` if [ "$tmpaa" != "RCS" ]; then check_out_directory $RCSDIR $DIRNAME fi done else (cd $RCSDIR; find * -type d -print ) | while read DIRNAME do echo DIRNAME=$DIRNAME #DIRNAME=c_src # Korenski imenik RCS in ime imenika naj bosta relativna na rcs root dir tmpaa=` basename $DIRNAME ` if [ "$tmpaa" != "RCS" ]; then check_out_directory $RCSDIR $DIRNAME fi done fi
#!/bin/ksh # cofiles.sh (Lupinski skript za prevzemanje datotek) # cofiles.sh - Prevzemi vse datoteke v trenutnem imeniku iz RCS # Oglejte si tudi cotree.sh in 'man rcsclean' if [ ! -d RCS ]; then print "\nImenik RCS ne obstaja!!" print "\nPrekinjam program ... in ga končujem...\n" exit fi #echo "No. of args = " $# " and all args " $@ while true do print -n "\n\nPrevzamem vse datoteke s pravicami branja in pisanja (read-write)? <d/n> [n]: " read ans if [ "$ans" = "" -o "$ans" = "n" -o "$ans" = "N" ]; then ans="N" break elif [ "$ans" = "d" -o "$ans" = "D" ]; then ans="D" break else print "\nNapačen vnos! Poskusite znova!!" fi done #echo "The ans is : " $ans if [ $# -eq 0 ]; then # 'ls RCS' ne uspe v primeru ime_datoteke=vzorec,vv v RCS/vzorec,vv,v # ls RCS | cut -d',' -f1 | xargs co # Uporabite ujemanje, da se ime konča z $, kot je razvidno spodaj - if [ "$ans" = "D" ]; then ls RCS | sed -e's/,v$//g' | xargs co -l else ls RCS | sed -e's/,v$//g' | xargs co fi elif [ $# -eq 1 ]; then if [ -f "RCS/$1,v" ]; then # V tem primeru bo $1 kot dbalter.sql # in ne kot db*.sql.... #echo "One arg, no. of args = " $# " and all args " $@ if [ "$ans" = "D" ]; then co -l "$1" else co "$1" fi else # V primeru, ko je $1=db*.sql in v trenutnem imeniku # ni nobenega db*.sql #echo "No files... no. of args = " $# " and all args " $@ tmpaa="RCS/$1,v" # bo kot RCS/db*.sql,v ls $tmpaa | \ while read ii do #echo "ii is : $ii" if [ "$ans" = "D" ]; then co -l "$ii" else co "$ii" fi done fi else for ii in $@ do #echo "ii is : $ii,v" if [ "$ans" = "D" ]; then co -l "$ii" else co "$ii" fi done fi
#!/bin/ksh # ciall.sh (Lupinski skript za vlaganje datotek) # ciall.sh - Vloži vse datoteke v trenutnem imeniku v RCS # Ta skript je zelo koristen za vlaganje ogromnega števila novih datotek # v RCS. Prihrani čas, ker ni potrebno tipkati "opisa" za vsako datoteko. # Za datoteke, ki so že v RCS, izvede običajen ukaz check-in. # Pretvorba imen datotek v male črke: # 'tr', see 'man tr' #ls * | \ #while read ii #do # jj=`echo $ii | tr [A-Z] [a-z] ` # echo "ii is : $ii" # echo "jj is : $jj" # mv $ii $jj #done if [ ! -d RCS ]; then print "\nImenik RCS ne obstaja!!" print "\nImenik RCS bo narejen sedaj ...\n" mkdir RCS fi print "\n\nOpomba: To ni dnevniško sporočilo!" print "Prosim, vnesite opis (uporabil se bo za" print -n "vse vložene datoteke) : " read description # Izbira prune ne deluje, uporabi -maxdepth 0 #find * -prune -type f | # Število podanih izbir je nič ali več.... if [ $# -eq 0 ]; then listoffiles="*" else listoffiles="$@" fi # Izbira prune ne deluje, uporabi -maxdepth 0 #find $listoffiles -prune -type f | find $listoffiles -maxdepth 0 -type f | while read ii do #echo $ii if [ -f "RCS/$ii,v" ]; then #print "The file $ii already in RCS" ci -m"$description" $ii else #print "The file $ii is new file" ci $ii << EOF $description EOF fi done