4.;Shell;Scripts;
下面的;scripts;是基本;CVS;命令的集合,而且是;Korn;shell;的;scripts;。你可以把他转成;perl;或者;bash。你可以自己修改成你想要的样子。这些只是运用基本;CVS;命令但有些特殊的花样加在里面。例如,;sedit;这个;script;提供了档案锁住的功能使得其他人知道有某人正在修改这个档案,当然你也可以直接使用;CVS;命令而不用这些;scripts;,这些;scripts;只是在展示;CVS;是多麽的有弹性。;
把这些;scripts;复制到;/usr/local/bin;下,并且此目录应该在你的;PATH;环境变数中。;
sget;[-r;revision_number];
sedit;[-r;revision_number];
scommit;[-r;revision_number];
supdate;
sunlock;[-r;revision_number];
slist;要看目前正被你修改的档案列表。做;'ls;-l;|;grep;|;...';命令,请按;slist;
sinfo;
slog;
sdif;
sdif;-r;rev1;-r;rev2;
注意:;sdif;只有一个;'f';,因为这里已经有一个;unix;命令叫;'sdiff'。;
sadd;
sdelete;
sfreeze;
saddtree;
例如;:;
--------------------------------------------------------------------------------
cd;$HOME;;
sfreeze;REVISION_1_0;;srctree
--------------------------------------------------------------------------------
这将会冻结原始码,并贴上一个标签;REVISION_1_0;,如此一来你就可以稍後用版本名字登出整个目录树。;
******************************************************
4.1;sget;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;sget
#;Program;to;check;out;the;file;from;CVS;read-only
cmdname=`basename;$0`
Usage()
{
print;"nUsage:;$cmdname;[-r;revision_number/symbolic_tag_name];
print;"The;options;-r;are;optional;"
print;"For;example;-;"
print;";$cmdname;-r;1.1;foo.cpp"
print;";$cmdname;foo.cpp;"
print;";$cmdname;some_directory;"
print;"Extract;by;symbolic;revision;tag;like;-;"
print;";$cmdname;-r;REVISION_1;some_directory;"
print;";"
exit
}
#;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;`
#echo;FLAG1;=;$FLAG1;,;OARG1;=;$OARG1
if;[;$#;-lt;1;];;then
Usage
fi
bkextn=sget_bak
hme=`;echo;$HOME;|;cut;-f1;-d';';;`
if;[;"$hme";=;"";];;then
print;"nError:;$HOME;is;not;set!!n"
exit
fi
#;Check;if;file;already;exists....
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;"nError:;The;file;is;writable.;Aborting;$cmdname;......"
print;";;;;;;;You;should;either;backup,;scommit;or;delete;the;file;and"
print;";;;;;;;try;$cmdname;againn"
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
#;Move;the;file
touch;$1;2>/dev/null
mv;-f;$1;$1.$bkextn
#;Create;subshell
(
cd;$hme
#echo;$fdname
#;Use;-A;option;to;clear;all;sticky;flags
if;[;"$FLAG1";=;"";];;then
cvs;-r;checkout;-A;$fdname
else
cvs;-r;checkout;-A;-$FLAG1;$OARG1;$fdname
fi
)
#pwd
if;[;-f;$1;];;then
print;"nREAD-ONLY;copy;of;the;file;$fdname;obtained."
print;"Done;$cmdname"
#print;"nTip;(Usage):;$cmdname;
fi
--------------------------------------------------------------------------------
4.2;sedit;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;sedit
#;Program;to;check;out;the;file;from;CVS;read/write;mode;with;locking
cmdname=`basename;$0`
Usage()
{
#;;;;;;;print;"nUsage:;$cmdname;[-r;revision_number];[-F];
#;;;;;;;print;"The;options;-r,;-F;are;optional;"
#;;;;;;;print;"The;option;-F;is;FORCE;edit;even;if;file;is;"
#;;;;;;;print;"locked;by;another;developer"
print;"nUsage:;$cmdname;[-r;revision_number];
print;"The;options;-r;are;optional;"
print;"For;example;-;"
print;";$cmdname;-r;1.1;foo.cpp"
print;";$cmdname;foo.cpp;"
#;;;;;;;print;";$cmdname;-F;foo.cpp;"
print;";"
}
#;Command;getopt;will;not;supported;in;next;major;release.;
#;Use;getopts;instead.;
#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;"nError:;$HOME;is;not;set!!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
#;If;file;is;already;checked;out;by;another;developer....
cvs_root=`;echo;$CVSROOT;|;cut;-f1;-d';';;`
if;[;"$cvs_root";=;"";];;then
print;"nError:;$CVSROOT;is;not;set!!n"
exit
fi
cldir=$CVSROOT/$subdir/Locks
mkdir;$cldir;2>/dev/null
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
#if;[;-e;$lockfile;-a;"$FLAG2";=;"";];;then
if;[;-e;$lockfile;];;then
print;"nError:;File;$1;Revision;$OARG1;already;locked;by;another;developer;!!"
aa=`;ls;-l;$lockfile;|;awk;'{print;"Locking;developers;unix;login;name;is;=;";$3}';`
print;$aa
print;"That;developer;should;do;scommit;OR;sunlock;to;release;the;lock"
print;";"
#;;;;;;;print;"You;can;also;use;-F;option;to;force;edit;the;file;even;if"
#;;;;;;;print;"the;file;is;locked;by;another;developer.;But;you;must;talk;to"
#;;;;;;;print;"other;developer;to;work;concurrently;on;this;file.";
#;;;;;;;print;"For;example;-;this;option;is;useful;if;you;work;on;a;seperate"
#;;;;;;;print;"C++;function;in;the;file;which;does;not;interfere;with;other"
#;;;;;;;print;"developer."
#;;;;;;;print;";"
exit
fi
#;Get;read-only;copy;now....
if;[;!;-e;$1;];;then
(
cd;$hme
cvs;-r;checkout;$fdname;1>/dev/null
)
fi
#;Check;if;file;already;exists....
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;"nError:;The;file;is;writable.;Aborting;$cmdname;......"
print;";;;;;;;You;must;backup,;scommit;or;delete;file;and"
print;";;;;;;;try;$cmdname;againn"
exit
fi
#print;"nNote:;The;file;$1;is;read-only."
#print;"Hence;I;am;moving;it;to;$1.$bkextn;....n"
mv;-f;$1;$1.$bkextn
chmod;444;$1.$bkextn
elif;[;-d;$1;];;then
print;"nError:;$1;is;a;directory;and;NOT;a;file.;Aborting;$cmdname;....n"
exit
fi
#;Create;subshell
print;"nNow;getting;the;file;$1;from;CVS;repository;...n"
(
cd;$hme
#echo;$fdname
#;Use;-A;option;to;clear;the;sticky;tag;and;to;get;
#;the;HEAD;revision;version
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;"nDone;$cmdname"
#print;"nTip;(Usage):;$cmdname;
--------------------------------------------------------------------------------
4.3;scommit;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;scommit
#;Program;to;commit;the;changes;and;check;in;the;file;into;CVS
cmdname=`basename;$0`
Usage()
{
print;"nUsage:;$cmdname;[-r;revision_number];
print;"The;options;-r;are;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;`
#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;"nError:;$HOME;is;not;set!!n"
exit
fi
#;Find;sub-directory
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
mkdir;$cldir;2>/dev/null
#;Get;the;working;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;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;"The;file;$fdname;is;NEW,;it;is;not;in;the;CVS;repository"
else
lockfile=$cldir/$1-$OARG1
if;[;-e;$lockfile;];;then
#;Check;if;this;revision;is;owned;by;you...
aa=`;ls;-l;$lockfile;|;awk;'{print;$3}';`
userid=`id;|;cut;-d'(';-f2;|;cut;-d')';-f1;`
if;[;"$aa";!=;"$userid";];;then
print;";"
print;"The;file;$fdname;is;NOT;locked;by;you!!"
print;"It;is;locked;by;unix;user;name;$aa;and;your;login;name;is;$userid"
#;;;;;;;print;"If;you;are;working;concurrently;with;other;developer"
#;;;;;;;print;"and;you;used;-F;option;with;sedit."
print;"You;need;to;wait;untill;other;developer;does;scommit"
print;"or;sunlock"
print;"Aborting;the;$cmdname;...."
print;";"
exit;2
fi
else
if;[;-f;$CVSROOT/$subdir/$1,v;];;then
print;"You;did;not;lock;the;file;$fdname;with;sedit!!"
print;"Aborting;the;$cmdname;...."
exit;2;
else
print;"nThe;file;$fdname;does;not;exist;in;CVS;repository;yet!!"
print;"You;should;have;done;sadd;on;$fdname;...."
fi
fi
fi
if;[;-d;$1;];;then
Usage
exit;2
#;Do;not;allow;directory;commits;for;now;...
#cvs;commit
else
cvs;commit;$1
exit_status=$?
fi
if;[;$exit_status;-eq;0;];;then
print;"nDone;$cmdname.;$cmdname;successful"
#print;"nTip;(Usage):;$cmdname;
fi
--------------------------------------------------------------------------------
4.4;supdate;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;supdate
#;Program;to;update;the;file;from;CVS;read/write;mode
cmdname=`basename;$0`
if;[;$#;-lt;1;];;then
print;"nUsage:;$cmdname;
exit
fi
#;Check;if;file;already;exists....
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;will;backup;your;working;file;"
print;"$1;to;$1.supdate_bak;before;doing;any;merges."
print;"Are;you;sure;you;want;the;merge;the;changes;from"
print;-n;"CVS;repository;to;your;working;file;?;
read;ans
if;[;"$ans";=;"y";-o;"$ans";=;"Y";];;then
if;[;-f;$1.supdate_bak;];;then
print;"nWarning;:;File;$1.supdate_bak;already;exists!!"
print;"Please;examine;the;file;$1.supdate_bak;and;delete;it"
print;"and;than;re-try;this;$cmdname;"
print;"Aborting;$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;"nDirectory;update;is;disabled;as;cvs;update"
print;"merges;the;changes;from;repository;to;your;working;directory"
print;"So;give;the;filename;to;update;-;as;shown;below:;"
print;";Usage:;$cmdname;
exit
#;;;;;;;cvs;update
else
cvs;update;$1
fi
print;"nDone;$cmdname.;$cmdname;successful"
#print;"nTip;(Usage):;$cmdname;
--------------------------------------------------------------------------------
4.5;sunlock;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx.;
--------------------------------------------------------------------------------
#!/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;
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;
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;}';
|;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)commands;3)[nt]roff,;4)c;5)English;;6)executable
#;7)ascii;8)current;9)empty
#;Binaries;are;ELF,;lib.a;are;current
#
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;"nDone;$cmdname.;$cmdname;successful"
#print;"nTip;(Usage):;$cmdname;
--------------------------------------------------------------------------------
4.7;sinfo;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;sinfo
#;Program;to;get;the;status;of;files;in;working;directory
cmdname=`basename;$0`
if;[;$#;-lt;1;];;then
print;"nUsage:;$cmdname;[file/directory;name];"
print;"For;example;-;"
print;";$cmdname;foo.cpp"
print;";$cmdname;some_directory;"
print;";"
exit
fi
hme=`;echo;$HOME;|;cut;-f1;-d';';;`
if;[;"$hme";=;"";];;then
print;"nError:;$HOME;is;not;set!!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
#;Create;subshell
if;[;-f;$1;];;then
(
cd;$hme
clear
cvs;status;$fdname;
)
elif;[;-d;$1;];;then
(
cd;$hme
clear
echo;";;";>>;$tmpfile
echo;";;****************************************";>>;$tmpfile
echo;"Overall;Status;of;Directory";>>;$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;if;not;a;file;or;directory"
exit
fi
--------------------------------------------------------------------------------
4.8;slog;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;slog
#;Program;to;list;history;of;the;file;in;CVS;
cmdname=`basename;$0`
if;[;$#;-lt;1;];;then
print;"nUsage:;$cmdname;
exit
fi
#;Check;if;file;does;not;exist....
if;[;!;-f;$1;];;then
print;"nError:;$1;is;NOT;a;file.;Aborting;$cmdname;......"
exit
fi
cvs;log;$1;|;/usr/local/bin/less
print;"nDone;$cmdname.;$cmdname;successful"
#print;"nTip;(Usage):;$cmdname;
--------------------------------------------------------------------------------
4.9;sdif;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;sdif
#;Program;to;see;difference;of;the;working;file;with;CVS;copy
cmdname=`basename;$0`
Usage()
{
print;"nUsage:;$cmdname;
print;"$cmdname;-r
exit
}
FLAG1=""
FLAG2=""
OARG1=""
OARG2=""
#;Command;getopt;will;not;supported;in;next;major;release.;
#;Use;getopts;instead.;
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
--------------------------------------------------------------------------------
4.10;sadd;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a+rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;test
#;CVS;program;sadd
#;Program;to;add;the;file;to;CVS
cmdname=`basename;$0`
if;[;$#;-lt;1;];;then
print;"nUsage:;$cmdname;
exit
fi
#;Check;if;file;exists;....
if;[;-f;$1;];;then
cvs;add;$1
exit
fi
if;[;!;-d;$1;];;then
&n
标签: