- PVSM.RU - https://www.pvsm.ru -
Было разработано расширение Caché Studio, которое называется Caché-SVN. Это расширение позволяет работать с репозиторием (хранилищем) SVN, не покидая Caché Studio. С его помощью можно выполнять checkout, commit и update.
Caché-SVN работает не с отдельными файлами (классами, программами, csp-страницами и т.д.), а с проектом целиком.
Caché-SVN создаёт временную папку на сервере, где установлено Caché, выгружает туда файлы проекта и выполняет svn commit. Аналогично при svn update полученные xml-описания файлов импортируются в Caché.
Caché-SVN основано на классе %Studio.Extension.Base, который поставляется вместе c Caché и позволяет добавлять свои меню в Caché Studio.
Caché-SVN можно скачать с по адресу subversion.assembla.com/svn/intersystems/cache-svn/svn-0.24.xml.zip [1]
На сервере, на котором находится Caché (а не на той машине, на которой запускается Caché Studio) должен быть доступен файл svn.exe.
Комментарии для коммитов отправляются на сервер в кодировке UTF-8, поэтому в файле config настроек svn вам нужно установить параметр log-encoding = UTF-8.
Если вы устанавливаете Tortoise SVN, то при установке нужно отметить галочку «Устанавливать командные файлы».
На время установки вы должны включить возможность записи в базу CACHELIB. Это делается через «Портал управления системой». Выберите «Конфигурация > Конфигурация системы > Локальные базы данных». Щёлкните на ссылке «редактировать» в строке с CACHELIB и в выпадающем списке «Только чтение?» выберите «Нет». После установки Caché-SVN флаг можно будет вернуть обратно.
В Caché Studio выберите область %SYS и импортируйте («Инструменты > Импортировать локально») файл c Caché-SVN. Всё, можно опять запрещать запись в CACHELIB.
Теперь нужно установить области, в которых для контроля версий будет использоваться Caché-SVN. Для этого в «Портале управления системой» выберите «Конфигурация > Дополнительные настройки > Система контроля версий». Для нужных вам областей отметьте класс %SourceControl.SVN и нажмите «OK». Пример в этом туториале будет работать с областью SAMPLES, поэтому выберите класс %SourceControl.SVN как класс системы контроля версий для неё. После установки, в Caché Studio при выборе области, в которой выбран Caché-SVN как система контроля версий, появится меню «Система контроля версий».
Давайте выгрузим наш первый проект в SVN. Для этого вам понадобятся: а) проект и б) svn-репозиторий. В качестве проекта возьмём проект cinema из области SAMPLES. Репозиторий вы можете создать локальный, а можете выбрать любой сервер, который предоставляет частные или публичные svn-репозитории. В нашем примере мы будем использовать сайт assembla.com (да, это реклама).
Итак, зарегистрируйтесь на assembla.com и создайте репозиторий SVN. Assembla сама создаст вам папку trunk, давайте и будем туда класть исходники. Дальше я буду считать, что репозиторий располагается по адресу subversion.assembla.com/svn/cache-cinema/trunk [2].
Откройте в Caché Studio область SAMPLES. Если вы правильно установили и настроили Caché-SVN, то в Studio будет меню «Система контроля версий».
Откройте проект Cinema и в меню «Проект > Настройки» в раздел Описание добавьте строку svn-repo=https://subversion.assembla.com/svn/cache-cinema/trunk. Сохраните проект («Файл > Сохранить проект»). Таким образом параметр с репозиторием привязывается к проекту. Теперь при экспорте проекта (меню «Инструменты > Экспорт») эта строчка будет выгружена вместе с ним.
Теперь нужно выполнить локальные настройки. Откройте пункт меню «Система контроля версий > Настройки проекта» и впишите
Имя пользователя, пароль и флаг об удалении пароля хранятся в соответствующей области в глобале ^SVN в узле с именем проекта.
Путь к svn.exe и временная папка хранятся в глобале ^SVN в области %SYS.
Итак, все приготовления сделаны, последнее, что осталось — выбрать пункт меню «Система контроля версий > Checkout». Если вы всё сделали правильно, то в окне Вывода у вас появятся такие строки:
Выберите пункт меню «Система контроля версий > Commit». Введите комментарий, например «Первоначальная выгрузка» и нажмите «Да».
В окне «Вывод» побегут строки, и всё успешно закончится такой картинкой:
Ну что ж. Проект загружен. Представим теперь, что к нему хочет подключиться ещё один разработчик. Чтобы не ставить ещё одну версию Caché, будем считать, что этот разработчик работает в области USER, а не в области SAMPLES. Установите %SourceControl.SVN как класс системы контроля версий в области USER (если вы этого не сделали раньше).
Создайте новый проект с таким же именем, как проект, хранящийся в репозитории и настройте его — укажите адрес репозитория, логин и пароль и выполните Checkout («Система контроля версий > Checkout»).
Обратите внимание на последнюю строчку, если вы создали проект с именем, отличающимся от имени проекта, который хранится в репозитории, то проект из репозитория всё равно будет загружен. Вам нужно будет найти его в области, открыть, настроить и сделать чекаут уже для него.
Обратите также внимание, что в области SAMPLES csp-файлы находились в приложении csp/samples. При импорте в область USER все csp-файлы перемещаются в csp-приложение по умолчанию для области USER — csp/user.
Отлично, проект загружен в обе области. Давайте посмотрим, как выглядит совместная работа двух пользователей над проектом.
В области USER откройте файл Search.csp и измените его заголовок на «Search page title». Если хотите поменяйте ещё что-нибудь или добавьте новый класс / программу к проекту. Сделайте commit.
Видите? Мы сделали изменения только в одном файле, а отправилось аж девять. Сведения о проекте Cinema (файл Cinema.prj.xml) изменились, потому что в описании проекта хранящемся на сервере csp-файлы находятся в приложении csp/samples, а наши csp-файлы в приложении csp/user.
Поэтому же отправляются и описания всех csp-файлов. В их xml-описании присутствует строка, которая указывает к какому csp-приложению этот файл относится. Приложение изменилось — файл нужно опять отправить на сервер.
Если теперь опять изменить заголовок страницы Search.csp и выполнить коммит, то отправится только Search.csp — изменения csp-приложения с csp/samples на csp/user уже закоммичены.
Давайте теперь загрузим изменения в область SAMPLES. Перейдите в неё и выполните Update («Система контроля версий > Update»). Заголовок у страницы Search.csp изменился. Caché-SVN не перекомпилирует проект при загрузке. Вам нужно это сделать самим.
При возникновении конфликтов при Update или Commit SVN вставляет свои маркеры с изменениями в файл. Содержимое классов (или программ, или csp-страниц) загружается в Caché вместе с этими маркерами. В некоторых случаях маркеры ломают xml-разметку описаний файлов и импорт этих файлов становится невозможным. Тогда xml-описание целиком загружается во временную программу.
В области SAMPLES откройте класс Cinema.Film и в запросе TopFilms добавьте в WHERE условие «AND (Rating = 'G')». Выполните коммит.
Теперь откройте область USER и в том же классе Cinema.Film и в том же запросе TopFilms добавьте в WHERE другое условие — «AND (Rating in ('G','PG'))». Выполните Update.
После того, как вы оставите в файле только нужные строчки, выберите пункт меню «Система контроля версий > Пометить конфликт как разрешённый». Конфликт в открытом файле закроется и не будет мешать выполнению коммита. Выполните коммит.
В области SAMPLES откройте класс Cinema.Film и в первой строке запросе TopCategory поменяйте «Top 3» на «Top 6» и сделайте коммит. В области USER откройте этот же класс Cinema.Film и в том же запросе TopCategory поменяйте «Top 3» на «Top 7» и сделайте Update.
Разметка xml-описания при таком Update будет сломана и импорт выполнить не удастся. В таком случае будет создана временная программа DIFF.Cinema.Film.cls.xml, в неё будет загружен xml-файл, который не получилось импортировать.
После того как конфликт для файла Cinema.Film.xls будет отмечен как разрешённый, эта временная программа будет удалена.
Не упомянутыми остались следующие функции Caché-SVN:
Caché-SVN тестировалась на версии svn 1.7.5 и версиях Caché 2012.2 для Windows и Linux. Аналогично будет работать и на Ensemble.
Замечания, пожелания и найденные ошибки оставляйте в комментариях или присылайте на ящик akoblov@gmail.com.
Автор: adaptun
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/svn/14693
Ссылки в тексте:
[1] subversion.assembla.com/svn/intersystems/cache-svn/svn-0.24.xml.zip: https://subversion.assembla.com/svn/intersystems/cache-svn/svn-0.24.xml.zip
[2] subversion.assembla.com/svn/cache-cinema/trunk: https://subversion.assembla.com/svn/cache-cinema/trunk
Нажмите здесь для печати.