Спецсеминар "Разработка свободного ПО": http://uucode.com/oss2004/. 4-я лекция, 2 октября.
CVS -- Concurrent Versions System, Система Управления Параллельными Версиями <http://cvshome.org/>
Перевод документации на <http://cvs.ru/>. А также статьи. Например,
Центральный сервер (репозиторий) и куча рабочих копий на машинах разработчиков. Всё это как-то взаимодействует.
Польза:
Вначале изучать сложно, затем -- просто. (Анекдот: "... вначале сам не понимал, а потом привык.") Не рекомендую графические клиенты. Хотя WinCVS хорош.
Первоначальная настройка достаточно сложна. Пока будем считать, что сервер есть, и на нём уже что-то есть. Вытаскивание проекта хорошо описано на sourceforge.
На странице проекта есть ссылки "CVS Repository" и "Browse CVS". Вторая их них -- специальная версия программы WebCVS. С помощью WebCVS можно посмотреть список проектов в репозитории. По ссылке "CVS Repository" -- объяснения, как загрузить проект к себе. Что-то типа:
$ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/getfo login $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/getfo \ co texml
В следующий раз не надо говорить "login". А находясь в папке, не нужно указывать ключ "-d".
Создаётся куча служебных папок "CVS". В них находятся файлы, описывающие репозиторий.
Обновление рабочей версии:
$ cvs update
Обычно с ключом "-d" (создавать новые директории):
$ cvs update -d
Обновление некоторых файлов:
$ cvs update file1.html file2.html
Немного про синтаксис команды cvs:
$ cvs global_flags command command_flags files ...
Ещё один полезный "update" (выдаёт, что надо сделать):
$ cvs -q -n update // в рамочку и на стенку U -- update D -- delete M -- modified C -- conflict etc
Вытаскивание нужной версии:
$ cvs update -d -D 2004-09-17 // cvs запоминает дату $ cvs update -d -r release10 // cvs запоминает метку $ cvs update -d -A // сбросить всё и обновиться
Это всё был анонимный cvs, и репозиторий обновлять было нельзя. Допустим, брали рабочую копию как член проекта и можем писать.
$ cvs commit
Попросит ввсети информацию об изменениях. Что писать? Хороший вопрос. Один из вариантов -- то, что автоматически пойдёт в ChangeLog или в отчёт начальству.
Разница кода в рабочей версии и в репозитории:
$ cvs diff
Когда обновлять? Чем чаще, тем лучше. При этом код из cvs должен собираться без ошибок. (В некоторых фирмах: кто поломал ночную сборку, тот следит за результатами по утрам.)
Добавлять файл:
$ cvs add foo.c $ cvs add -kb bar.jpg $ cvs commit foo.c var.jpg
Допустим, что два человека правили один и тот же файл. Мы говорим "cvs commit", а cvs отвечает, что файл на сервере более новый.
Тогда мы делаем "cvs update" этого файла и смотрим итог. В большинстве случаев оба изменения автоматически сливаются. (Это -- магия, ждём доклад про неё.)
Если автоматически не получается, то делается всё, что можно, в конфликты исправляются руками.
Ограничения:
Создание репозитория описано в документации.
Добавление проекта в репозиторий тоже описано в документации. Имейте в виду, что сделать import мало, надо потом ещё сделать checkout.
Неправильно способ создания.
Какие репозитории бывают (CVSROOT):
В случае 'ext' обычно используется ssh и ключи.
Subversion <http://subversion.tigris.org> -- наследник cvs
Source Safe от Microsoft
И вообще, много их.
Яндекс учреждает научные стипендии <http://company.yandex.ru/news/2004/0922/> Приём заявок до конца октября, результаты в ноябре. Кто получит стипендию, тот получит и зачёт.
http://www.linux.org.ru/view-message.jsp?msgid=665958&page=1 "С выходом Gnome 2.8 мы начинаем работу над Gnome 2.10... До сих пор не реализовано много вещей, и если вы хотите помочь нам, то вот список тех вещей, которые вы могли бы сделать. Возможно, наиболее важным являются баги Nautilus (около 1300), и поэтому лидер проекта просит community помочь и исправить столько, сколько сможете."