Перейти к содержимому

Руководство по управлению несколькими репозиториями MonoSpecs

Редактировать страницу

MonoSpecs — это подход HagiCode к управлению несколькими репозиториями. Он отслеживает и управляет субрепозиториями через monospecs.yaml, и он работает для любого проекта, которому требуется одно место для координации нескольких независимых репозиториев.

Файл конфигурации

monospecs.yaml является основой всего управленческого решения и определяет:

  • Список и расположение субрепозиториев
  • URL-адрес Git для каждого репозитория
  • Отображаемое имя и значок
  • Поведение интеграции с OpenSpec

Отличия от обычных репозиториев

ОсобенностьОбычный репозиторийУправляемый проект MonoSpecs
Расположение OpenSpecКорневой каталог openspec/Корневой каталог основного репозитория openspec/
Изменить областьОграничено текущим репозиториемМожет включать несколько субрепозиториев
Чистота субрепозиторияСпецификации смешаны с кодомСпецификации установлены в основном репозитории, субрепозитории более чистые.
Автоматическая фиксация архиваТребуется ручная фиксация спецификацииcommit_when_archive: true автоматически фиксирует спецификации в основной репозиторий
  • Единое управление: управляйте всеми субрепозиториями в одном файле конфигурации.
  • Поддержка автоматизации: предоставляет метаданные репозитория для сценариев и инструментов.
  • Удобство для искусственного интеллекта: структурированная конфигурация помогает агенту искусственного интеллекта понимать взаимоотношения с репозиториями.
  • Интеграция OpenSpec: бесшовная интеграция с рабочим процессом управления изменениями.
  • Чистые субрепозитории: спецификации хранятся в основном репозитории, субрепозитории содержат только реальный код.

Сначала используйте MonoSpecs в таких сценариях:

1. Совместная разработка нескольких репозиториев Когда проект разделен на несколько независимых репозиториев:

  • Интерфейсное приложение, серверная служба и настольное приложение разрабатываются отдельно.
  • Необходимость координации версий и зависимостей между репозиториями.
  • Документация и вспомогательные проекты отделены от основного кода.

2. Вспомогательное управление проектами Используйте MonoSpecs для управления:

  • Проект документации
  • Официальный сайт
  • Инструменты и скрипты для создания
  • Каждый репозиторий поддерживает собственный контроль версий.

3. Межрепозиторийная разработка Функция, требующая внесения изменений в несколько репозиториев:

  • Нужно отслеживать изменения в каких репозиториях
  • Автоматически фиксировать спецификации для исправления целевого репозитория
  • Координация обновлений версий и зависимостей

Выполните следующие шаги для завершения инициализации monospecs:

Создайте пустой git папка в вашем основном репозитории (примечание: это git, не repos/ - это соглашение моноспеков):

Окно терминала
mkdir git
cd git
git init
cd ..

Создайте monospecs.yaml файл конфигурации в корневом каталоге вашего основного репозитория:

version: "1.0"
commit_when_archive: true
repositories:
- path: "repos/frontend"
url: "https://github.com/your-org/frontend.git"
displayName: "Frontend App"
icon: "🌐"
- path: "repos/backend"
url: "https://github.com/your-org/backend.git"
displayName: "Backend Service"
icon: "⚙️"

Элементы конфигурации:

Элемент конфигурацииТипТребуетсяОписание
versionстрокаДаВерсия файла конфигурации
commit_when_archiveлогическое значениеНетСледует ли автоматически фиксировать спецификации при архивировании (не фиксировать код субрепозитория)
repositoriesмассивДаСписок конфигурации репозитория
repositories[].pathстрокаДаПуть к репозиторию (относительно корня проекта)
repositories[].urlстрокаДаURL-адрес репозитория Git
repositories[].displayNameстрокаНетОтображаемое имя репозитория
repositories[].iconстрокаНетЗначок репозитория (эмодзи)

Добавить субрепозитории в основной репозиторий

Заголовок раздела «Добавить субрепозитории в основной репозиторий»

Добавьте все подрепозитории в repos/ каталог. Этот каталог должен быть исключен из системы контроля версий Git основного репозитория, чтобы избежать отслеживания содержимого подрепозитория:

# Exclude all sub-repositories
repos/

3. Добавьте родительский репозиторий в HagiCode.

Заголовок раздела «3. Добавьте родительский репозиторий в HagiCode.»

Если вы используете настольное приложение HagiCode, откройте его и добавьте основной репозиторий в качестве проекта. Нажмите кнопку «Добавить проект» или «+» на главном экране, выберите папку основного репозитория, и вы увидите все подрепозитории и информацию об их статусе.

Используйте monospecs.yaml конфигурация для клонирования всех настроенных субрепозиториев в repos/ каталог:

Это клонирует все подрепозитории на основе URL-адресов, указанных в файле конфигурации.

version: "1.0"
commit_when_archive: true
repositories:
# ... repository configurations

Каждый субрепозиторий может иметь:

  • Папка изменений OpenSpec (openspec/)
  • Независимый .git/ каталог
  • Необязательно AGENTS.md для настройки AI-агента

При добавлении нового субрепозитория в monospecs.yaml repositories массив:

repositories:
- path: "repos/new-service"
url: "https://github.com/HagiCode-org/new-service.git"
displayName: "New Service"
icon: "🆕"

При изменении URL-адресов репозитория или метаданных:

  1. Редактировать monospecs.yaml обновить соответствующие записи
  2. Убедитесь, что синтаксис YAML верен.
  3. При синхронизации изменений вручную обновите конфигурацию локального репозитория.

AGENTS.md файл содержит рекомендации для AI-агента, специфичные для репозитория:

Техническая информация по стеку

  • Фреймворк и инструменты сборки
  • Соглашения о коде и практика именования
  • Управление версиями и настройка развертывания

Поведение, зависящее от проекта

  • Расширения конфигурации и особые требования
  • Шаблоны интеграции OpenSpec
  • Потребности в координации между репозиториями

Использование AGENTS.md позволяет ИИ-агенту:

  • Понимание отношений и зависимостей репозитория
  • Генерация кода и рефакторинг в нескольких репозиториях
  • Поддерживать согласованность в управлении версиями и конфигурациях.

Независимо от того, управляете ли вы управляемым проектом monospecs или обычным репозиторием, вы можете использовать рабочий процесс OpenSpec HagiCode:

Обычный репозиторий:

  • OpenSpec в корне openspec/ каталог
  • Изменения касаются только текущего репозитория.

Проект, управляемый MonoSpecs:

  • OpenSpec читает monospecs.yaml конфигурация
  • Изменения отслеживаются субрепозиторием
  • Спецификации автоматически фиксируются для достижения правильных целей

Когда commit_when_archive: true:

  • Спецификации автоматически фиксируются в основном репозитории.
  • Код субрепозиториев не зафиксирован (остается отдельным)
  • Упрощает управление спецификациями — для субрепозиториев не требуется фиксация спецификаций вручную.

Субрепозитории поддерживают независимый контроль версий:

  • Вносить фактические изменения кода в свои собственные репозитории.
  • Спецификации фиксируются отдельно (из основного репозитория при архивировании)
  • Используйте kebab-case (строчные буквы и дефисы) для путей к хранилищу.
  • Используйте простые, описательные отображаемые имена на китайском языке.
  • Используйте соответствующие смайлы в качестве значков
  • Держите его кратким и описательным
  • Используйте единообразные имена для похожих репозиториев.
  • Выберите значки, обозначающие назначение репозитория.

Синхронизировать конфигурацию с фактическим статусом

  • Регулярно проверяйте monospecs.yaml отражает фактическую структуру репозитория
  • Обновлять или удалять записи при добавлении или удалении репозиториев.
  • Тестируйте изменения, чтобы убедиться в правильности конфигурации.

Контроль версий для конфигурации

  • Отслеживать изменения файла конфигурации с помощью git
  • Документируйте причины серьезных изменений конфигурации.
  • Тегируйте версии файла конфигурации для простого отката

Если monospecs.yaml файл не найден в корне проекта:

  1. Проверьте, существует ли файл в правильном месте
  2. Убедитесь, что вы находитесь в правильном рабочем каталоге
  3. Проверьте наличие опечаток в имени файла конфигурации.

Распространенные проблемы с синтаксисом YAML:

  • Неправильный отступ (используйте пробелы, а не табуляции)
  • Отсутствующие или лишние кавычки вокруг строк
  • Недопустимые типы данных (строки нуждаются в кавычках, числа — нет)
  • Отсутствуют обязательные поля (например, path или url)

Если вновь добавленный репозиторий не отображается:

  1. Проверьте path правильно в monospecs.yaml
  2. Убедитесь, что репозиторий успешно клонирован.
  3. Проверьте, существует ли репозиторий в ожидаемом месте.

Если клонирование репозитория не удалось:

  1. Проверьте сетевое соединение
  2. Убедитесь, что URL-адрес репозитория Git верен.
  3. Проверьте наличие проблем с аутентификацией
  4. Просмотр состояния контейнера Docker
  5. Проверьте наличие места на диске

Для получения более подробной информации обратитесь к документации monospecs и проверьте репозиторий HagiCode, чтобы найти примеры конфигурации.