diff --git a/玩值开发文档/8、部署/Gitea同步说明.md b/玩值开发文档/8、部署/Gitea同步说明.md index b6521de..bed610c 100644 --- a/玩值开发文档/8、部署/Gitea同步说明.md +++ b/玩值开发文档/8、部署/Gitea同步说明.md @@ -1,26 +1,37 @@ # 玩值电竞 App → Gitea 同步说明 -> 内网 Gitea 仓库:**http://192.168.1.201:3000/yongpxu/wzdj** -> (本机 Gitea 上原先不存在组织 `fnvtk`,已在用户 **yongpxu** 下创建同名仓库 `wzdj`,与 GitHub `fnvtk/wzdj` 对应。) -> **SSH**:`git@gitea-wzdj:yongpxu/wzdj.git`(见本机 `~/.ssh/config` 中 `Host gitea-wzdj`,端口 **2222**)。 -> 本地有更新会自动/手动推送到该仓库。 +> **默认上传目标(内网 Gitea)**:**`fnvtk/wzdj`** +> 网页: +> **SSH**(见本机 `~/.ssh/config` 的 `Host gitea-wzdj`,端口 **2222**):`git@gitea-wzdj:fnvtk/wzdj.git` + +说明:内网里的 **fnvtk** 是 **Gitea 用户账号**(与 GitHub 上的组织名 `fnvtk` 对应),不是「组织」实体。此前曾建在 **yongpxu** 下的 `wzdj` 已**发起所有权转移**至 **fnvtk**;在 **fnvtk** 账号在网页上**接受转移**之前,远程路径 `fnvtk/wzdj` 尚不可用,`git push gitea` 可能提示找不到仓库。 + +### 待处理:接受转移(任选其一) + +1. **网页**:使用 **fnvtk** 登录 Gitea → 通知/待办中接受 `wzdj` 仓库转移。 +2. **命令行**(需 **fnvtk** 当前密码;若钥匙串密码过期请先用环境变量): + `FNVTK_PASSWORD='你的密码' bash "玩值开发文档/8、部署/gitea_accept_transfer.sh"` + +接受完成后,执行 `git push gitea main` 即可。 + +若 **fnvtk** 密码与钥匙串不一致,请到「钥匙串访问」更新 **192.168.1.201**、账户 **fnvtk** 的密码,便于脚本与 `gitea_api_create_user_repo.sh` 使用。 ## 一、远程与分支 | 远程名 | 地址 | 说明 | |:---|:---|:---| | `origin` | https://github.com/fnvtk/wzdj.git | GitHub 主仓 | -| `gitea` | `git@gitea-wzdj:yongpxu/wzdj.git` | Gitea(内网,SSH) | +| `gitea` | `git@gitea-wzdj:fnvtk/wzdj.git` | Gitea(内网,默认上传) | 当前默认分支:`main`。 ### 管理员:允许「push 自动新建仓库」(可选) -若希望**任意用户**首次 `git push` 到不存在的路径即可建库,需 Gitea **站点管理员**在「管理后台」或通过 `app.ini` 开启(具体名称以当前 Gitea 版本为准): +若希望**任意用户**首次 `git push` 到不存在的路径即可建库,需 Gitea **站点管理员**在 `app.ini` 中开启(名称以版本为准): -- `[repository]` 下 **`ENABLE_PUSH_CREATE_USER = true`**(允许用户 push 建库) +- `[repository]` 下 **`ENABLE_PUSH_CREATE_USER = true`** -未开启时,可用本目录脚本 **`gitea_api_create_user_repo.sh`** 先建空库再推送。 +未开启时,可用 **`gitea_api_create_user_repo.sh`**(默认在 **fnvtk** 名下建库)先建空库再推送。 ## 二、自动同步(推荐) @@ -48,5 +59,5 @@ bash "玩值开发文档/8、部署/sync_to_gitea.sh" ## 五、检查是否已同步 -- 打开:http://192.168.1.201:3000/yongpxu/wzdj +- 打开: - 查看最新提交时间与本地 `git log -1` 一致即表示已同步。 diff --git a/玩值开发文档/8、部署/gitea_accept_transfer.sh b/玩值开发文档/8、部署/gitea_accept_transfer.sh new file mode 100755 index 0000000..2875133 --- /dev/null +++ b/玩值开发文档/8、部署/gitea_accept_transfer.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# 以「接收方 fnvtk」身份接受仓库转移(yongpxu/wzdj → fnvtk/wzdj) +# 本机钥匙串里 fnvtk 密码若与 Gitea 不一致会失败,请用环境变量传入当前密码: +# FNVTK_PASSWORD='…' bash 玩值开发文档/8、部署/gitea_accept_transfer.sh + +set -euo pipefail +GITEA_HTTP="${GITEA_HTTP:-http://192.168.1.201:3000}" + +if [[ -z "${FNVTK_PASSWORD:-}" ]]; then + FNVTK_PASSWORD=$(security find-internet-password -s 192.168.1.201 -a fnvtk -w 2>/dev/null || true) +fi +if [[ -z "${FNVTK_PASSWORD:-}" ]]; then + echo "[gitea_accept_transfer] 请设置 FNVTK_PASSWORD,或把正确密码写入钥匙串(主机 192.168.1.201,账户 fnvtk)" >&2 + exit 1 +fi + +curl -sS -u "fnvtk:${FNVTK_PASSWORD}" -X POST \ + "${GITEA_HTTP}/api/v1/repos/yongpxu/wzdj/transfer/accept" \ + -H "Content-Length: 0" + +echo +echo "[gitea_accept_transfer] 若返回 JSON 含 full_name: fnvtk/wzdj,则已就绪。随后:git push gitea main" diff --git a/玩值开发文档/8、部署/gitea_api_create_user_repo.sh b/玩值开发文档/8、部署/gitea_api_create_user_repo.sh index 6c0f5a5..c219d71 100755 --- a/玩值开发文档/8、部署/gitea_api_create_user_repo.sh +++ b/玩值开发文档/8、部署/gitea_api_create_user_repo.sh @@ -1,15 +1,21 @@ #!/bin/bash -# 在内网 Gitea 上通过 API 创建「当前登录用户」名下的空仓库(避免 push 建库被禁时的 403) -# 依赖:macOS 钥匙串已保存 http://192.168.1.201:3000 的账号密码(与 git credential-osxkeychain 一致) +# 在内网 Gitea 上通过 API 在指定用户名下创建空仓库(避免 push 建库被禁时的 403) +# 依赖:钥匙串已保存该用户在 http://192.168.1.201:3000 的密码;默认用户为 fnvtk(玩值默认上传账号) # 用法:REPO_NAME=myproj bash 玩值开发文档/8、部署/gitea_api_create_user_repo.sh +# GITEA_OWNER=yongpxu REPO_NAME=test bash … set -euo pipefail GITEA_HTTP="${GITEA_HTTP:-http://192.168.1.201:3000}" +GITEA_OWNER="${GITEA_OWNER:-fnvtk}" REPO_NAME="${REPO_NAME:?请设置 REPO_NAME,例如 REPO_NAME=wzdj}" -CRED=$(printf "protocol=http\nhost=192.168.1.201:3000\n\n" | git credential-osxkeychain get) +CRED=$(printf "protocol=http\nhost=192.168.1.201:3000\nusername=${GITEA_OWNER}\n\n" | git credential-osxkeychain get) U=$(echo "$CRED" | grep ^username= | cut -d= -f2-) P=$(echo "$CRED" | grep ^password= | cut -d= -f2-) +if [[ -z "$P" ]]; then + echo "[gitea_api_create_user_repo] 无法读取 ${GITEA_OWNER} 的密码,请用「钥匙串访问」为 192.168.1.201 添加该账户密码" >&2 + exit 1 +fi curl -sS -u "$U:$P" -X POST "$GITEA_HTTP/api/v1/user/repos" \ -H "Content-Type: application/json" \ @@ -17,5 +23,5 @@ curl -sS -u "$U:$P" -X POST "$GITEA_HTTP/api/v1/user/repos" \ echo echo "[gitea_api_create_user_repo] 若返回 JSON 含 full_name,则已创建。随后:" -echo " git remote add gitea git@gitea-wzdj:${U}/${REPO_NAME}.git" +echo " git remote set-url gitea git@gitea-wzdj:${GITEA_OWNER}/${REPO_NAME}.git" echo " git push -u gitea main" diff --git a/玩值开发文档/8、部署/sync_to_gitea.sh b/玩值开发文档/8、部署/sync_to_gitea.sh index 73866f0..90a31c1 100755 --- a/玩值开发文档/8、部署/sync_to_gitea.sh +++ b/玩值开发文档/8、部署/sync_to_gitea.sh @@ -20,4 +20,4 @@ else echo "[sync_to_gitea] 已提交:$COMMIT_MSG" fi git push "$REMOTE" "$BRANCH" -echo "[sync_to_gitea] 已推送到 gitea/$BRANCH → ssh://git@192.168.1.201:2222/yongpxu/wzdj (网页: http://192.168.1.201:3000/yongpxu/wzdj)" +echo "[sync_to_gitea] 已推送到 gitea/$BRANCH → ssh://git@192.168.1.201:2222/fnvtk/wzdj (网页: http://192.168.1.201:3000/fnvtk/wzdj)"