57 lines
3.9 KiB
Markdown
57 lines
3.9 KiB
Markdown
# Синхронизация `public` -> `gitverse`
|
||
|
||
## Назначение
|
||
|
||
Скрипт `sync-gitverse` копирует содержимое `public` в папку `gitverse`, затем выполняет коммит и пуш в репозиторий внутри `gitverse`.
|
||
|
||
## Запуск
|
||
|
||
- Через npm:
|
||
- `npm run sync-gitverse`
|
||
- Напрямую:
|
||
- `node scripts/sync-gitverse.mjs`
|
||
- С явными путями:
|
||
- `node scripts/sync-gitverse.mjs <sourceDir> <targetDir>`
|
||
|
||
По умолчанию:
|
||
|
||
- `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` есть локальные несохраненные изменения, которые нужно оставить. |