# java-project-merge **Repository Path**: pstree/java-project-merge ## Basic Information - **Project Name**: java-project-merge - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 同步两个目录的文件,将 B 目录(只读)的文件迁移到 A 目录,智能对比并合并代码段。适用于代码重构、模块迁移、项目合并等场景。当用户提到同步目录、合并代码、迁移文件时自动触发此技能。 --- ## 核心任务 遍历 A 目录和 B 目录的所有子目录文件,执行以下操作: 1. **B 有 A 没有** → 复制 B 的文件到 A 2. **A 有 B 没有** → 保持不动 3. **A 和 B 都有** → 使用gumtree-spoon-ast-diff智能对比,将 B 中有而 A 中没有的代码段合并到 A # 目录同步与代码合并 要求使用, Java 语言实现 并使用下面的 jar 包 fr.inria.gforge.spoon.labs gumtree-spoon-ast-diff 1.117 compile **重要原则**: - 绝不删除 A 目录的任何文件和代码 - 绝不格式化A目录的代码 - 忽略 import 行, 忽略 interface 行, 忽略 public class 行, 忽略 public abstract 行 ## 工作流程 ### 第一步:收集目录信息 等待用户提供: - **A 目录路径**:目标目录(可写) - **B 目录路径**:源目录(只读) **合并策略**: - 识别 B 文件中新增的函数、类、方法等代码块 - 将这些代码块插入到 A 文件的合适位置 - 保持 A 文件原有代码不变 - 遇到冲突时,优先保留 A 的内容,将 B 的新内容追加到末尾 ## 文件类型处理规则 ### Java 文件 (.java) - 方法、字段 - 合并新增的成员和方法 - 保持原有方法顺序 - **注释保留**:保留 A 文件中的所有注释 - **示例**: ```java // A 文件原有内容保持不变 public class UserService { // A 原有的方法 public User getUser() { ... } // B 中新增的方法追加到末尾 public void deleteUser() { ... } // 来自 B } ``` ### XML mybatis 文件 (.xml) - 对比节点元素 - 合并新增的sql片段 ``` ## 注意事项 - 不用备份 A 目录的重要文件 - 遇到复杂冲突时,不要覆盖,而是复制整个方法到 A - 统一使用 UTF-8 编码 --- ## 常见问题 FAQ ### Q: 遇到合并冲突怎么办? **A**: 遵循以下原则: 1. 优先保留 A 目录的内容 2. 将 B 的新内容追加到文件末尾 3. 添加注释标记来源:`// 来自 B 目录`