#!/usr/bin/env bash # Откат ребрендинга ALL MARKET → Food Market. # По умолчанию dry-run (печатает план). С --apply реально откатывает: # 1) git revert диапазона pre-rebrand-all-market..HEAD (сохраняет историю), # 2) пересборка+редеплой стенда (~/deploy-stage.sh). # Публичный сайт (Astro) откатывается отдельно — см. docs/rebrand-rollback.md. set -euo pipefail TAG="pre-rebrand-all-market" APPLY=0 [[ "${1:-}" == "--apply" ]] && APPLY=1 cd "$(dirname "$0")/.." REPO="$(pwd)" if ! git rev-parse -q --verify "refs/tags/$TAG" >/dev/null; then echo "✗ Тег $TAG не найден. Нечего откатывать (или тег не создан)." >&2 exit 1 fi RANGE="$TAG..HEAD" COMMITS="$(git log --oneline "$RANGE" 2>/dev/null || true)" COUNT="$(git rev-list --count "$RANGE" 2>/dev/null || echo 0)" echo "── Откат ребрендинга ALL MARKET → Food Market ──" echo "Репозиторий: $REPO" echo "Якорь (тег): $TAG = $(git rev-parse --short "$TAG")" echo "Диапазон отката: $RANGE (коммитов: $COUNT)" echo "Коммиты диапазона:" echo "${COMMITS:- (пусто — откатывать нечего)}" | sed 's/^/ /' echo if [[ "$COUNT" -eq 0 ]]; then echo "Нет коммитов после тега — откат не требуется." exit 0 fi CMD_REVERT="git revert --no-edit $RANGE && git push origin main" CMD_DEPLOY="$HOME/deploy-stage.sh" if [[ "$APPLY" -eq 0 ]]; then echo "DRY-RUN. Будет выполнено (запусти с --apply):" echo " 1) $CMD_REVERT" echo " 2) $CMD_DEPLOY # пересборка+редеплой стенда api+web" echo echo "Жёсткая альтернатива кода (переписывает историю, только по согласованию):" echo " git reset --hard $TAG && git push --force-with-lease origin main" exit 0 fi echo "APPLY: выполняю откат…" echo "→ git revert --no-edit $RANGE" git revert --no-edit "$RANGE" echo "→ git push origin main" git push origin main echo "→ $CMD_DEPLOY" "$HOME/deploy-stage.sh" echo "✓ Откат кода и стенда выполнен. Публичный сайт откати отдельно."