Files
2026-09-06 13:51:15 +00:00

2.6 KiB

name, title, description
name title description
git-forge-management Git Forge Management (Self-Hosted) Управление проектами на self-hosted forges (Gitea, GitLab CE) — создание репозиториев, push, mirroring между форджами. Дополняет github-repo-management для не-GitHub платформ.

Общий шаблон

Самодельный forge (Gitea, GitLab CE) даёт REST API, совместимый с GitHub по структуре эндпоинтов, но требует Basic Auth (user:password) вместо Bearer-токена.

AUTH="-u username:password"
BASE="https://gitea.example.com/api/v1"

Шаг 1: Создать репозиторий через API

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 локального проекта

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:

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)