diff --git a/deploy.sh b/deploy.sh index 9e06efc..32510c0 100755 --- a/deploy.sh +++ b/deploy.sh @@ -18,7 +18,16 @@ step() { printf '\n\033[0;32m▸ %s\033[0m\n' "$1"; } fail() { printf '\033[0;31m✖ %s\033[0m\n' "$1" >&2; exit 1; } step "گرفتنِ کدِ تازه ($BRANCH)" -git fetch origin "$BRANCH" || fail "به gitea وصل نشد." +# DEPLOY_BUNDLE=/مسیر/فایل.bundle: کد از یک git bundle، نه از gitea (مثلِ deploy.shِ بک‌اند): برای وقتی که سرور +# به gitea نمی‌رسد یا اعتبارنامه ندارد. فقط وقتی صریحاً داده شود؛ بی‌آن نرسیدن به gitea دیپلو را می‌ایستاند. +if [ -n "${DEPLOY_BUNDLE:-}" ]; then + [ -f "$DEPLOY_BUNDLE" ] || fail "DEPLOY_BUNDLE=$DEPLOY_BUNDLE وجود ندارد." + git bundle verify "$DEPLOY_BUNDLE" >/dev/null 2>&1 || fail "bundle معتبر نیست یا کامیتِ پایه‌اش این‌جا نیست." + git fetch "$DEPLOY_BUNDLE" "$BRANCH:refs/remotes/origin/$BRANCH" || fail "گرفتن از bundle نشد." +else + git fetch origin "$BRANCH" || fail "به gitea وصل نشد (اگر فقط از این سرور: DEPLOY_BUNDLE، بالای همین خط)." +fi +printf ' origin/%s = %s\n' "$BRANCH" "$(git rev-parse --short "origin/$BRANCH")" if [ -n "$(git status --porcelain --untracked-files=no)" ]; then mkdir -p .deploy-backups PATCH=".deploy-backups/local-changes-$(date +%Y%m%d-%H%M%S).patch"