版本管理
大约 2 分钟
版本管理
图纸的版本控制,支持分支、补丁、合并和冲突解决。
在线示例
| 示例 | 描述 | 链接 |
|---|---|---|
| 创建分支 | 从指定版本创建新分支 | 在线演示{target="_blank"} |
| 保存版本 | 创建新的 Patch 版本 | 在线演示{target="_blank"} |
| 合并分支 | 创建两个分支,修改后合并,演示完整分支工作流 | 在线演示{target="_blank"} |
| 版本历史 | 查看和回溯版本 | 在线演示{target="_blank"} |
| 冲突解决 | 模拟两个分支修改同一实体产生冲突,演示冲突解决流程 | 在线演示{target="_blank"} |
| 用户权限回调 | 业务系统登录、用户身份传递和权限校验回调 | 在线演示{target="_blank"} |
用户权限集成
如果需要将 WebCAD 的协同编辑与业务系统的用户权限对接,请参阅 用户权限集成 文档。
概述
WebCAD 版本管理系统类似 Git,支持:
- 分支:从任意版本创建独立分支
- 补丁(Patch):保存增量修改
- 合并:将分支合并回主干
- 冲突解决:处理同一实体在不同分支的修改冲突
核心 API
创建分支
const { VersionService } = vjcad;
// 从当前版本创建新分支
const newBranch = await VersionService.createBranch({
mapid: 'drawing-id',
baseBranch: 'main',
basePatchId: 'patch-001',
newBranchName: 'feature-1'
});保存版本(Patch)
// 保存当前修改为新的 Patch
const patch = await VersionService.savePatch({
mapid: 'drawing-id',
branch: 'feature-1',
message: '添加了新的标注'
});合并分支
// 合并分支到 main
const mergeResult = await VersionService.mergeBranch({
mapid: 'drawing-id',
sourceBranch: 'feature-1',
targetBranch: 'main'
});
if (mergeResult.hasConflicts) {
// 处理冲突
await handleConflicts(mergeResult.conflicts);
}版本历史
// 获取版本历史
const history = await VersionService.getHistory({
mapid: 'drawing-id',
branch: 'main'
});
// 回溯到指定版本
await VersionService.checkout({
mapid: 'drawing-id',
branch: 'main',
patchId: 'patch-001'
});冲突解决
// 冲突解决选项
const resolveOptions = {
useSource: ['entity-1', 'entity-2'], // 使用源分支版本
useTarget: ['entity-3'], // 使用目标分支版本
useManual: { // 手动解决
'entity-4': customEntity
}
};
await VersionService.resolveConflicts(mergeResult.mergeId, resolveOptions);版本管理概念
| 概念 | 说明 |
|---|---|
| Branch | 分支,独立的版本线 |
| Patch | 补丁,一次保存的增量修改 |
| Base | 基础版本,分支的起点 |
| Merge | 合并,将分支变更合并到目标分支 |
| Conflict | 冲突,同一实体在不同分支被修改 |