2 CVS RCS HOWTO 原始程式码版本控制系统( 五 )



#!/bin/ksh
#;CVS;program;sunlock
#;Program;to;unlock;the;file;to;release;the;lock;done;by;sedit

cmdname=`basename;$0`

Usage()
{
print;"nUsage:;$cmdname;[-r;revision_number];"
print;";The;options;-r;is;optional;"
print;"For;example;-;"
print;";$cmdname;-r;1.1;foo.cpp"
print;";$cmdname;foo.cpp;"
print;";"
}

#;Command;getopt;will;not;supported;in;next;major;release.;
#;Use;getopts;instead.;
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;"nError:;$HOME;is;not;set!!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

#;If;file;is;already;checked;out;by;another;user....
cvs_root=`;echo;$CVSROOT;|;cut;-f1;-d";";;`
if;[;"$cvs_root";=;"";];;then
print;"nError:;$CVSROOT;is;not;set!!n"
exit
fi
cldir=$CVSROOT/$subdir/Locks
rcsfile=$CVSROOT/$subdir/$1,v
#echo;$rcsfile

if;[;!;-e;$rcsfile;];;then
print;"nError:;File;$1;does;not;exist;in;CVS;repository!!n"
exit
fi

#;Get;the;tip;revision;number;of;the;file....
#;Use;tmpfile;as;the;arg;cannot;be;set;inside;the;sub-shell
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;"nFile;$1;revision;$OARG1;is;NOT;locked;by;anyone"
print;";"
exit;
fi

ans=""
while;:
do
print;"nn***************************************************"
print;"WARNING:;$cmdname;will;release;lock;and;enable;other"
print;";developers;to;edit;the;file.;It;is;advisable"
print;";to;save;your;changes;with;scommit;command"
print;"***************************************************"
print;-n;"nAre;you;sure;you;want;to;unlock;the;file;?;[n]:;"
read;ans
if;[;"$ans";=;"";-o;"$ans";=;";";-o;"$ans";=;"n";-o;"$ans";=;"N";];;then
print;"nAborting;$cmdname;...."
exit
fi
if;[;"$ans";=;"y";-o;"$ans";=;"Y";];;then
print;"nnnnn;"
print;"CAUTION:;You;may;lose;all;the;changes;made;to;file!!"
print;-n;"Do;you;really;want;to;unlock;the;file;?;[n]:;"
read;ans
if;[;"$ans";=;"y";-o;"$ans";=;"Y";];;then
break
else
exit
fi
else
print;"nnWrong;entry.;Try;again..."
sleep;1
fi
done

if;[;-e;$lockfile;];;then
rm;-f;$lockfile
print;"nDone;$cmdname"
else
print;"nFile;$1;is;NOT;locked;by;anyone"
print;";"
fi


--------------------------------------------------------------------------------

4.6;slist;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;

请把他存成一般文字档并改变存取权限;chmod;a rx;



--------------------------------------------------------------------------------

#!/bin/ksh

#;CVS;program;slist
#;Program;to;list;all;edited;source;files;from;CVS

#cmdname=`basename;$0`

#echo;"no;of;params;:;";$#
#echo;"all;args;:;";$@

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;}";

推荐阅读