Персональная страница Федора Езеева | |||||||||||||||||||||||||||||||||||
|
Назад
Содержание
ВпередВведение в коллективную разработку.Репозиторий.Здесь я ничего писать не буду. А предложу прочитать вот эту статью. Лучше, чем там я не смогу сказать. Эта статья может убедить любого программиста в том, что ему нужен репозиторий, даже если этот программист час назад не знал этого слова. Софт.Итак, Вы прочитали статью (не прочитали? быстро читать! я не шучу) и захотели использовать репозиторий в своей повседневной работе. Но пока не знаете, с чего начать. А начнем мы с выкачивания и установки кучи софта. Примечание: все программы в этой таблице - бесплатны и распространяются с исходными кодами. Это принипиальная позиция.
Самой сложной программой в этом пакете является WinCVS. Поэтому сразу даю ссылки на развернутую документацию к CVS вообще и к WinCVS в частности.
Первые экспериментыcvs init;
Для начала мы создадим и проинициализируем репозиторий. Для этого создадим пустую папочку,
где-нибудь поближе к корню. Пусть это будет D:\repo. cvs import;
Репозиторий есть, однако в нем ничего нет. Нужно это как-то исправить.
WinCVS проанализирует все файлы, которые есть у нас в папке, и выскажет свои предположения по поводу того, какие файлы текстовые, а какие - бинарные (см. картинку). Надо отметить, что предполагает он из рук вон плохо. И приходится практически для каждого расширения указывать тип вручную. Так и на этот раз - скажем, что readme.txt - текстовый, а не бинарный файл (см. картинку). На следующем окошке (см. картинку) остановимся
чуть подробнее. В поле "Repository path" можно указать имя нашего будущего
"проекта" так, как он будет хранится в центральном репозитории. По умолчанию
берется имя локальной папки, и лично мне оно не очень нравится. Именно
сейчас время придумать имя своему проекту (или "модулю", в терминологии CVS), и я
не хочу ошибится. Пусть это будет "Experiments". Именно это туда и
пишем. Filtering 'D:\project\'... cvs -q import -I ! -I CVS -m "Начали эксперименты с CVS" Experiments avendor arelease (in directory D:\project\) N Experiments/readme.txt No conflicts created by this import ***** CVS exited normally with code 0 ***** Теперь заглянем в папку d:\repo и найдем там папку Experiments с файлом readme.txt,v внутри. Нашли? Отлично. Это и есть наш readme.txt в центральном репозитории. cvs checkout;Папку project теперь можно удалить - вся информация есть в центральном репозитории. Создадим локальную копию (папка project для этой цели не годится, сейчас вы поймете, почему). Для создания локального репозитория щелкнем правой мышкой на диске D: в дереве WinCVS и выберем пункт "Checkout module" (см. картинку). В поле "Module name" укажем "Experiments" и нажмем ОК (см. картинку). В Output увидим примерно следующее: cvs -q checkout -P Experiments (in directory D:\) U Experiments/readme.txt ***** CVS exited normally with code 0 ***** Заглянем в каталог D:\Experiments - и кроме нашего файла readme.txt мы увидим папку CVS, где WinCVS хранит свои служебные данные (например информацию о способе доступа к удаленному репозиторию для конкретного модуля). Теперь сымитируем второго разработчика. Еще раз жмем "Checkout module" на корне диска D:\, но в отличие от предыдущего раза - ставим галочку "Check out into directory" и заполняем соответствующее поле значением "Experiments_2" (см. картинку). cvs commit;
Итак, первый разработчик захотел добавить в свой D:\Experiments\readme.txt еще пару слов, и
написал там второй строчкой "(c) 2004 Вася Пупкин." cvs -q commit -m "Добавлены копирайты" readme.txt (in directory D:\Experiments\) Checking in readme.txt; /usr/cvsroot/Experiments/readme.txt,v <-- readme.txt new revision: 1.2; previous revision: 1.1 done ***** CVS exited normally with code 0 ***** Обратим внимание на строчку "new revision: 1.2;", а так же на колонку "Rev." в WinCVS, где так же увидим номер ревизии - 1.2. cvs update;Теперь второй разработчик захотел обновить свои локальные файлы. Для этого он щелкает на папке с ними (то есть, D:\Experiments_2) правой мышкой и выбирает пункт "Update selection" (см. картинку). В окне "Output" мы увидим примерно следующее: cvs -q update -P (in directory D:\Experiments_2\) U readme.txt ***** CVS exited normally with code 0 ***** Строчка "U readme.txt" говорит нам о том, что файл readme.txt изменился. И мы видим, что и у второго разработчика теперь ревизия 1.2. cvs add;Теперь пришло время добавить в проект что-то более существенное, чем readme.txt. Вася Пупкин хочет создать скрипт сборки дистрибутива. Он создает новый файл makedistr.bat (и мы вслед за ним), и пишет туда примерно следующее:
cvs -q add makedistr.bat (in directory D:\Experiments\) cvs add: use 'cvs commit' to add this file permanently ***** CVS exited normally with code 0 ***** Итак, репозиторий уже знает, что мы добавили новый файл, но самого файла еще не получил (это можно увидеть, посмотрев в папку d:\repo - там пока еще нет файла makedistr.bat,v). Содержимое файла репозиторий получит по команде "commit", которую мы тут же и сделаем (эту операцию мы уже проделывали один раз - справитесь без моих подсказок). cvs remove;Вася Пупкин немного подумал, и решил, что со скриптом сборки дистрибутива он явно поторопился. И файл makedistr.bat надо бы удалить. Не проблем, выделяем файл, идем в контекстное меню "Modify" - "Remove" (см. рисунок). (В контекстном меню этой операции по умолчанию нет, и пожалуй, это правильно. Однако контекстное меню в WinCVS легко настраивается.) В ответ на Remove получаем в Output: 'makedistr.bat' has been moved successfully to the recycle bin... cvs -q remove makedistr.bat (in directory D:\Experiments\) cvs remove: use 'cvs commit' to remove this file permanently ***** CVS exited normally with code 0 ***** Мы видим, что файл был удален из локального репозитория, а центральному репозиторию так же была послана команда на удаление. Однако окончательное удаление, как и добавление файла, произойдет по команде "commit". Отдельно стоит отметить, что в CVS невозможно удалить каталог. Но можно в CVS Preferences на закладке Global установить галочку "Prune empty directories", и тогда папки, из которых были удалены все файлы, будут удаляться при каждом cvs update в вашем локальном репозитории. Итоги.Вы немного поигрались с новой игрушкой, и вроде даже немного освоились. Пора загружать репозиторий реальной работой. И здесь - первая незадача. Вся конфигурация 1С хранится в одном бинарном файле, а CVS, что характерно, в первую очередь ориентируется на работу с текстовыми файлами.На помощь приходит gcomp - утилита, позволяющая разобрать MD в набор каталогов и текстовых файликов, а так же умеющая совершать и обратную операцию. Назад Содержание Вперед | ||||||||||||||||||||||||||||||||||
© 1998-2004 Fedor Ezeev. |