Files
dbx-orderlist/push_to_gitea.sh
T

96 lines
3.0 KiB
Bash

#!/usr/bin/env bash
# =================================================================
# Push project to Gitea (Ubuntu / Linux / macOS)
# Usage:
# ./push_to_gitea.sh
# ./push_to_gitea.sh "commit message"
# 비밀번호/토큰은 이 파일에 절대 저장하지 않습니다.
# HTTPS 인증은 Git Credential Manager / git-credential-store /
# 또는 push 시 직접 입력으로 처리됩니다.
# =================================================================
set -euo pipefail
REMOTE_URL="https://gitea.no1king.freeddns.org/king/dbx-orderlist.git"
BRANCH="main"
cd "$(dirname "$0")"
if ! command -v git >/dev/null 2>&1; then
echo "[ERROR] git 가 설치되어 있지 않습니다." >&2
exit 1
fi
# ---- 1) 저장소 초기화 (이미 있으면 그대로 사용) ----
if [ ! -d ".git" ]; then
echo "[INFO] Git 저장소를 초기화합니다."
if ! git init -b "$BRANCH" 2>/dev/null; then
git init
git symbolic-ref HEAD "refs/heads/$BRANCH"
fi
else
echo "[INFO] 이미 Git 저장소가 초기화되어 있습니다."
fi
# ---- 2) 현재 브랜치를 main 으로 맞춤 ----
current_branch="$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo HEAD)"
if [ "$current_branch" != "$BRANCH" ]; then
if [ "$current_branch" = "HEAD" ]; then
git checkout -b "$BRANCH" 2>/dev/null || true
else
echo "[INFO] 현재 브랜치 $current_branch -> $BRANCH 로 이름 변경합니다."
git branch -M "$BRANCH"
fi
fi
# ---- 3) origin 설정 / 확인 ----
if ! git remote get-url origin >/dev/null 2>&1; then
echo "[INFO] origin 을 추가합니다: $REMOTE_URL"
git remote add origin "$REMOTE_URL"
else
existing="$(git remote get-url origin)"
if [ "$existing" != "$REMOTE_URL" ]; then
echo "[INFO] origin URL 이 다릅니다."
echo " 기존: $existing"
echo " 변경: $REMOTE_URL"
git remote set-url origin "$REMOTE_URL"
else
echo "[INFO] origin 이 이미 올바르게 설정되어 있습니다."
fi
fi
# ---- 4) 변경 사항 add ----
git add -A
# ---- 5) status 보여주고 사용자 확인 ----
echo
echo "=============== git status ==============="
git status
echo "=========================================="
echo
read -r -p "이 내용을 커밋 & push 하시겠습니까? (Y/N): " CONFIRM
case "${CONFIRM:-N}" in
[yY]|[yY][eE][sS]) ;;
*) echo "[INFO] 사용자가 취소했습니다."; exit 0;;
esac
# ---- 6) 커밋 메시지 결정 ----
MSG="${1:-}"
if [ -z "$MSG" ]; then
read -r -p "커밋 메시지를 입력하세요 (빈 값이면 'update project'): " MSG
fi
MSG="${MSG:-update project}"
# ---- 7) 커밋 (변경 없으면 건너뜀) ----
if ! git diff --cached --quiet; then
git commit -m "$MSG"
else
echo "[INFO] 스테이징된 변경이 없습니다. 커밋을 건너뜁니다."
fi
# ---- 8) push ----
echo "[INFO] origin/$BRANCH 로 push 합니다. 인증창이 뜨면 Gitea ID/비밀번호 또는 토큰을 입력하세요."
git push -u origin "$BRANCH"
echo
echo "[OK] 완료되었습니다."