Files
git-forge-management/SKILL.md
T
2026-09-06 13:51:15 +00:00

73 lines
2.6 KiB
Markdown

---
name: git-forge-management
title: "Git Forge Management (Self-Hosted)"
description: "Управление проектами на self-hosted forges (Gitea, GitLab CE) — создание репозиториев, push, mirroring между форджами. Дополняет github-repo-management для не-GitHub платформ."
---
## Общий шаблон
Самодельный forge (Gitea, GitLab CE) даёт REST API, совместимый с GitHub по структуре эндпоинтов, но требует Basic Auth (user:password) вместо Bearer-токена.
```bash
AUTH="-u username:password"
BASE="https://gitea.example.com/api/v1"
```
## Шаг 1: Создать репозиторий через API
```bash
curl -s -X POST "${BASE}/user/repos" \
${AUTH} \
-H "Content-Type: application/json" \
-d '{
"name": "repo-name",
"description": "Описание",
"private": false,
"auto_init": false
}'
```
HTTP 201 = создан. HTTP 409 = уже существует.
## Шаг 2: Push локального проекта
```bash
cd /path/to/project
git init
git config user.name "username"
git config user.email "user@example.com"
git remote add origin "https://user:password@gitea.example.com/user/repo-name.git"
git add -A
git commit -m "Initial commit"
git push -u origin master
```
**Важно:** Gitea по умолчанию использует ветку `master`. Если forge создал `main` — переименовать локальную.
## Шаг 3: Push mirror на другой forge
Push mirror настраивается в **Settings → Git Hooks/Mirrors → Add Push Mirror** в UI Gitea.
Через API:
```bash
curl -s -X PATCH "${BASE}/repos/user/repo-name" \
${AUTH} \
-H "Content-Type: application/json" \
-d '{
"mirror_interval": "8h",
"mirror_address": "https://token@gitverse.ru/user/repo-name.git"
}'
```
Требуется: репозиторий на целевом forge уже существует.
## Критические правила
- **НИКОГДА** не удалять cronjob, когда пользователь говорит "stop reminder" — только `deliver: local`.
- **НИКОГДА** не удалять файлы пользователя без явного подтверждения.
- Пароли и токены не сохранять в коде, только передавать через переменные или одноразовый `-u`.
## Связанные навыки
- `github-repo-management` — для GitHub (gh CLI, GitHub API)