# Mizuki 内容迁移指南 本指南将帮助你将现有的 Mizuki 博客从单仓库模式迁移到代码内容分离模式。 > 💡 **提示**: 如果是新项目,建议先阅读 [内容分离完整指南](./CONTENT_SEPARATION.md) ## 📋 迁移前准备 ### 检查清单 - [ ] **备份整个项目** (重要!) - [ ] 确保所有更改已提交到 Git - [ ] 了解你要使用的模式 (推荐 Submodule) - [ ] 在 GitHub/GitLab 创建新的内容仓库 ## 🚀 迁移步骤 ### 步骤 1: 创建内容仓库 ```bash # 创建并进入新目录 mkdir Mizuki-Content cd Mizuki-Content # 初始化 Git 仓库 git init # 创建目录结构 mkdir -p posts spec data images/albums images/diary images/posts # 创建 README cat > README.md << 'EOF' # Mizuki 博客内容 这是 Mizuki 博客的内容仓库,包含所有文章、数据和图片。 ## 目录结构 - `posts/` - 博客文章 - `spec/` - 特殊页面 (关于、友链等) - `data/` - 数据文件 (番剧、项目、技能、时间线) - `images/` - 图片资源 ## 使用方法 此仓库作为 Mizuki 代码仓库的内容源,通过 Git Submodule 或独立模式关联。 详细说明请查看: https://github.com/matsuzaka-yuki/Mizuki EOF ``` ### 步骤 2: 从 Mizuki 项目复制内容 ```bash # 设置路径变量 MIZUKI_PATH="/path/to/your/Mizuki" CONTENT_PATH="/path/to/Mizuki-Content" # 复制文章 cp -r "$MIZUKI_PATH/src/content/posts/"* "$CONTENT_PATH/posts/" # 复制特殊页面 cp -r "$MIZUKI_PATH/src/content/spec/"* "$CONTENT_PATH/spec/" # 复制数据文件 cp "$MIZUKI_PATH/src/data/anime.ts" "$CONTENT_PATH/data/" 2>/dev/null || echo "anime.ts not found" cp "$MIZUKI_PATH/src/data/projects.ts" "$CONTENT_PATH/data/" 2>/dev/null || echo "projects.ts not found" cp "$MIZUKI_PATH/src/data/skills.ts" "$CONTENT_PATH/data/" 2>/dev/null || echo "skills.ts not found" cp "$MIZUKI_PATH/src/data/timeline.ts" "$CONTENT_PATH/data/" 2>/dev/null || echo "timeline.ts not found" # 复制图片 cp -r "$MIZUKI_PATH/public/images/albums/"* "$CONTENT_PATH/images/albums/" 2>/dev/null || echo "albums not found" cp -r "$MIZUKI_PATH/public/images/diary/"* "$CONTENT_PATH/images/diary/" 2>/dev/null || echo "diary not found" echo "✅ 内容复制完成!" ``` ### 步骤 3: 提交内容仓库 ```bash cd "$CONTENT_PATH" # 添加所有文件 git add . # 提交 git commit -m "Initial commit: Migrate content from Mizuki monorepo" # 添加远程仓库 (替换为你的仓库地址) git remote add origin https://github.com/your-username/Mizuki-Content.git # 推送 git branch -M master git push -u origin master echo "✅ 内容仓库已推送!" ``` ### 步骤 4: 配置 Mizuki 代码仓库 ```bash cd "$MIZUKI_PATH" # 创建 .env 文件 cp .env.example .env # 编辑 .env 文件,启用内容分离 cat > .env << 'EOF' # 启用内容分离 ENABLE_CONTENT_SYNC=true # 内容仓库配置 CONTENT_REPO_URL=https://github.com/your-username/Mizuki-Content.git USE_SUBMODULE=true EOF # 运行同步脚本 pnpm run sync-content # 提交更改 git add .env.example git commit -m "Enable content separation" git push ``` > 📖 更多配置选项请参考 [内容分离完整指南](./CONTENT_SEPARATION.md) ### 步骤 5: 清理原仓库中的内容 (可选) ⚠️ **警告**: 只有在确认内容已成功迁移后才执行此步骤! ```bash cd "$MIZUKI_PATH" # 备份原内容 (以防万一) mkdir -p ../mizuki-content-backup cp -r src/content/posts ../mizuki-content-backup/ cp -r src/content/spec ../mizuki-content-backup/ cp -r src/data ../mizuki-content-backup/ cp -r public/images ../mizuki-content-backup/ # 删除已迁移的内容 (保留目录结构) rm -rf src/content/posts/* rm -rf src/content/spec/* rm -f src/data/anime.ts src/data/projects.ts src/data/skills.ts src/data/timeline.ts rm -rf public/images/albums/* public/images/diary/* # 创建 .gitkeep 文件保留目录 touch src/content/posts/.gitkeep touch src/content/spec/.gitkeep touch public/images/albums/.gitkeep touch public/images/diary/.gitkeep # 提交更改 git add . git commit -m "Remove migrated content (now in separate repository)" git push ``` ## 🧪 测试迁移 ### 本地测试 ```bash cd "$MIZUKI_PATH" # 同步内容 pnpm run sync-content # 启动开发服务器 pnpm dev # 访问 http://localhost:4321 检查: # - 文章是否正常显示 # - 图片是否正确加载 # - 特殊页面是否工作 # - 数据页面是否正常 (番剧、项目等) ``` ### 构建测试 ```bash # 构建项目 pnpm build # 预览构建结果 pnpm preview # 检查所有功能是否正常 ``` ## 🔄 日常工作流 ### 更新内容 ```bash # 1. 在内容仓库中修改 cd "$CONTENT_PATH" # 编辑文件... git add . git commit -m "Update content" git push # 2. 在代码仓库中同步 cd "$MIZUKI_PATH" pnpm run sync-content ``` ### 使用 Submodule 时 ```bash cd "$MIZUKI_PATH" # 更新 submodule 到最新版本 git submodule update --remote --merge # 或者使用同步脚本 (推荐) pnpm run sync-content # 提交 submodule 更新 git add content git commit -m "Update content submodule" git push ``` ## 🚀 部署配置 迁移完成后,需要在部署平台配置环境变量: ```bash ENABLE_CONTENT_SYNC=true CONTENT_REPO_URL=https://github.com/your-username/Mizuki-Content.git USE_SUBMODULE=true ``` 详细的部署配置(包括私有仓库、GitHub Actions、Vercel 等)请参考 [内容分离完整指南 - CI/CD 部署](./CONTENT_SEPARATION.md#-cicd-部署) ## ⚠️ 常见问题 ### Q: 同步脚本失败怎么办? A: 检查: 1. 网络连接是否正常 2. Git 凭据是否配置正确 3. `ENABLE_CONTENT_SYNC=true` 是否已设置 4. `CONTENT_REPO_URL` 是否正确 5. 是否有足够的磁盘空间 运行 `pnpm run check-env` 检查配置。 ### Q: 符号链接在 Windows 上不工作? A: 需要以管理员身份运行,或者脚本会自动切换到复制模式。 ### Q: 如何回滚到单仓库模式? A: 在 `.env` 中设置 `ENABLE_CONTENT_SYNC=false`,然后从备份或内容仓库复制内容回本地。 ### Q: 遇到私有仓库认证问题? A: 参考 [内容分离完整指南 - 私有仓库配置](./CONTENT_SEPARATION.md#-私有仓库配置) ## 📚 参考文档 - [内容分离完整指南](./CONTENT_SEPARATION.md) - 详细配置说明 - [内容仓库结构说明](./CONTENT_REPOSITORY.md) - 推荐的仓库结构 - [Git Submodule 文档](https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97) --- 💡 **提示**: 迁移前建议先在测试环境中验证整个流程!