mirror of
https://gitverse.ru/kpa39l/git-forge-management.git
synced 2026-09-29 09:15:05 +00:00
Initial commit: Hermes skill git-forge-management
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
---
|
||||
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)
|
||||
Reference in New Issue
Block a user