Этот операторский инструмент связывает историю Git, задачи GitHub/GitLab/Jira и события Sentry с
методами существующей CPG. Он полезен для анализа владельцев, истории изменений, инцидентов и
горячих точек. Это не корневая команда src.cli и не обязательная часть обычного импорта.
Хранение и эффект
CLI читает CPG через GoCPG gRPC по явному пути --duckdb. Синтетические теги и связи существуют
как объекты совместимости только в текущем процессе: инструмент не записывает их в CPG проекта.
Если передан --pg-url, исходные метаданные могут добавляться или обновляться в PostgreSQL —
например, в external_context, file_commit_history и таблицах runtime-метрик.
Следовательно:
items_synced,tags_createdиedges_createdописывают работу запуска, а не устойчивую мутацию CPG;- без PostgreSQL исходные внешние записи не сохраняются;
- перед пилотной синхронизацией нужно ограничить область и сделать резервную копию PostgreSQL.
Источник реализации — src/services/external_context/orchestrator.py.
Предварительные условия
- актуальная CPG CodeGraph и доступный GoCPG gRPC runtime;
- соответствующий checkout репозитория для Git-корреляции;
- необязательная схема PostgreSQL, если внешние метаданные должны храниться устойчиво;
- минимально необходимые права GitHub, GitLab, Jira или Sentry для выбранного источника.
До комбинированного запуска проверьте каждый источник отдельно.
История Git
python -m src.services.external_context.orchestrator --duckdb data/projects/PROJECT.duckdb --repo-path C:\work\project --sync-git --git-since-days 30 --git-max-commits 500
По умолчанию берутся 90 дней и не более 1 000 коммитов. --no-blame снижает стоимость запуска,
но делает сопоставление авторов менее точным.
Задачи
Для GitHub и GitLab используется --issue-repo, для Jira — --issue-project и обычно
--issue-url:
python -m src.services.external_context.orchestrator --duckdb data/projects/PROJECT.duckdb --sync-issues --issue-provider github --issue-repo OWNER/REPOSITORY --issue-token TOKEN
python -m src.services.external_context.orchestrator --duckdb data/projects/PROJECT.duckdb --sync-issues --issue-provider jira --issue-project KEY --issue-url https://jira.example.com --issue-token TOKEN
Текущий CLI принимает токен аргументом. Он может попасть в историю shell или список процессов. Запускайте команды только через защищённую операторскую обёртку, которая не сохраняет секреты; не вставляйте боевые токены в общий терминал и документацию.
Sentry
python -m src.services.external_context.orchestrator --duckdb data/projects/PROJECT.duckdb --sync-sentry --sentry-org ORG --sentry-project PROJECT --sentry-token TOKEN
Для собственного экземпляра добавьте --sentry-url. Ограничение на секрет в командной строке
остаётся тем же.
Общий запуск и статистика
--sync-all всегда включает Git, а задачи и Sentry добавляет только при наличии их обязательных
селекторов. Передавайте --pg-url, только если намерены записывать данные в PostgreSQL.
python -m src.services.external_context.orchestrator --duckdb data/projects/PROJECT.duckdb --repo-path C:\work\project --sync-all --issue-provider gitlab --issue-repo GROUP/REPOSITORY --issue-token TOKEN --sentry-org ORG --sentry-project PROJECT --sentry-token TOKEN --pg-url POSTGRES_URL
python -m src.services.external_context.orchestrator --duckdb data/projects/PROJECT.duckdb --stats --pg-url POSTGRES_URL
Результат содержит ошибки по каждому источнику. При частичном сбое разбирайте источники отдельно; общий успех подтверждается статусом каждого источника.
Диагностика и откат
- Если GoCPG недоступен, восстановите runtime до повтора; не открывайте CPG вторым писателем.
- Если методы не сопоставились, проверьте путь репозитория, свежесть CPG, пути файлов и окно дат.
- Если запись в PostgreSQL не нужна, не передавайте
--pg-url. - Откатывайте устойчивые метаданные из резервной копии или транзакцией по источнику; синтетические теги текущего процесса исчезают после его завершения.
Источник истины
- Оркестратор и CLI:
src/services/external_context/orchestrator.py - Граница чтения и хранения:
src/services/external_context/base.py - Адаптеры:
src/services/external_context/git_sync.py,issue_sync.py,sentry_sync.py - Обработка данных: Безопасность LLM