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