ab4e83b042
Made-with: Cursor
119 lines
4.8 KiB
Markdown
119 lines
4.8 KiB
Markdown
# OpenClaude и Git-репозитории
|
||
|
||
Как организовать работу OpenClaude с GitHub/GitLab/Gitea и похожими сервисами.
|
||
|
||
## 1) Что значит "научить OpenClaude работать с репозиториями"
|
||
|
||
Обычно это 3 уровня:
|
||
|
||
1. **Локальный уровень**: OpenClaude работает в локальном git-репозитории (`clone`, `branch`, `commit`).
|
||
2. **Remote уровень**: пуш/PR/issue через токены и CLI (`gh`, `glab`, `tea`).
|
||
3. **Контекст и автоматизация**: доступ к данным репозитория через MCP-инструменты.
|
||
|
||
## 2) Базовая схема (рекомендуется)
|
||
|
||
- Клонировать репозиторий локально.
|
||
- Запускать OpenClaude из корня проекта.
|
||
- Для GitHub использовать `gh auth login`.
|
||
- Для GitLab использовать `glab auth login`.
|
||
- Для Gitea использовать SSH-ключи или PAT в remote URL/credential manager.
|
||
|
||
Это даёт OpenClaude полный цикл: читать код, редактировать, запускать тесты, делать коммиты и PR.
|
||
|
||
## 3) Настройка аутентификации без постоянного ввода пароля
|
||
|
||
Подробный SSH-гайд с типовыми ошибками:
|
||
|
||
- `docs/github-ssh-setup-and-troubleshooting.md`
|
||
|
||
### GitHub
|
||
|
||
```bash
|
||
gh auth login
|
||
gh auth status
|
||
```
|
||
|
||
### GitLab
|
||
|
||
```bash
|
||
glab auth login
|
||
glab auth status
|
||
```
|
||
|
||
### Универсально для git HTTPS
|
||
|
||
```bash
|
||
git config --global credential.helper store
|
||
```
|
||
|
||
Лучше и безопаснее - SSH:
|
||
|
||
```bash
|
||
ssh-keygen -t ed25519 -C "you@example.com"
|
||
# добавить публичный ключ в GitHub/GitLab/Gitea
|
||
git remote set-url origin git@github.com:OWNER/REPO.git
|
||
```
|
||
|
||
## 4) Минимальный безопасный процесс работы с кодом
|
||
|
||
1. Создать отдельную feature-ветку.
|
||
2. Делать небольшие коммиты с понятными сообщениями.
|
||
3. Перед push запускать тесты/lint.
|
||
4. Не хранить секреты в репозитории (`.env`, ключи, токены).
|
||
5. Для main/master включить protected branch и PR review.
|
||
|
||
## 5) Как подключить репозиторий как источник знаний (RAG)
|
||
|
||
Если цель - чтобы OpenClaude "знал проект":
|
||
|
||
- индексировать `README`, `docs`, ADR, API-контракты, runbook
|
||
- не индексировать шум (`node_modules`, `dist`, lock-файлы без необходимости)
|
||
- регулярно переиндексировать после merge крупных изменений
|
||
|
||
Простой путь:
|
||
|
||
- `git clone` репозиторий
|
||
- копировать нужные папки в `docs/rag-mcp-starter/docs`
|
||
- запускать `index.py`
|
||
- использовать `search_docs` и `answer_with_citations`
|
||
|
||
## 6) MCP для Git-платформ: что имеет смысл добавить
|
||
|
||
Полезные MCP-инструменты:
|
||
|
||
- `list_prs(repo)`
|
||
- `get_pr_diff(repo, pr_number)`
|
||
- `list_issues(repo, label)`
|
||
- `create_issue(repo, title, body)`
|
||
- `comment_pr(repo, pr_number, body)`
|
||
- `get_file_at_ref(repo, path, ref)`
|
||
|
||
Такой слой позволяет OpenClaude работать не только с локальным checkout, но и с удаленным контекстом.
|
||
|
||
## 7) Практика для self-hosted Git (Gitea/Forgejo/GitLab self-hosted)
|
||
|
||
1. Убедиться в доступности API/SSH с сервера.
|
||
2. Создать сервисный токен с минимальными правами (least privilege).
|
||
3. Хранить токен в переменных окружения или secrets manager.
|
||
4. Ограничить доступ по IP/ACL.
|
||
5. Вести аудит действий (кто/когда создал PR/comment/push).
|
||
|
||
## 8) Частые ошибки
|
||
|
||
- OpenClaude запущен не из корня репозитория.
|
||
- Нет прав на push в remote.
|
||
- PAT истек или не имеет scope для PR/issues.
|
||
- Смешивание нескольких аккаунтов в одном credential helper.
|
||
- Отсутствуют локальные зависимости проекта (тесты не запускаются).
|
||
|
||
## 9) Рабочий чек-лист перед началом
|
||
|
||
```bash
|
||
git status
|
||
git remote -v
|
||
gh auth status || true
|
||
glab auth status || true
|
||
```
|
||
|
||
Если всё ок - можно давать OpenClaude задачи на полный цикл "изменение -> тест -> commit -> PR".
|