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


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


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

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

推荐阅读