Sledijo skripti okoli osnovnih ukazov CVS. Skripti so napisani za lupino Korn, ker je ta lupina vedno na voljo za vse vrste Unixa, vedno pa jih lahko prevedete v Bash ali Perl, če je to potrebno. Prilagodite si jih lahko po svojem okusu. V osnovi so to ukazi CVS, dodane pa so še nekatere značilnosti, ki jih naredijo specifične glede na lokacijo. Na primer, skript sedit omogoča zaklepanje, tako uporabniki vedo, da nekdo že ureja to datoteko. Seveda lahko uporabniki neposredno uporabljajo ukaze CVS in tako obidejo te skripte. Ti skripti prikazujejo, kako si lahko prilagodite CVS.
Skopirajte te skripte v imenik /usr/local/bin, ki naj bo v uporabnikovi spremenljivki okolja PATH.
sdif -r revizija1 -r revizija2 <ime datoteke> Razlike med dvema revizijama datoteke v CVS. Kliknite na sdif
OPOMBA: sdif ima samo en 'f', ker že obstaja drug Unixov ukaz 'sdiff'
Na primer:
cd $HOME;
sfreeze REVIZIJA_1_0 izvdrevo
******************************************************
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program sget
# Program za prevzem datoteke v načinu "samo za branje"iz CVS
cmdname=`basename $0`
Usage()
{
print "\nUporaba: $cmdname [-r stevilka_revizije/simbolicno_ime_oznake] <ime datoteke/imenika> "
print "Moznost -r je neobvezna "
print "Na primer - "
print " $cmdname -r 1.1 foo.cpp"
print " $cmdname foo.cpp "
print " $cmdname nek_imenik "
print "Izvlece po simbolicni oznaki revizije kot - "
print " $cmdname -r REVISION_1 some_directory "
print " "
exit
}
# Ukaz getopt ne bo vec podprt v naslednji izdaji.
# Namesto njega uporabljamo getopts.
while getopts r: ii
do
case $ii in
r) FLAG1=$ii; OARG1="$OPTARG";;
?) Usage; exit 2;;
esac
done
shift ` expr $OPTIND - 1 `
#echo FLAG1 = $FLAG1 , OARG1 = $OARG1
if [ $# -lt 1 ]; then
Usage
fi
bkextn=sget_bak
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print "\nNapaka: \$HOME ni nastavljen!\n"
exit
fi
# Preveri, ali datoteka ze obstaja ....
if [ -f $1 ]; then
user_perms=" "
group_perms=" "
other_perms=" "
user_perms=`ls -l $1 | awk '{print $1 }' | cut -b3-3 `
group_perms=`ls -l $1 | awk '{print $1 }' | cut -b6-6 `
other_perms=`ls -l $1 | awk '{print $1 }' | cut -b9-9 `
if [ "$user_perms" = "w" -o "$group_perms" = "w" \
-o "$other_perms" = "w" ]; then
print "\nNapaka: Datoteko se sme spreminjati. Opuscam $cmdname ......"
print " Naredite rezervno kopijo, izvedite scommit ali izbrisite datoteko in"
print " poskusite s $cmdname znova\n"
exit
fi
fi
cur_dir=`pwd`
#echo $cur_dir
len=${#hme}
len=$(($len + 2))
#echo $len
subdir=` echo $cur_dir | cut -b $len-2000 `
#echo $subdir
if [ "$subdir" = "" ]; then
fdname=$1
else
fdname=$subdir"/"$1
fi
# Prestavi datoteko
touch $1 2>/dev/null
\mv -f $1 $1.$bkextn
# Naredi podlupino
(
cd $hme
#echo $fdname
# Uporabi moznost -A za izbris vseh zastavic
if [ "$FLAG1" = "" ]; then
cvs -r checkout -A $fdname
else
cvs -r checkout -A -$FLAG1 $OARG1 $fdname
fi
)
#pwd
if [ -f $1 ]; then
print "\nPridobljena kopija datoteke $fdname samo za branje."
print "Dokoncan $cmdname"
#print "\nNamig (Uporaba): $cmdname <ime datoteke/imenika> \n"
fi
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program sedit
# Program za prevzem datotek iz CVS v načinu branje in pisanje z zaklepanjem
cmdname=`basename $0`
Usage()
{
# print "\nUporaba: $cmdname [-r stevilka_revizije] [-F] <ime_datoteke>"
# print "Moznosti -r, -F sta neobvezni"
# print "Moznost -F prisili k urejanju tudi, ce je datoteko "
# print "nekdo ze zaklenil"
print "\nUporaba: $cmdname [-r stevilka_revizije] <ime_datoteke>"
print "Moznost -r je neobvezna "
print "Na primer - "
print " $cmdname -r 1.1 foo.cpp"
print " $cmdname foo.cpp "
# print " $cmdname -F foo.cpp "
print " "
}
# Ukaz getopt ne bo vec podprt v naslednji izdaji.
# Namesto njega uporabimo getopts.
#while getopts r:F ii
while getopts r: ii
do
case $ii in
r) FLAG1=$ii; OARG1="$OPTARG";;
# F) FLAG2=$ii; OARG2="$OPTARG";;
?) Usage; exit 2;;
esac
done
shift ` expr $OPTIND - 1 `
#echo FLAG1 = $FLAG1 , OARG1 = $OARG1
if [ $# -lt 1 ]; then
Usage
exit
fi
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print "\nNapaka: \$HOME ni nastavljen!\n"
exit
fi
bkextn=sedit_bak
cur_dir=`pwd`
#echo $cur_dir
len=${#hme}
len=$(($len + 2))
#echo $len
subdir=` echo $cur_dir | cut -b $len-2000 `
#echo $subdir
if [ "$subdir" = "" ]; then
fdname=$1
else
fdname=$subdir"/"$1
fi
# Ce je datoteko ze kdo prevzel....
cvs_root=` echo $CVSROOT | cut -f1 -d' ' `
if [ "$cvs_root" = "" ]; then
print "\nNapaka: \$CVSROOT ni nastavljen!\n"
exit
fi
cldir=$CVSROOT/$subdir/Locks
mkdir $cldir 2>/dev/null
rcsfile=$CVSROOT/$subdir/$1,v
#echo $rcsfile
if [ ! -e $rcsfile ]; then
print "\nNapaka: Datoteke $1 ni v skladiscu CVS!\n"
exit
fi
# Dobi stevilko zadnje revizije datoteke....
# Uporabi tmpfile, ker arg ni mogoce nastavljati znotraj podlupine
tmpfile=$hme/sedit-lock.tmp
\rm -f $tmpfile 2>/dev/null
if [ "$FLAG1" = "" ]; then
(
cd $hme
cvs log $fdname | head -6 | grep head: | awk '{print $2}' > $tmpfile
)
OARG1=`cat $tmpfile`
\rm -f $tmpfile 2>/dev/null
fi
lockfile=$cldir/$1-$OARG1
#if [ -e $lockfile -a "$FLAG2" = "" ]; then
if [ -e $lockfile ]; then
print "\nNapaka: Datoteka $1 revizije $OARG1 je ze zaklenjena!"
aa=` ls -l $lockfile | awk '{print "Zaklenil jo je razvijalec z Unix uporabniskim imenom " $3}' `
print $aa
print "Ta razvijalec naj izvede scommit ALI sunlock, da jo bo odklenil"
print " "
# print "Uporabite lahko tudi moznost -F, da prisilite datoteko k urejanju,"
# print "tudi ce jo je kdo drug zaklenil. Toda najprej se morate"
# print "z njim pogovoriti, da lahko z datoteko delata hkrati."
# print "Na primer - ta moznost je koristna, ce delate na loceni"
# print "C++ funkciji v datoteki, ki ne moti ostalih razvijalcev"
# print " "
exit
fi
# Sedaj dobi kopijo samo za branje....
if [ ! -e $1 ]; then
(
cd $hme
cvs -r checkout $fdname 1>/dev/null
)
fi
# Preveri, ali datoteka ze obstaja....
if [ -f $1 ]; then
user_perms=" "
group_perms=" "
other_perms=" "
user_perms=`ls -l $1 | awk '{print $1 }' | cut -b3-3 `
group_perms=`ls -l $1 | awk '{print $1 }' | cut -b6-6 `
other_perms=`ls -l $1 | awk '{print $1 }' | cut -b9-9 `
if [ "$user_perms" = "w" -o "$group_perms" = "w" \
-o "$other_perms" = "w" ]; then
print "\nNapaka: Datoteko se sme spreminjati. Opuscam $cmdname ......"
print " Narediti morate rezervno kopijo, izvesti scommit ali zbrisati datoteko in"
print " poskusiti znova s $cmdname\n"
exit
fi
#print "\nOpomba: Datoteka $1 je samo za branje."
#print "Zato jo prestavljam v $1.$bkextn ....\n"
\mv -f $1 $1.$bkextn
chmod 444 $1.$bkextn
elif [ -d $1 ]; then
print "\nNapaka: $1 je imenik in ne datoteka. Opuscam $cmdname ....\n"
exit
fi
# Naredi podlupino
print "\nSedaj dobivam datoteko $1 iz skladisca CVS ...\n"
(
cd $hme
#echo $fdname
# Uporabljam moznost -A za brisanje oznake in da dobim
# razlicico glavne revizije
if [ "$FLAG1" = "" ]; then
cvs -w checkout -A $fdname
else
cvs -w checkout -A -$FLAG1 $OARG1 $fdname
fi
)
if [ -e $1 ]; then
touch $lockfile
fi
#pwd
print "\nKoncano s $cmdname"
#print "\nNamig (Uporaba): $cmdname <filename> \n"
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program scommit
# Program za udejanjenje sprememb in vnos datotek v CVS
cmdname=`basename $0`
Usage()
{
print "\nUporaba: $cmdname [-r stevilka_revizije] <ime_datoteke>"
print "Moznost -r je neobvezna"
print "Na primer - "
print " $cmdname -r 1.1 foo.cpp"
print " $cmdname foo.cpp "
print " "
}
# Ukaz getopt v naslednji izdaji ne bo vec podprt.
# Namesto njega uporabljam getopts.
while getopts r: ii
do
case $ii in
r) FLAG1=$ii; OARG1="$OPTARG";;
?) Usage; exit 2;;
esac
done
shift ` expr $OPTIND - 1 `
#echo FLAG1 = $FLAG1 , OARG1 = $OARG1
if [ $# -lt 1 ]; then
Usage
exit 2
fi
if [ -d $1 ]; then
Usage
exit 2
fi
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print "\nNapaka: \$HOME ni nastavljen!\n"
exit
fi
# Poisci podimenik
cur_dir=`pwd`
#echo $cur_dir
len=${#hme}
len=$(($len + 2))
#echo $len
subdir=` echo $cur_dir | cut -b $len-2000 `
#echo $subdir
if [ "$subdir" = "" ]; then
fdname=$1
else
fdname=$subdir"/"$1
fi
# Ce je datoteko ze kdo prevzel....
cvs_root=` echo $CVSROOT | cut -f1 -d' ' `
if [ "$cvs_root" = "" ]; then
print "\nNapaka: \$CVSROOT ni nastavljen!\n"
exit
fi
cldir=$CVSROOT/$subdir/Locks
mkdir $cldir 2>/dev/null
# Ugotovi delovno stevilko revizije datoteke....
# Uporabi tmpfile, ker arg ne moremo nastaviti v podlupini
tmpfile=$hme/sedit-lock.tmp
\rm -f $tmpfile 2>/dev/null
if [ "$FLAG1" = "" ]; then
(
cd $hme
cvs status $fdname 2>/dev/null | grep "Working revision:" | awk '{print $3}' >$tmpfile
)
OARG1=`cat $tmpfile`
\rm -f $tmpfile 2>/dev/null
fi
if [ "$OARG1" = "" ]; then
print "Datoteka $fdname je NOVA in je ni v skladiscu CVS"
else
lockfile=$cldir/$1-$OARG1
if [ -e $lockfile ]; then
# Preveri, ali si lastnik revizije...
aa=` ls -l $lockfile | awk '{print $3}' `
userid=`id | cut -d'(' -f2 | cut -d')' -f1 `
if [ "$aa" != "$userid" ]; then
print " "
print "Datoteke $fdname niste zaklenili vi!!"
print "Zaklenil jo je uporabnik z up. imenom $aa, vi pa ste $userid"
# print "Ce delate hkrati z drugim razvijalcem"
# print "in ste pri sedit uporabili moznost -F,"
print "morate pocakati, dokler drug razvijalec ne"
print "izvede scommit ali sunlock"
print "Opuscam $cmdname ...."
print " "
exit 2
fi
else
if [ -f $CVSROOT/$subdir/$1,v ]; then
print "Niste zaklenili datoteke $fdname s sedit!!"
print "Opuscam $cmdname ...."
exit 2
else
print "\nDatoteke $fdname se ni v skladiscu CVS!!"
print "Morali bi izvesti sadd na $fdname ...."
fi
fi
fi
if [ -d $1 ]; then
Usage
exit 2
# Za zdaj ne dovoli udejanjanja imenikov ...
#cvs commit
else
cvs commit $1
exit_status=$?
fi
if [ $exit_status -eq 0 ]; then
print "\nDokoncal $cmdname. $cmdname uspesen"
#print "\nNamig (Uporaba): $cmdname <ime_datoteke/imenika>\n"
fi
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program supdate
# Program za posodobitev datoteke iz CVS v nacinu beri/pisi
cmdname=`basename $0`
if [ $# -lt 1 ]; then
print "\nUporaba: $cmdname <filename>"
exit
fi
# Preveri, ali datoteka ze obstaja....
if [ $# -gt 0 -a -f $1 ]; then
user_perms=" "
group_perms=" "
other_perms=" "
user_perms=`ls -l $1 | awk '{print $1 }' | cut -b3-3 `
group_perms=`ls -l $1 | awk '{print $1 }' | cut -b6-6 `
other_perms=`ls -l $1 | awk '{print $1 }' | cut -b9-9 `
if [ "$user_perms" = "w" -o "$group_perms" = "w" \
-o "$other_perms" = "w" ]; then
while :
do
print "\n$cmdname bo naredil rezervno kopijo delovne datoteke"
print "$1 v $1.supdate_bak pred kakrsnokoli spojitvijo"
print "Ali ste prepricani, da zelite pripojiti spremembe iz"
print -n "skladisca CVS v vaso delovno datoteko ? <d/n> [n]: "
read ans
if [ "$ans" = "d" -o "$ans" = "D" ]; then
if [ -f $1.supdate_bak ]; then
print "\nOpozorilo: Datoteka $1.supdate_bak ze obstaja!!"
print "Prosim preglejte datoteko $1.supdate_bak in jo izbrisite"
print "in potem poskusite znova s $cmdname "
print "Opuscam $cmdname ...."
exit
else
cp $1 $1.supdate_bak
break
fi
elif [ "$ans" = "n" -o "$ans" = "N" -o "$ans" = "" -o "$ans" = " " ]; then
exit
fi
done
fi
fi
if [ -d $1 ]; then
print "\nPosodobitev imenika je onemogocena ker cvs update"
print "spaja spremembe iz skladisca v vas delovni imenik."
print "Zato podajte ime datoteke za posodobitev - kot je prikazano spodaj: "
print " Uporaba: $cmdname <ime_datoteke>"
exit
# cvs update
else
cvs update $1
fi
print "\nKoncan $cmdname. $cmdname uspesen"
#print "\nNamig (Uporaba): $cmdname <ime datoteke/imenika>\n"
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program sunlock
# Program za odklepanje datotek, za sprostitev ključavnice, ki jo naredi sedit
cmdname=`basename $0`
Usage()
{
print "\nUporaba: $cmdname [-r stevilka_revizije] <ime_datoteke>"
print " Moznost -r je neobvezna"
print "Na primer - "
print " $cmdname -r 1.1 foo.cpp"
print " $cmdname foo.cpp "
print " "
}
# Ukaz getopt v naslednji izdaji ne bo vec podprt.
# Namesto njega uporabljam getopts.
while getopts r: ii
do
case $ii in
r) FLAG1=$ii; OARG1="$OPTARG";;
?) Usage; exit 2;;
esac
done
shift ` expr $OPTIND - 1 `
if [ $# -lt 1 ]; then
Usage
exit
fi
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print "\nNapaka: \$HOME ni nastavljen!!\n"
exit
fi
cur_dir=`pwd`
#echo $cur_dir
len=${#hme}
len=$(($len + 2))
#echo $len
subdir=` echo $cur_dir | cut -b $len-2000 `
#echo $subdir
if [ "$subdir" = "" ]; then
fdname=$1
else
fdname=$subdir"/"$1
fi
# Ce je datoteko ze kdo prevzel....
cvs_root=` echo $CVSROOT | cut -f1 -d' ' `
if [ "$cvs_root" = "" ]; then
print "\nNapaka: \$CVSROOT ni nastavljen!!\n"
exit
fi
cldir=$CVSROOT/$subdir/Locks
rcsfile=$CVSROOT/$subdir/$1,v
#echo $rcsfile
if [ ! -e $rcsfile ]; then
print "\nNapaka: datoteke $1 ni v CVS skladiscu!!\n"
exit
fi
# Dobivam stevilko zadnje revizije datoteke....
# Uporabljam tmpfile, ker argumentov ni mogoce nastavljati v podlupini
tmpfile=$hme/sedit-lock.tmp
\rm -f $tmpfile 2>/dev/null
if [ "$FLAG1" = "" ]; then
(
cd $hme
cvs log $fdname | head -6 | grep head: | awk '{print $2}' > $tmpfile
)
OARG1=`cat $tmpfile`
\rm -f $tmpfile 2>/dev/null
fi
lockfile=$cldir/$1-$OARG1
#echo lockfile is : $lockfile
if [ ! -e $lockfile ]; then
print "\nDatoteke $1 revizije $OARG1 ni nihce zaklenil"
print " "
exit
fi
ans=""
while :
do
print "\n\n**************************************************************"
print "OPOZORILO: $cmdname bo sprostil kljucavnico in omogocil ostalim"
print " razvijalcem, da urejajo to datoteko. Svetujem, da"
print " shranite spremembe z ukazom scommit"
print "************************************************************"
print -n "\nAli ste prepricani, da zelite odkleniti datoteko <d/n>? [n]: "
read ans
if [ "$ans" = "" -o "$ans" = " " -o "$ans" = "n" -o "$ans" = "N" ]; then
print "\nOpuscam $cmdname ...."
exit
fi
if [ "$ans" = "d" -o "$ans" = "D" ]; then
print "\n\n\n\n\n "
print "POZOR: lahko izgubite vse spremembe v datoteki!!"
print -n "Ali res zelite odklenniti datoteko <d/n>? [n]: "
read ans
if [ "$ans" = "d" -o "$ans" = "D" ]; then
break
else
exit
fi
else
print "\n\nNapacen vnos. Poskusite znova..."
sleep 1
fi
done
if [ -e $lockfile ]; then
\rm -f $lockfile
print "\nKoncan $cmdname"
else
print "\nDatoteke $1 ni odklenil nihce"
print " "
fi
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program slist
# Program za izpis vseh datotek iz CVS, ki se urejajo
#cmdname=`basename $0`
#echo "stevilo parametrov : " $#
#echo "vsi argumenti: " $@
recurse_flag=""
if [ "$1" = "" ]; then
dir=.
recurse_flag=""
else
dir=$@
recurse_flag=" -prune "
fi
FOUT=slist_temporary_file.out
\rm -f $FOUT
find $dir $recurse_flag -type f -exec ls -ltr {} \; \
| grep -v "/CVS/" \
| grep ^\-rw \
| grep -v \\.o \
| grep -v \\.log \
| grep -v \\.out \
| grep -v \\.pid \
| awk '{ if ($NF != "tags") print $0 }' \
| awk '{ if ($NF != "a.out") print $0 }' \
| awk '{ if ($NF != "core") print $0 }' \
| awk '{ print $NF }' > $FOUT
aa=`cat $FOUT`
\rm -f $FOUT
for ii in $aa ; do
ftype=" "
ftype=`file $ii | awk '{print $2 }' `
# find . -type f -exec file {} \;
# 1)ELF 2)ukazi 3)[nt]roff, 4)c 5)anglescina 6)izvrsilna
# 7)ascii 8)tekoca 9)prazna
# ELF so prevedeni programi, lib.a so tekoce dat.
#
if [ "$ftype" = "ascii" -o "$ftype" = "commands" \
-o "$ftype" = "[nt]roff," -o "$ftype" = "c" -o "$ftype" = "data" \
-o "$ftype" = "English" -o "$ftype" = "executable" ]; then
pcfile=` echo $ii | cut -d'.' -f1`
pcfile=${pcfile}".pc"
if [ ! -f $pcfile ]; then
ls -l $ii
else
if [ "$ii" = "$pcfile" ]; then
ls -l $ii
fi
fi
fi
done;
#| grep -v ^\-rwx \
#ls -l | grep ^\-rw | grep -v \\.o
#ls -l | grep ^\-rw | grep -v \\.o | awk '{ if ($NF != "tags") print $0 }'
#ls -l | grep ^\-rw | grep -v ^\-rwx | grep -v \\.o | awk '{ if ($NF != "tags") print $0 }' | awk '{ if ($NF != "core") print $0 }'
#print "\nKoncan $cmdname. $cmdname uspesen"
#print "\nNamig (Uporaba): $cmdname <ime_datoteke>\n"
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program sinfo
# Program za pridobitev statusa datotek v delovnem imeniku
cmdname=`basename $0`
if [ $# -lt 1 ]; then
print "\nUporaba: $cmdname [ime datoteke/imenika] "
print "Na primer - "
print " $cmdname foo.cpp"
print " $cmdname nek_imenik "
print " "
exit
fi
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print "\nNapaka: \$HOME ni nastavljen!!\n"
exit
fi
tmpfile=$hme/cvs_sinfo.tmp
rm -f $tmpfile
cur_dir=`pwd`
#echo $cur_dir
len=${#hme}
len=$(($len + 2))
#echo $len
subdir=` echo $cur_dir | cut -b $len-2000 `
#echo $subdir
if [ "$subdir" = "" ]; then
fdname=$1
else
fdname=$subdir"/"$1
fi
# Naredi podlupino
if [ -f $1 ]; then
(
cd $hme
clear
cvs status $fdname
)
elif [ -d $1 ]; then
(
cd $hme
clear
echo " " >> $tmpfile
echo " ****************************************" >> $tmpfile
echo " Celoten status imenika >> $tmpfile
echo " ****************************************" >> $tmpfile
cvs release $fdname 1>>$tmpfile 2>>$tmpfile << EOF
Y
EOF
echo "\n -------------------------------\n" >> $tmpfile
aa=`cat $tmpfile | grep ^"M " | awk '{print $2}' `
for ii in $aa
do
jj="(cd $hme; cvs status $subdir/$ii );"
echo $jj | /bin/sh \
| grep -v Sticky | awk '{if (NF != 0) print $0}' \
1>>$tmpfile 2>>$tmpfile
done
cat $tmpfile | grep -v ^? | grep -v "Are you sure you want to release" \
| less
rm -f $tmpfile
)
else
print "\nArgument $1 ni datoteka ali imenik"
exit
fi
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program slog
# Program za izpis zgodovine datoteke v CVS
cmdname=`basename $0`
if [ $# -lt 1 ]; then
print "\nUporaba: $cmdname <ime_datoteke> \n"
exit
fi
# Preveri, ali datoteka ze obstaja....
if [ ! -f $1 ]; then
print "\nNapaka: $1 NI datoteka. Opuscam $cmdname ......"
exit
fi
cvs log $1 | /usr/local/bin/less
print "\nKoncan $cmdname. $cmdname uspesen"
#print "\nNamig (Uporaba): $cmdname <ime_datoteke>\n"
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program sdif
# Program za prikaz razlik med delovno datoteko in kopijo v CVS
cmdname=`basename $0`
Usage()
{
print "\nUporaba: $cmdname <ime_datoteke> "
print "$cmdname -r<revizija1> -r<revizija2> <ime_datoteke> \n"
exit
}
FLAG1=""
FLAG2=""
OARG1=""
OARG2=""
# Ukaz getopt v naslednji izdaji ne bo vec podprt.
# Namesto njega uporabljam getopts.
while getopts r:r: ii
do
case $ii in
r)
if [ "$FLAG1" = "" ]; then
FLAG1=$ii;
OARG1="$OPTARG"
else
FLAG2=$ii;
OARG2="$OPTARG"
fi
;;
?) Usage; exit 2;;
esac
done
shift ` expr $OPTIND - 1 `
if [ "$FLAG2" = "" ]; then
FLAG2=r
OARG2=HEAD
fi
if [ "$FLAG1" = "" ]; then
cvs diff -r HEAD $1 | less
else
cvs diff -$FLAG1 $OARG1 -$FLAG2 $OARG2 $1 | less
fi
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# test
# CVS program sadd
# Program za dodajanje datotek v CVS
cmdname=`basename $0`
if [ $# -lt 1 ]; then
print "\nUporaba: $cmdname <ime datoteke/imenika> \n"
exit
fi
# Preveri, ali datoteka obstaja ....
if [ -f $1 ]; then
cvs add $1
exit
fi
if [ ! -d $1 ]; then
print "\nArgument $1 ni niti datoteka niti imenik!"
print "Uporaba: $cmdname <ime datoteke/imenika> \n"
exit
fi
# Argument je ime imenika .....
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print "\nNapaka: \$HOME ni nastavljen!!\n"
exit
fi
cur_dir=`pwd`
len=${#hme}
len=$(($len + 2))
subdir=` echo $cur_dir | cut -b $len-2000 `
if [ "$subdir" = "" ]; then
if [ -d $CVSROOT/$1 ]; then
print "\nImenik $1 ze obstaja v CVSROOT"
exit
else
# Dodaj izvirni imenik $CVSROOT
if [ "$2" = "" -o "$3" = "" ]; then
print "\nUporaba: $cmdname <imenik> <oznaka izdelovalca> <oznaka izdaje>"
print "Na primer - "
print " $cmdname foo_imenik V_1_0 R_1_0"
exit
else
(
cd $1;
cvs import $1 $2 $3
)
fi
fi
else
# Ce trenutni imenik obstaja v CVS...
if [ -d $CVSROOT/$subdir ]; then
if [ -d $CVSROOT/$subdir/$1 ]; then
print "\nImenik $1 je ze v CVS skladiscu!"
else
cvs add $1
fi
else
print "\nPodimenik $subdir ne obstaja v CVS"
print "Najprej morate dodati $subdir v CVS"
exit
fi
fi
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program sdelete
# Program za brisanje datotek iz CVS
cmdname=`basename $0`
if [ $# -lt 1 ]; then
print "\nUporaba: $cmdname <ime_datoteke> \n"
exit
fi
# Preveri, ali datoteka ne obstaja....
if [ ! -f $1 ]; then
# Poskusi jo dobiti iz CVS
sget $1
if [ ! -f $1 ]; then
print "\nNapaka: $1 NE obstaja v skladiscu CVS. Opuscam $cmdname ......"
exit
fi
fi
bkextn=cvs_sdelete_safety_backup
\mv -f $1 $1.$bkextn
cvs remove $1
print "\nUkaz sdelete odstrani datoteko iz skladisca CVS"
print "in jo arhivira v imenik CVS Attic. V primeru, da to datoteko"
print "potrebujete v prihodnosti, se posvetujte s CVS administratorjem"
print " "
print "\nKoncan $cmdname. $cmdname uspesen"
#print "\nNamig (Uporaba): $cmdname <ime_datoteke>\n"
\mv -f $1.$bkextn $1
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
# CVS program sfreeze
# Program za zamrznitev in odrez izdaje izvornega drevesa iz CVS
cmdname=`basename $0`
Usage()
{
print "\nUporaba: $cmdname simbolicna_oznaka <ime imenika> "
print "\nNa primer: - "
print " cd \$HOME"
print " $cmdname REVIZIJA_1 miza"
print "Za prikaz seznama revizij izvedite -"
print "slog <ime_datoteke>, zapomnite si simbolicno ime in izvedite -"
print "cvs history -T"
print "\nDa naredite stranski poganjek iz glavnega debla, uporabite"
print "moznosti -b in -r, ki naredita oznako kot oznako veje. To je"
print "koristno za izdelavo 'krp' prej izdane programske opreme"
print "Na primer :- "
print " cd \$HOME"
print " cvs rtag -b -r REVIZIJA_1 REVIZIJA_1_1 miza"
print " "
# print "\nInformacija o oznaki se nahaja v \$CVSROOT/CVSROOT/taginfo,v"
# print "Lahko izvedete - cd $HOME; sget CVSROOT"
# print "da vidite to datoteko"
exit
}
# Ukaz getopt ne bo vec podprt v naslednji izdaji.
# Namesto njega uporabljam getopts.
#while getopts r: ii
#do
# case $ii in
# r) FLAG1=$ii; OARG1="$OPTARG";;
# ?) Usage; exit 2;;
# esac
#done
#shift ` expr $OPTIND - 1 `
#echo FLAG1 = $FLAG1 , OARG1 = $OARG1
if [ $# -lt 2 ]; then
Usage
fi
if [ ! -d $2 ]; then
print "\nNapaka: drugi argument $2 ni imenik!"
print " Opuscam $cmdname...."
print " "
exit
fi
# cvs rtag symbolic_tag <ime imenika>
cvs rtag $1 $2
print "\nKoncan $cmdname. $cmdname uspesen"
Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib
Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.
#!/bin/ksh
################################################################
# Vzorcni program za vnasanje drevesa imenikov (recimo SAMP) v CVS
# Upostevajte, da ce imenika SAMP ni v CVS, potem morate uporabiti ukaz
# sadd in -
# cd SAMP; cvs import SAMP V_1_0 R_1_0
# Ko pozenete ta program, izvedite -
# cd $HOME/foo/SAMP
# cvs import foo/SAMP V1_0 Rev_1_0
################################################################
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print "\nNapaka: \$HOME ni nastavljen!!\n"
exit
fi
sampdir=$hme/foo/SAMP
check_out_files()
{
# Sedaj si izposodi datoteke
tmp2f=$hme/tmp2.baksamp.sh
cd $hme
\rm -rf foo/SAMP
cvs -w checkout foo/SAMP
cd $hme/foo
find SAMP -type f -print > $tmp2f
cd $hme
for ii in `cat $tmp2f`
do
iidir=`dirname $ii`
iifile=`basename $ii`
if [ "$iifile" = "Root" -o "$iifile" = "Repository" -o "$iifile" = "Entries" ]; then
continue
fi
jjdir=` echo $iidir | cut -d'/' -f2-1000 `
cp $hme/foo/SAMP.tobe/$jjdir/$iifile $hme/foo/$iidir/$iifile
echo "cp $hme/foo/SAMP.tobe/$jjdir/$iifile $hme/foo/$iidir/$iifile "
cvs add foo/$iidir/$iifile
done
print
print "================================================"
print " Sedaj pozenite cvs commit foo/SAMP"
print " Zatem izvedite - "
print " cd foo; rm -rf SAMP"
print " in dobite svezo kopijo, sget SAMP"
print " S slog filename.samp preverite novo revizijo"
print "================================================"
print
}
check_out_files