# 更新日志

## [3.1.0] - 2023-XX-XX

### 新增

- **本地同步目标路径增强**：
  - `LocalSyncConfig.target` 现在支持字符串数组，可以将一个源路径同步到多个目标路径
  - 添加了文件分发功能，一次配置可以将文件复制到多个目标
  - 优化了目标路径配置验证，支持数组格式
  - 更新了相关文档和示例

- **Git项目管理增强**：
  - 添加了 `GitProjectConfig.discardChanges` 选项，允许自动丢弃未提交的更改
  - 当设置为 `true` 时，会在拉取前自动执行 `git checkout -- .` 和 `git clean -fd`
  - 增强了错误处理，可以处理因未提交更改导致的拉取失败
  - 添加了相关日志，提供更清晰的操作过程

### 改进

- 优化了本地同步功能的代码结构，将目标路径统一处理为数组
- 更新了 README 文档，添加了使用 target 数组的示例和 discardChanges 选项的说明
- 完善了类型定义，提供更好的 TypeScript 支持
- 改进了 Git 项目管理的错误处理，提供更友好的错误信息和恢复机制

## [3.0.0] - 2023-XX-XX

### 重大变更

- **Git 项目存储路径统一化**：
  - 所有 Git 项目都集中存放在工作区根目录的 `.sync-git` 目录下
  - `GitProjectConfig.targetDir` 现在相对于 `.sync-git` 目录，而非工作区根目录
  - `AutoCommitConfig` 中的项目路径也相对于 `.sync-git` 目录
  - 更新了相关路径计算逻辑和错误处理
  - 提供更清晰的路径解析日志

- **智能自动提交完全分离**：
  - 完全移除了 `GitProjectAutoCommitConfig` 与 Git 项目配置的关联
  - 将 `GitProjectAutoCommitConfig` 标记为废弃
  - 自动提交模块现在完全依赖 `AutoCommitConfig` 配置

- **任务执行机制调整**：
  - 所有任务现在都在构建完成后的 `closeBundle` 钩子中执行
  - 移除了 `buildStart` 和 `buildEnd` 阶段的分离执行
  - 按固定顺序依次执行：Git项目管理 → 本地文件同步 → 自动提交
  - 前一任务出错会中止后续任务执行

### 新增

- **工作区根目录检测**：
  - 增强了工作区根目录检测功能，支持多种 monorepo 工具：
    - Turborepo (turbo.json)
    - PNPM Workspaces (pnpm-workspace.yaml)
    - Yarn/NPM Workspaces (package.json 中的 workspaces 字段)
  - 所有路径计算现在基于工作区根目录，而非 Vite 项目根目录
  - 支持 monorepo 中的子项目使用相同配置

### 改进

- **配置验证增强**：
  - 增加了对自动提交配置中路径的验证，确保使用相对路径
  - 优化了错误消息，提供更具体的问题描述和解决建议
  - 确保 Git 项目管理必须成功，失败时会中止后续任务

- **文档更新**：
  - 更新了 README，详细说明 Git 项目路径和工作区检测
  - 添加了更多配置示例，突出显示路径关系
  - 更新了配置表格，明确标注任务执行顺序
  - 完善了工作原理部分，说明任务执行机制

### 修复

- 修复了多个路径计算问题，确保路径解析一致性
- 修正了自动提交模块中潜在的路径解析错误
- 优化了 Git 项目管理错误处理逻辑

## [2.1.0] - 2023-XX-XX

### 新增

- **工作区根目录检测**：
  - 自动检测Turborepo/PNPM/Yarn/NPM工作区根目录
  - 所有路径（Git项目、文件同步、日志等）基于工作区根目录计算
  - 支持monorepo中的多个子项目共享配置

### 改进

- 更新了日志系统，路径计算现基于工作区根目录
- 改进了路径解析逻辑，支持绝对路径和相对路径
- 添加了工作区检测日志，方便调试和确认

## [2.0.0] - 2023-XX-XX

### 重大变更

- **插件架构调整**：移除任务编排系统，改为基于Vite构建钩子的分阶段执行
  - 移除了 `taskOrder` 配置字段
  - Git项目管理现在在编译前阶段 (`buildStart`钩子) 执行
  - 本地文件同步和自动提交在编译后阶段 (`buildEnd`钩子) 执行
  - 修改了插件主要流程，不再需要手动指定任务顺序

- **智能自动提交模块独立化**：
  - 从 `GitProjectConfig` 中移除了 `autoCommit` 字段
  - 创建了独立的 `AutoCommitConfig` 配置接口
  - 更新了配置验证逻辑，适应新的数据结构
  - 自动提交现在作为完全独立的模块运行

### 新增

- 基于Vite构建周期的分阶段执行机制：
  - 更合理的任务执行顺序：Git项目更新 → 编译 → 文件同步 → 自动提交
  - 更明确的错误处理策略：编译前错误会终止构建，编译后错误可选择忽略

- 为 `AutoCommitConfig` 添加了新的配置选项：
  - `enableSharedCommits`: 控制是否启用跨项目的共享提交信息 (默认: true)
  - `insertSeparator`: 控制是否在提交后插入分隔符 (默认: true)
  
- 自动提交项目现可独立指定分支，与 Git 项目管理分支分离

### 改进

- 代码结构更加清晰，各模块职责明确
- 更新了文档，清晰说明各任务的执行阶段
- 优化了配置验证逻辑，提供更友好的错误信息
- 改进了自动提交流程中的共享提交信息机制
- 更新了配置表格，添加了执行阶段说明
- 添加了工作流程图，帮助用户理解插件执行机制

### 修复

- 修复了类型定义中的问题，确保类型安全
- 修正了一些可能导致异常的边缘情况

## [1.2.0] - 2023-XX-XX

...之前的更新日志... 