# Синхронизация `public` -> `gitverse` ## Назначение Скрипт `sync-gitverse` копирует содержимое `public` в папку `gitverse`, затем выполняет коммит и пуш в репозиторий внутри `gitverse`. ## Запуск - Через npm: - `npm run sync-gitverse` - Напрямую: - `node scripts/sync-gitverse.mjs` - С явными путями: - `node scripts/sync-gitverse.mjs ` По умолчанию: - `sourceDir = public` - `targetDir = gitverse` ## Что делает скрипт 1. Проверяет, что исходная папка существует. 2. В целевой папке удаляет всё, кроме: - `.git` - `.gitverse` 3. Копирует содержимое `public` в `gitverse` (файлы `.png` пропускаются — в деплое используются WebP и остальные форматы). 4. В репозитории `gitverse` выполняет: - `git add .` - `git commit -m "sync public YYYY-MM-DD HH:mm"` (только если есть изменения) - `git push` 5. После успешного пуша открывает в системном браузере по умолчанию: `https://mamadaevv.gitverse.site/me/` Если изменений после копирования нет, коммит и пуш не делаются. ## Инструкция для агента (Cursor) Когда пользователь просит **выложить на GitVerse**, **собрать/задеплоить gitverse**, **синхронизировать с gitverse** или аналогично: 1. **Сборка `public/`:** если менялись `src/pages/**` или `src/partials/**` — `npm run build:pages`; если шрифты/Plyr/`package.json` или `scripts/copy-vendor.mjs` — `npm run build` (сначала `vendor:copy`, затем страницы). См. [`docs/vendor-assets.md`](vendor-assets.md). 2. **Синк и пуш:** выполни `npm run sync-gitverse` из корня. Нужны разрешения **network** и **git_write** (SSH на GitVerse, пуш из папки `gitverse`). 3. **Ожидания:** скрипт не копирует файлы `.png` в `gitverse`. После **успешного** `git push` открывается системный браузер с `https://mamadaevv.gitverse.site/me/`. Если изменений в `gitverse` после копирования нет — коммит/пуш не выполняются, браузер не открывается. 4. **Не вызывай** `sync-gitverse` без запроса пользователя: скрипт очищает целевую папку (кроме `.git` и `.gitverse`) и пушит в remote. 5. **Корневой git репозиторий** этого проекта считается **только локальным**: не пушь из корня в `origin` и не настраивай remote без явной просьбы пользователя с URL. Внешняя выкладка — через `gitverse`, не через `git push` в корне. 6. Деплой на VPS — отдельный сценарий, см. **`docs/vps-deploy.md`**. Подробности и ограничения — в разделах выше. ## Требования - В `gitverse` уже должен быть инициализирован git-репозиторий (папка `.git`). - Должен быть настроен доступ на push (SSH-ключ/права). ## Важно - Скрипт удаляет в `gitverse` все файлы и папки, кроме `.git` и `.gitverse`. - Не запускай скрипт, если в `gitverse` есть локальные несохраненные изменения, которые нужно оставить.