Работа с Git

В Tengri поддержана работа с репозиториями в системе контроля версий Git.

Поддержка Git позволяет решить следующие задачи:

  • Организация эффективной совместной работы аналитиков внутри одной инсталляции Tengri

  • Управление кодовой базой ноутбуков Tengri из центрального репозитория

  • Перемещение кодовой базы ноутбуков между разными инсталляциями Tengri посредством CI/CD-пайплайнов

git
Общая схема разработки в системе контроля версий Git

Рабочие пространства и репозитории

Рабочее пространство — это корневой элемент структуры, который состоит из репозиториев. Активное рабочее пространство отображается в левой боковой панели в корне дерева с ноутбуками.

Дерево ноутбуков отображает все репозитории активного рабочего пространства. Для каждого репозитория в дереве отображается активная ветка и все его содержимое.

folder tree

Ветки репозиториев

Для каждого репозитория при его добавлении в рабочее пространство задается дефолтная ветка.

Активная ветка отображается рядом с именем репозитория. При нажатии на имя активной ветки открывается меню работы с ветками.

Действия с ветками:

  • Переключить текущую ветку (аналог git checkout)

  • Создать новую ветку и переключиться в нее (аналог git checkout -b)

  • Удалить ветку (аналог git branch -d)

Действия с репозиториями

Кнопки действий с репозиториями отображаются при наведении на строку репозитория в дереве.

Действия:

  • Влить текущую ветку в дефолтную ветку (аналог git merge)

  • Подтянуть изменения из дефолтной ветки в текущую ветку (аналог git merge)

  • Опубликовать текущую ветку в Git (аналог git push)

  • Создать папку в корне репозитория

  • Создать ноутбук в корне репозитория

При создании папки в ней автоматически создается пустой ноутбук. Папки без содержимого не поддерживаются. При удалении единственного ноутбука из папки папка также удаляется.

Действия с ноутбуками

Цвет иконки ноутбука в дереве отражает его текущее состояние:

  • Новый — создан, но ещё не опубликован в Git

  • Изменен — опубликован, но есть несохранённые изменения (черновик)

  • Опубликован — актуальная версия опубликована в Git, черновика нет

Кнопки действий с ноутбуками и папками отображаются при наведении на строку ноутбука или строку папки:

  • Publish — опубликовать черновик в Git (аналог git push)

  • Pull — подтянуть актуальную версию из Git в черновик (аналог git pull)

  • Rename — переименовать ноутбук

  • Delete — удалить ноутбук (опубликованные ноутбуки помечаются для удаления, неопубликованные удаляются сразу)

  • Restore — восстановить помеченный для удаления ноутбук

Разрешение конфликтов слияния

Если при публикации или обновлении обнаруживается конфликт версий, открывается диалог разрешения конфликтов.

Для каждой ячейки с конфликтом нужно выбрать: оставить свою версию, принять чужую или объединить обе.

git diff RU
Полная история коммитов по всем ячейкам c возможностью отката к предыдущим коммитам доступна во вкладке История.

Администрирование рабочих пространств и репозиториев

Во вкладке Настройки > Рабочие пространства и репозитории можно управлять рабочими пространствами и репозиториями.

workspace settings RU

Управление рабочими пространствами

  • Добавить репозиторий — Добавить репозиторий в это рабочее пространство

Управление репозиториями

  • Синхронизировать — подтянуть изменения из Git в дефолтную ветку репозитория

  • Переименовать

  • Удалить

После выполнения синхронизации показывается статистика: сколько ноутбуков добавлено, обновлено, удалено, сохранено с черновиками.

Добавление нового репозитория

При нажатии на Добавить репозиторий открывается меню добавления репозитория, в котором задаются параметры:

  • Имя репозитория — отображаемое имя репозитория

  • Режим репозитория — режим подключения репозитория

    • Локальный — создать локально в директории рабочего пространства

    • Удаленный — подключить внешний репозиторий

  • Удаленный URL — URL для режима Remote (HTTPS или SSH)

  • Ветка по умолчанию — дефолтная ветка (по умолчанию main)

В режиме Local путь генерируется автоматически: {workspace_dir}/{slug}.git. Предварительный путь показывается в форме при вводе имени.