Č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