Разработка в Caché Studio с использованием TortoiseGit

    Caché-Git — это модуль контроля версий для Caché Studio, который обеспечивает вызов диалоговых окон TortoiseGit непосредственно из Studio и полуавтоматическую синхронизацию рутин между Caché и локальным репозиторием.

    В каждой области выбираются пакеты, проекты, классы, рутины, dfi-файлы, csp-страницы, csp-приложения которые будут остлеживаться Caché-Git.

    Всякий раз при сохранении отслеживаемой программы, она будет экспортироваться на диск в репозиторий. При открытии программа будет загружаться из репозитория, если версия, находящаяся в нём свежее.

    Caché-Git работает только на компьютерах, на которых установлен и сервер и клиент Caché. Caché-Git не будет работать при соединении с удалённым сервером.

    Где взять


    Репозиторий с Caché-Git находится по адресу github.com/intersystems-ru/cache-tort-git. Там же есть wiki, в которой описаны шаги по установке и использованию

    Установка Caché-Git


    Коротко

    На время установки отключить read-only на CACHELIB и импортировать файл с проектом в область %SYS. Для нужных областей (например SAMPLES и USER) назначить класс %SourceControl.Git как класс контроля версий.

    Подробно

    На время установки вы должны включить возможность записи в базу CACHELIB. Это делается через «Портал управления системой». Выберите «Администрирование системы > Конфигурация > Конфигурация системы > Локальные базы данных». Щёлкните на ссылке «редактировать» в строке с CACHELIB и в выпадающем списке «Только чтение?» выберите «Нет». После установки Caché-Git флаг можно будет вернуть обратно.

    В Caché Studio выберите область %SYS и импортируйте («Инструменты > Импортировать локально») файл c Caché-Git. Всё, можно опять запрещать запись в CACHELIB.

    Теперь нужно установить области, в которых для контроля версий будет использоваться Caché-Git. Для этого в «Портале управления системой» выберите «Администрирование системы > Конфигурация > Дополнительные настройки > Система контроля версий». Для нужных вам областей отметьте класс %SourceControl.Git и нажмите «OK». Пример в этом туториале будет работать с областью SAMPLES, поэтому выберите класс %SourceControl.Git как класс системы контроля версий для неё.

    ***

    После установки, в Caché Studio при выборе области, в которой Caché-Git назначен как система контроля версий, появится меню «Git».

    Настройка


    Чтобы настроить Caché-Git выберите меню «Git > Settings» в Caché Studio и укажите два параметра:

    • Путь к файлу tortoiseproc.exe. Это файл из программы TortoiseGit
    • Путь к временной папке, в которой будут создаваться локальные репозитории.

    Эти параметры общие для всех областей.

    Настройки TortoiseGit вызываются через меню «Git > Tortoise Git Settings».

    Работа с локальным репозиторием


    Откройте область SAMPLES. Чтобы проинициализировать репозиторий в области, выберите меню «Git > Create repo» и нажмите пару раз «OK». Меню Git приобретёт полный вид.

    В инспекторе выберите элемент, который вы хотите добавить в Git, щёлкните по нему правой кнопкой и в контекстном меню Git выберите «Add to SourceControl».

    Затем выберите пункт меню «Git > Commit». В нижней части открывшегося окна выберите все файлы и добавьте (щелчок правой кнопкой > Add) их к версионным. Если файлов нет — поставьте галочку Show Unversioned Files. Напишите комментарий к коммиту. Нажмите OK, а затем Close.

    Файл sc-list.txt содержит список элементов, которые отслеживаются Caché-Git. Он нужен для того, чтобы передавать между двумя репозиториями информацию о программах, которые контролируются Git.

    Два важных параграфа

    Всякий раз, когда вы добавляете новый элемент к Caché-Git или сохраняете уже существующий, этот элемент экспортируется во временную папку, поэтому при вызове команд TortoiseGit (таких как, например, commit, push, revert и так далее) нет необходимости выгружать все программы (Git >Export All), которые отслеживаются Caché-Git.

    При импорте наоборот. Во-первых, при pull или revert может измениться значительная часть программ. Во-вторых, вызов окон TortoiseGit из Caché Studio асинхронный и нет возможности узнать, когда то или иное окно закрыто и закончилась операция обновления файлов. ПОЭТОМУ. После всех операций, выполненных TortoiseGit, которые могут менять содержимое рабочей папки, выберите пункт меню «Git > Import All». Это команды — Clone, Pull, Fetch, Revert. Всякий раз, когда при выполнении одной из этих команд в окне вывода будет появляться напоминание «Choose Import All menu after work with Git»

    Работа с удалённым репозиторием

    Загрузить содержимое своего репозитория на сервер можно, выбрав пункт меню «Git > Push» и указав в поле «Arbitrary URL» адрес репозитория.

    Подключение к репозиторию

    Каждый локальный репозиторий Caché-Git хранится внутри подпапки папки указанной как временной при настройке (обычно, это c:\temp). Имя этой подпапки совпадает с именем области (namespace), например c:\temp\USER или c:\temp\SAMPLES.

    Чтобы подключиться к удалённому репозиторию — выберите меню «Git > Clone». Введите имя репозитория, например «http://git.assembla.com/demo.git». TortoiseGit сам добавит имя папки demo к пути c:\temp\user, так что получится c:\temp\user\demo. Сотрите последнее «\demo», так чтобы осталось только c:\temp\user. Это нужно сделать только при клонировании, дальше при выполнении команд push, pull и так далее ничего не нужно будет менять.


    Использование


    Основной рабочий цикл выглядит так:

    1. Выполните Pull.
    2. Разберите конфликты в TortoiseGit, если есть
    3. Чтобы загрузить изменения с диска в Caché, выберите меню Import All.
    4. Выполните изменения в Caché Studio.
    5. [Необязательно] Чтобы принудительно выгрузить изменения с диска в Caché, выберите меню Export All.
    6. Выберите Commit
    7. Выберите Push или из меню Caché Studio или сразу после Commit.


    Пример установки и работы можно посмотреть на видео:
    InterSystems
    InterSystems IRIS: СУБД, ESB, BI, Healthcare

    Comments 1

      +1
      Отличный проект, пользуюсь постоянно.
      Начиная с коммита 0564b.. можно определять хуки, которые запускаются при выборе действий из меню Git. Для этого необходимо создать метод с сигнатурой:

      ClassMethod MethodName(Command, InternalName) As %Status

      где Command — название пункта меню, выбранного пользователем, а InternalName это то, с чем работает сейчас Cache-tort-git (класс, рутина и т.д.) и зарегистрировать его установив глобал:

      set ^Git("settings","hook") = $lb("ClassName","MethodName")

      Пример использования в проекте MDX2JSON, хук при каждом коммите записывает в код хэш последнего коммита для быстрой идентификации версии.

      Only users with full accounts can post comments. Log in, please.