Библиотека сайта rus-linux.net
CVS-RCS- HOW-TO документ для Linux (система контроля исходного кода) | ||
---|---|---|
Пред. |
sfreeze
Замечание: оболочка Korn /bin/ksh устанавливается инсталляцией pdksh*.rpm с компакт-диска дистрибутива Linux
Сохраните этот файл как текст и выполните для него "chmod a+rx".
#!/bin/ksh # CVS-программа sfreeze # Программа для замораживания и вырезания редакции дерева исходного # кода из CVS cmdname=`basename $0` Usage() { clear print "\nВызов: $cmdname символический_тэг <имя каталога> " print "\nНапример: " print " cd \$HOME" print " $cmdname REVISION_1 myprojectsource_directory" print "Для просмотра списка редакций:" print "slog <файл> посмотрите символическое имя и выполните" print "cvs history -T" print "\nЧтобы создать ветку от основного ствола, используйте" print "опции -b и -r, что принимает тэг как тэг ветки. Это полезно" print "для создания \"заплатки\" к предыдущей редакции программного" print "обеспечения" print "Например: " print " cd \$HOME" print " cvs rtag -b -r REVISION_1 REVISION_1_1 myprojectsource_directory" print " " # print "\nИнформация о тэге расположена в \$CVSROOT/CVSROOT/taginfo,v" # print "Вы можете просмотреть этот файл так: cd $HOME; sget CVSROOT" exit } # Каманда getopt не будет поддерживаться в следующей версии. # Вместо нее используем 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 "\nОшибка: второй аргумент $2 не каталог!" print " Завершение $cmdname...." print " " exit fi homedir=` echo $HOME | cut -f1 -d' ' ` if [ "$homedir" = "" ]; then print "\nОшибка: \$HOME не установлен!!\n" exit fi cur_dir=`pwd` len=${#homedir} len=$(($len + 2)) subdir=` echo $cur_dir | cut -b $len-2000 ` #echo "subdir is : " $subdir # Для всех команд требуется каталог CVS в Вашем локальном каталоге... if [ ! -d "$homedir/$subdir/CVS" ]; then tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) ` tmpbb=`basename $tmpaa | cut -d',' -f1 ` if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then print "\nКаталог $homedir/$subdir/CVS не существует" print "Вы должны выполнить sget в каталоге `basename $subdir`. Наберите" print " cd $homedir/`dirname $subdir` " print " sget `basename $subdir` " exit else # Теперь попытка создать CVS в локальном каталоге с помощью sget ( cd "$homedir" if [ "$subdir" = "." ]; then # не использовать точку -- это смешает CVS cvs -r checkout -A $tmpbb else cvs -r checkout -A "$subdir/$tmpbb" fi ) fi fi if [ "$cur_dir" != "$homedir" ]; then print "\nВы находитесь не в каталоге $homedir!!" print "Команду sfreeze необходимо выполнять из" print "домашнего каталога $homedir" exit fi # cvs rtag symbolic_tag <directory name> cvs rtag $1 $2 print "\n$cmdname удачно завершен." |