Автор работы: Пользователь скрыл имя, 26 Января 2014 в 23:05, лабораторная работа
ЦЕЛЬ РАБОТЫ:
изучить программный продукт CVS (Concurrent Versions System, «Система Конкурирующих Версий») и на примере клиентской программы (front-end client) TortoiseCVS получить навыки пользования базовыми функциями: создание репозитория; создание локального модуля, используя репозиторий; перемещать в локальный модуль созданные файлы и добавлять их в CVS. Получить знания о командах, основной ветке, branch ветке.
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
высшего профессионального образования
ПЕРМСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
ЛАБОРАТОРНАЯ РАБОТА
по предмету: проектирование единого информационного пространства виртуальных предприятий
на тему: ИЗУЧЕНИЕ ПРОГРАММНОГО ПРОДУКТА CVS (CONCURRENT VERSIONS SYSTEM, «СИСТЕМА КОНКУРИРУЮЩИХ ВЕРСИЙ»)
Пермь 2014
СОДЕРЖАНИЕ
Цель работы:
изучить программный продукт CVS (Concurrent Versions System, «Система Конкурирующих Версий») и на примере клиентской программы (front-end client) TortoiseCVS получить навыки пользования базовыми функциями: создание репозитория; создание локального модуля, используя репозиторий; перемещать в локальный модуль созданные файлы и добавлять их в CVS. Получить знания о командах, основной ветке, branch ветке.
ПРАКТИЧЕСКОЕ ЗАДАНИЕ:
1. Создать репозиторий в папке C:\Stud \
2. Создать локальный
модуль, используя репозиторий,
3. Переместить
в локальный модуль файлы, созд
4. Изменить файлы,
подтвердить внесение
Краткая теория
CVS (Concurrent Versions System,
«Система Конкурирующих Версий»
CVS использует
архитектуру клиент-сервер. Обычно
клиент и сервер соединяются
через локальную сеть или
Сервер хранит в специальном хранилище (репозитории) текущую версию (версии) проекта и историю изменений, а клиент соединяется с ним, чтобы получить нужную ему версию или записать новую. Получив с сервера нужную версию (данная процедура называется check-out), клиент создаёт локальную копию проекта (или его части) — так называемую рабочую копию. После того как в файлы, находящиеся в рабочей копии, внесены необходимые изменения, они пересылаются на сервер (check-in).
Несколько клиентов могут работать над копиями проекта одновременно. Когда они отправляют результаты, сервер пытается слить их изменения в репозитории вместе. Если это не удаётся, например, в случае, когда два клиента изменили одни и те же строки в определённом файле, сервер не примет изменения от последней check-in операции и сообщит клиенту о конфликте, который должен быть исправлен вручную. Если check-in операция завершилась успешно, то номера версий всех затронутых файлов автоматически увеличиваются, и сервер записывает комментарий, дату и имя пользователя в свой журнал (data logging).
Клиенты также могут сравнить различные версии файлов, запросить полную историю изменений или получить исторический образ проекта на определённое число или по номеру ревизии. Многие Open Source проекты разрешают анонимный доступ на чтение, который впервые был применён OpenBSD. Это означает, что клиенты могут запрашивать и сравнивать версии файлов без пароля; только check-in операции, ведущие к изменению данных в репозитории, требуют пароль.
Также для синхронизации локальной копии проекта с информацией на сервере клиенты могут использовать команду update, что позволяет избежать повторного скачивания всего проекта.
CVS также может
содержать различные ветки
Проекты в CVS хранятся в виде модулей.
ТЕРМИНЫ:
Модуль — это набор файлов проекта. Сервер CVS может обслуживать несколько модулей; все модули хранятся в репозито́рии. Локальная копия модуля, полученная с помощью CVS клиента, называется рабочей копией.
Check-out -извлечение целого модуля из CVS и создание рабочей копии.
Check-in -фиксация
локальных изменений в
Update -обновление локального проекта из CVS.
Branch- «ветка»
— независимое направление
Main trunk или HEAD- главная ветка.
Revision - «ревизия»: одна из версий отдельного файла.
Release - «релиз»:
одна из версий целого проекта.
Tag («тег») - специальная метка, обозначающая определённый релиз продукта. Текст метки желательно делать максимально понятным. Метку можно назначить и отдельному файлу. Тег помечает совокупность файлов определённых ревизий (версий).
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ:
1. Настройка CVS-сервера
Настраиваем CVS-сервер. Для этого идем по пути Пуск -> Все программы -> CVSNT -> CVSNT Control Panel:
Откроется окно следующего вида:
2. Создание репозитория
Для начала работы нам необходимо создать CVS-репозиторий.
Репозиторий - место,
где хранятся и поддерживаются
какие-либо данные. В нашем случае
в нем будут храниться все
документы вместе с историей
их изменения и другой
Переходим на вкладку Repository Configuration:
Нажимаем кнопку Add (Добавить репозиторий):
Location – месторасположение репозитория. Путь может быть как сетевым так и локальным. Когда репозиторий создается для производственных нужд, логичней всего его расположить на сетевом ресурсе, однако в нашем случае целью является научиться пользоваться базовыми функциями, поэтому мы создадим локальный репозиторий.
В графе Location пропишем путь C:\Stud\RepoExamples\INZ_09d
Нажимаем ОК. Если выскочит такое сообщение:
В списке репозиториев в итоге появился наш:
Нажмем ОК.
Репозиторий готов, теперь можно заняться непосредственно работой с CVS.
3.Создание локального модуля
Для начала создадим в папке С:\Stud\ INZ_09d папку INZ_09d. Вызовем на ней контекстное меню нажатием правой кнопки мыши и выберем CVS -> Создать новый модуль:
Появится окно следующего вида:
Выбираем:
Протокол: Локальная папка (:local:)
Repository folder: (указываем путь к репозиторию): C:/Stud/ INZ_09d /StudRepo
Более нас ничего не интересует. Нажмем ОК.
Появится окно:
Нам главное получить сообщение о том, что операция по созданию модуля завершилась успешно. Как видим, такое сообщение присутствует. Нажмем ОК.
Поменялся значок у папки. Это значит, что папка стала модулем:
4. Создание и изменение файлов
Зайдем в папку.
Создадим простой текстовый файл:
Назовем его, например, StudRepo.txt.
Сохраним. Закроем текстовый редактор. Видим, что на файле стоит знак вопроса. Это значит, что файл не контролируется CVS. Нам необходимо поставить его под ее контроль. Для этого вызовем контекстное меню правой кнопкой мыши на файле:
Появится окно:
Нажмем ОК, мы согласны добавить файл в CVS.
Должно появится окно об успешном завершении операции:
Жмем на ОК. Видим, как поменялся значок у нашего файла:
Это значит, что мы его добавили в CVS.
Ну а теперь,
когда все приготовления
Откроем наш файл, напишем 2 строчки:
Сохраним. Вызовем контекстное меню на файле и выберем CVS Зафиксировать.
Появится окно:
Можно написать какой-нибудь комментарий. Нажмем ОК. Получим сообщение, что все завершилось успешно. Нажмем ОК. Проделаем эту операцию еще 2 раза, т.е. добавим что-нибудь в файл и зафиксируем изменения.
5. Дерево ревизий
После этого вызываем контекстное меню на нашем файле и выбираем CVS -> Дерево ревизий. Откроется окно:
Исходный файл TextFile.txt является у нас головной веткой (HEAD Branch). Ниже идут ревизии (то, что мы добавляли каждый раз и фиксировали). Ревизии составляют ветку (Branch). Можно посмотреть на любую из ревизий, так как они все хранятся в репозитории. Для этого выделим, например ревизию 1.2, щелкнем по ней правой кнопкой мыши и выберем пункт View this revision. Перед нами откроется именно второе изменение (версия) файла.
Теперь давайте рассмотрим создание подветок (Sub-branch). Допустим, мы хотим добавить еще версионности проекту, поскольку мы считаем, что не делаем таких громадных шагов (1.3 -> 1.4). То есть, мы еще создаём промежуточные версии. Для этого щелкаем правой кнопкой мыши по ревизии 1.3. Выбираем Ветка… Появится окно:
Назовем как-нибудь нашу ветку. Нажмем ОК. В результате, у нас получится нечто такое (мы назвали ветку veto4ka):
Затем нажмем ОК. Снова дважды повторим операцию, добавим несколько строчек в файл и зафиксируем.
Зайдем в Дерево ревизий:
6. Список консольных команд CVS
Все эти команды вводятся из командной строки: Пуск -> Выполнить… -> cmd. Далее указывается путь к CVS-серверу, например, cd C:\Program Files\CVSNT, после команды вводятся в соответствии с нижеописанным синтаксисом.
Команды CVS выглядят таким образом:
cvs [global-options] COMMAND [COMMAND-OPTIONS]
[command-args]
Далее следует список команд системы CVS.
cvs –d :local:{путь к репозиторию} init
Создать новый репозиторий
add [options] [files]
Добавить в хранилище новый файл/каталог.
-k kflag Установить подстановку ключевых слов.
-m msg Установить описание файла (комментарий).
admin [options] [files ...]
Администрирование протокольными файлами в хранилище.
-b[rev] Установить ветвь по умолчанию. -cstring Установить начало комментария. -ksubst Определить подстановку ключевых слов. -l[rev] Ограничить доступ версии rev или последней версии. -mrev:msg Заменить комментарий в хранилище. -orange Удалить версии из хранилища. -q Выполняться с минимумом сообщений. -sstate[:rev]Установить состояние файла. -t Установить ввод описания (комментария) со стандартного ввода. -tfile Установить ввод описания (комментария) из файла file. -t-string Заменить описание (комментарий) на строку string. -u[rev] Открыть доступ к версии rev или к последней версии.
annotate [options] [files ...]
Показать измен©нные строки из последней версии файлов.
-D date Показать наиболее свежую версию, но не позднее даты date. -f Использовать версию из основного ствола разработки, если указанный тег или дата не найдены. -l Выполнять локально, без подкаталогов. -R Выполнять рекурсивно, с подкаталогами. -r tag Показать измен©нные строки из версии tag.
checkout [options] MODULES...
Получить копию исходных текстов.
-A Сбросить любые липкие теги, даты, параметры. -c Вывести базу данных с именами модулей. -D date Получить копию исходных текстов до даты date (липкий параметр). -d dir Получить копию исходных текстов в каталог dir. -f Использовать версии из основного ствола, если указанные теги или даты не найдены. -j rev Объединить изменения. -k kflag Использовать строку kflag для постановки ключевых слов. -l Выполнять локально; без подкаталогов. -N Не сокращать путь к модулю, если используется -d. -n Не выполнять программу модуля, если она есть. -P Пропустить пустые каталоги. -p Вывести копию исходных текстов на стандартное устройство вывода (избегая липкости). -R Выполнять рекурсивно; включая подкаталоги (умолчание). -r tag Получить копию исходных текстов версии tag (липкий параметр). -s То же что -c, но включая состояние модуля.
commit [options] [files ...]
Проверить есть ли изменения в рабочем каталоге и перенести изменения файлов из рабочего каталога (если они имели место) в хранилище.
-F file Прочесть комментарий на изменение из файла file. -f Отметить файл проверенным; запретить рекурсию. -l Выполнять локально; без подкаталогов. -m msg Использовать строку msg в качестве комментария, который будет записан в журнал (log). -n Не выполнять программу модуля, если таковая есть. -R Выполнять рекурсивно; с подкаталогами (умолчание). -r rev Выполнить commit для версии rev.
diff [options] [files ...]
Показать различия между версиями файлов. В дополнение к нижеописанным параметрам имеется ряд дополнительных параметров, которые используются для описания вывода программы.
-D date1 Получить diff между версией с определ©нной датой и версией в рабочем каталоге. -D date2 Получить diff между date1/rev1 и date2. -l Выполнять локально; без подкаталогов. -N Включить diff для добавленных и удал©нных файлов. -R Выполнять рекурсивно; с подкаталогами (умолчание). -r rev1 Получить diff между версией rev1 и рабочим каталогом. -r rev2 Получить diff между версией date1/rev1 и rev2.
edit [options] [files ...]
Приготовиться редактировать наблюдаемый (watched) файл.
-a actions Определить действия для временного наблюдения, где действия могут быть такими: EDIT, UNEDIT, COMMIT, ALL, NONE. -l Выполнять локально; без подкаталогов. -R Выполнять рекурсивно; с подкаталогами (умолчание).