www.infocom.ua
Всеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхИнфоком Дата-Центр
О проектеУслуги и ценыПоддержкаКонтакты

 

 

CVS and TkCVS workaround.

Введение

Данный документ представляет собой сведенный заметки по особенностям работы с cvs и в частности с TkCVS. Он не коей мере не может быть использован в качестве пособия по обучению этим продуктам и служит только для справочных целей. В тексте вы можете встретить и скорее встретите немало неточностей и неверно итерпретируемых терминов. Оставьте это на совести автора.
В заметках использовались версии cvs v1.9.26 и TkCVS v6.0. В процессе написания использовалась документация поставляемая с cvs и TkCVS, и материалы, найденые в Internet.

Инициализация CVS репозитария

Прежде всего, для начала работы с cvs, необходимо создать репозитарий, используемы cvs для хранения различных версий файлов. Место нахождения репозитария cvs может брать из командной строки так и из переменной окружения $CVSROOT.

[fa@horse ~] cvs init



[fa@horse .CVS]$ ls -R 

CVSROOT



./CVSROOT:

checkoutlist    cvswrappers,v   loginfo,v       rcsinfo         verifymsg,v

checkoutlist,v  editinfo        modules         rcsinfo,v

commitinfo      editinfo,v      modules,v       taginfo

commitinfo,v    history         notify          taginfo,v

cvswrappers     loginfo         notify,v        verifymsg
При этом автоматиски включается введение истории history. Если в этом нет необходимости, то после cvs init следует удалить файл history.

Занесение проекта в репозитарий

Предположим что необходимо внести проект находящийся в /some/project в репозитарий как $CVSROOT/myname/Project. Данная операция осуществялется следующим образом, при условии что файлы относящиеся к проекту находятся в каталоге /some/project:
[fa@horse ~] cd /some/project

[fa@horse project]  cvs import -m "Imported sources"  myname/Project Fa start
где yoyo - тэг распространителя (vendor tag), start - "release tag"
После чего, можно проверить, переименовав исходный каталог проекта и попытаться восстановить его из репозитария
[fa@horse project] cd ..

[fa@horse some] mv project poject.orig

[fa@horse some] cvs checkout myname/Project

[fa@horse some] diff -r project.orig myname/Project

[fa@horse some] rm -r project.orig

При работе с проектом "с нуля" достаточно занести в репозитарий стартовый каталог аналогично описанному выше и добавлять остальный файлы по мере необходимости. Переход от других revision control system не рассматривается.

Модули

Модули используются для облегчения доступа к тем или иным файлам. Описание модулей хранится в файле ${CVSROOT}/CVSROOT/modules. При внесениии каких либо правок в modulesнеобходимо получиться этот файл из репозитария:
[fa@horse ~] cvs checkout CVSROOT/modules

[fa@horse ~] cd CVSROOT
Формат записи:
key -a aliases...
key [options] directory
key [options] directory files...

где key - ключ обращения к модулю - название модуля, directory - подкаталог относительно $CVSROOT, в котором находятся файл/файлы относящиеся к данному модулю.

После внесения изменений в modules, необходимо занести его обратно в репозитарий исполнив
cvs commit -m "Some changes in the modules.
cd ..
cvs release -d CVSROOT
Использование -d задает удаление об'ектов после операции release.

Об'екты, не управляемые cvs.

При исполнении команд update release import cvs игрорирует файлы имена которых:
  • Входят в список, включающий образцы имен файлов связанных с администрированием CVS или других revision control system. Сюда также входят резервные копии, об'ектные файлв и прочее. По умолчанию имена отвечают образцам:
RCS SCCS CVS CVS.adm
RCSLOG cvslog.*
tags TAGS
.make.state .nse_depinfo
*~ #* .#* ,* _$* *$
*.old *.bak *.BAK *.orig *.rej .del-*
*.a *.olb *.o *.obj *.so *.exe
*.Z *.elc *.ln
core
  • Список, хранящийся в репозитарии $CVSROOT/CVSROOT/cvsignore,если данный файл существует, добавляется к обсуждаемому в данном пункте списку.
  • Входят в пользовательский список в домашнем каталоге пользователя .cvsignore, если данный файл существует.
  • Добавляются записи, входящие в переменную окружения $CVSIGNORE
  • Какое либо использование опции -I в CVS расширяет список.
  • При сканировании подкаталогов CVS расширяет список при обнаружении .cvsignore. Причем, образцы имен файлов действительны только в предехал даного катаголога но не в подкаталогах.
  • TkCVS: введение.

    TkCVS: расширенные записи в modules.

    TkCVS при работе использует в файле modules свои комментарии для определения каталогов и описания модулей. Эти данные совершенно прозрачны для собственно cvs.Формат описания следющий:

    Имена каталогов:
    #D <TAB>directory <TAB> Directory name
    то есть:
    #D <TAB> proj401 <TAB> Advanced Chocolate Seeking Project.
    (между полями вставяется одиночный символ Tab а не слово <TAB> :)

    Имена модулей:
    #M <TAB> module code <TAB> Module description
    Имена модулей должны быть непосредственно перед строкой описания модулей или их псевдонимов(alias) и в месте после описания имени католога #D, в котором находятся эти модули. те.
    #M <TAB> wrapper <TAB> Chocolate wrapper detector.
    wrapper proj401/wrapper

    Рекомендуется добавить сразу в файл modules следующие строки для работы с TkCVS ( и собственно с cvs ).

    #D      CVSROOT The Complete CVS Administration Directory
    
    
    
    #M      modules The modules database
    
    modules         CVSROOT modules
    
    #M      loginfo post-commit command file
    
    loginfo         CVSROOT loginfo
    
    #M      commitinfo      pre-commit command file
    
    commitinfo      CVSROOT commitinfo
    
    #M      rcsinfo RCS log template
    
    rcsinfo         CVSROOT rcsinfo
    
    #M      editinfo        CVS log template
    
    editinfo        CVSROOT editinfo

    TkCVS: добавление модулей

    Модули лучше размещать по подкаталогам в $CVROOT. Это должно облегчить управление и доступ к родственным проектам. В одном подкаталоге можно разместить несколько проектов, об'единенных общей направленностью. В общем случае, репозитарий представляет собой древовидную структуру хранения данных. С помощью TkCVS создаются записи в modules о каталогах, но не сами катологи. Собственно каталоги cоздаются вручную внутри $CVSROOT.

    File -> Create Dir

    Поля ввода:
    New directory Location - путь к создаваемому каталогу, задается относительно $CVSROOT - Webs
    New directory Name - то как каталог будет представлен пользователю в TkCVS - Web related files.
    В результате получаем в modules запись:
    #D Webs Web related files.
    Только не забудьте создать собственно каталог !:)

    Следующим шагом будет импортирование в репозитарий новго модуля и соответствующих ему файлов. Предволожим это будут файлы составляющие home page. Перед импортироавнием рекомендуется создать в подкаталогах .cvsignore для исключения из обработки бинарных файлов, таких как картинки и компрессованные архивы. Псле чего перейдя в ~/public_html выполним import.

    File->Import

    Поля ввода:
    Module Directory - каталог в котором будут находится файлы модуля. Мы его размещаем в $CVSROOT/Webs - Webs-Fa_Home_Page.
    Modul Code - имя модуля под которым он будет записан в modules - public_html
    Version Number - номер версии. Поскольку мы импортируем модуль впервые то укажем его 1.1 (начальный номер по умолчанию для cvs).
    Module Name - описание модуля, которое используется для отображении в TkCVS.

    Теперь можно восстановить данное дерево в другом месте. Только необходимо учесть, что файлы описанные в .cvsignore соответсвенно не попали в репозитарий.


    Инфоком, 2001
    Дизайн: Климентовская Юлия

    io.ua