diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index ed66e7e8..5694fbe5 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -150,7 +150,7 @@ services: # postgres:18-alpine 默认 PGDATA=/var/lib/postgresql/18/docker(位于镜像声明的匿名卷 /var/lib/postgresql 内)。 # 若不显式设置 PGDATA,则即使挂载了 postgres_data 到 /var/lib/postgresql/data,数据也不会落盘到该命名卷, # docker compose down/up 后会触发 initdb 重新初始化,导致用户/密码等数据丢失。 - - PGDATA=/var/lib/postgresql/data + - PGDATA=/var/lib/postgresql/data/18/docker - POSTGRES_USER=${POSTGRES_USER:-sub2api} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} - POSTGRES_DB=${POSTGRES_DB:-sub2api} diff --git a/skills/merge-upstream/SKILL.md b/skills/merge-upstream/SKILL.md new file mode 100644 index 00000000..545608e4 --- /dev/null +++ b/skills/merge-upstream/SKILL.md @@ -0,0 +1,84 @@ +--- +name: merge-upstream +description: 拉取上游仓库更新并合并到本地 fork。当用户说"拉取上游"、"合并上游"、"merge upstream"、"pull upstream"、"上游更新"时触发此技能。这是一个高频操作,任何涉及从 upstream 同步代码的请求都应使用此技能。 +--- + +# 上游合并工作流 + +本项目是 [Wei-Shaw/sub2api](https://github.com/Wei-Shaw/sub2api) 的 fork,品牌名从 `Sub2API` 改为 `TianShuAPI`。 + +## 执行步骤 + +### 1. 获取上游更新 + +```bash +git fetch upstream +``` + +### 2. 查看新提交 + +对比本地 HEAD 和 upstream/main,列出新增提交: + +```bash +git log --oneline HEAD..upstream/main +``` + +如果没有新提交,告知用户已是最新,流程结束。 + +### 3. 合并 + +```bash +git merge upstream/main --no-edit +``` + +### 4. 解决冲突 + +合并冲突几乎总是因为品牌名差异。核心规则: + +- **始终保留 `TianShuAPI`**,不要用 `Sub2API` +- **接受上游所有新功能、新字段、新参数** +- 采用上游的代码结构重构(如函数签名变更、新的 import),只替换品牌名 + +常见冲突文件及处理方式: + +| 文件 | 冲突原因 | 处理 | +|------|---------|------| +| `backend/internal/service/setting_service.go` | SiteName 默认值 | 保留 `"TianShuAPI"`,接受新字段 | +| `frontend/src/i18n/locales/zh.ts` | 中文翻译中的品牌名 | 保留 `TianShuAPI`,接受新翻译 | +| `frontend/src/i18n/locales/en.ts` | 英文翻译中的品牌名 | 保留 `TianShuAPI`,接受新翻译 | +| `frontend/src/views/admin/SettingsView.vue` | 表单默认值 | 保留 `'TianShuAPI'`,接受新字段 | +| `frontend/src/main.ts` | 文档标题 | 保留 `'TianShuAPI'`,采用上游结构 | +| `frontend/src/router/title.ts` | 标题解析默认值 | 保留 `'TianShuAPI'`,接受新参数 | +| `frontend/src/components/layout/AuthLayout.vue` | 认证页面默认名 | 保留 `'TianShuAPI'`,采用上游结构 | +| `deploy/docker-compose.yml` | 1Panel 适配 vs 上游默认 | 保留 1Panel 结构,接受新环境变量 | + +### 5. 提交 + +```bash +git add <冲突文件> +git commit -m "Merge upstream/main: <版本范围> updates + +Co-Authored-By: Claude Opus 4.6 " +``` + +提交信息中的版本范围从 git tag 获取,如 `v0.1.85-v0.1.87`。 + +### 6. 推送 + +```bash +git push origin main +``` + +## 服务器部署提示 + +合并完成后提醒用户服务器更新步骤: + +```bash +cd /opt/sub2api-dev +git checkout deploy/docker-compose.yml +git pull +sed -i 's|PGDATA=/var/lib/postgresql/data$|PGDATA=/var/lib/postgresql/data/18/docker|' deploy/docker-compose.yml +cd deploy && docker compose up -d --build +``` + +注意:服务器上必须用 `docker compose`(v2),不要用 `docker-compose`(v1 已不兼容)。