diff --git a/scripts/sync-gitea.sh b/scripts/sync-gitea.sh index 57bf530e..dfca9aed 100755 --- a/scripts/sync-gitea.sh +++ b/scripts/sync-gitea.sh @@ -63,6 +63,14 @@ run_with_retries() { done } +git_remote_cmd() { + if git "$@"; then + return 0 + fi + log_warning "Git 远端操作失败,切换到 HTTP/1.1 + relaxed SSL 兼容模式重试" + git -c http.sslVerify=false -c http.version=HTTP/1.1 "$@" +} + repo_api_url() { echo "${GITEA_API}/repos/${GIT_USER}/${REPO_NAME}" } @@ -72,7 +80,7 @@ repo_git_url() { } remote_repo_reachable() { - run_with_retries git ls-remote --exit-code origin HEAD >/dev/null 2>&1 + run_with_retries git_remote_cmd ls-remote --exit-code origin HEAD >/dev/null 2>&1 } current_branch_name() { @@ -238,9 +246,9 @@ push_changes() { # 推送 if [ -n "$GITEA_TOKEN" ]; then - run_with_retries git -c http.extraHeader="Authorization: token ${GITEA_TOKEN}" push -u origin "$branch" + run_with_retries git_remote_cmd -c http.extraHeader="Authorization: token ${GITEA_TOKEN}" push -u origin "$branch" else - run_with_retries git push -u origin "$branch" + run_with_retries git_remote_cmd push -u origin "$branch" fi if [ $? -eq 0 ]; then log_success "推送完成: $branch" @@ -250,13 +258,13 @@ push_changes() { fi if [ "$AUTO_PUSH_MAIN" = "1" ]; then - if run_with_retries git ls-remote --exit-code --heads origin main >/dev/null 2>&1; then - if run_with_retries git fetch origin main:refs/remotes/origin/main >/dev/null 2>&1; then + if run_with_retries git_remote_cmd ls-remote --exit-code --heads origin main >/dev/null 2>&1; then + if run_with_retries git_remote_cmd fetch origin main:refs/remotes/origin/main >/dev/null 2>&1; then if git merge-base --is-ancestor refs/remotes/origin/main HEAD; then if [ -n "$GITEA_TOKEN" ]; then - run_with_retries git -c http.extraHeader="Authorization: token ${GITEA_TOKEN}" push origin HEAD:main + run_with_retries git_remote_cmd -c http.extraHeader="Authorization: token ${GITEA_TOKEN}" push origin HEAD:main else - run_with_retries git push origin HEAD:main + run_with_retries git_remote_cmd push origin HEAD:main fi git branch -f main HEAD >/dev/null 2>&1 || true log_success "main 已快进到当前提交" @@ -268,9 +276,9 @@ push_changes() { fi else if [ -n "$GITEA_TOKEN" ]; then - run_with_retries git -c http.extraHeader="Authorization: token ${GITEA_TOKEN}" push origin HEAD:main + run_with_retries git_remote_cmd -c http.extraHeader="Authorization: token ${GITEA_TOKEN}" push origin HEAD:main else - run_with_retries git push origin HEAD:main + run_with_retries git_remote_cmd push origin HEAD:main fi git branch -f main HEAD >/dev/null 2>&1 || true log_success "main 已创建并指向当前提交"