[返回博客](/cn/blog) # Teigha 版本控制中的数据压缩

Oleksandr Shulha 四月 26, 2018 [\#compression/decompression](/cn/blog/tag/compressiondecompression) [\#Example](/cn/blog/tag/example) [\#getting started](/cn/blog/tag/getting-started)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

在开发软件时，大多数公司都使用版本控制系统，例如 Git、SVN 等。版本控制使得在多人之间分配工作、合并工作、查看个人所做的具体更改等成为可能。这种系统在创建图纸时非常方便，尤其是在多个人处理同一张图纸时。

#### OdTfRevisionControl

Teigha 具有类似的功能，称为 OdTfRevisionControl，用于处理 .dwg 文件。OdTfRevisionControl 仍在开发中。版本控制系统中的主要概念是提交。

提交将最新更改添加到存储库，并保存已添加、编辑或删除的对象（OdDbLine、OdDb3dSolid、OdDbBlockTable、OdDbDictionary 等）的状态。

首先，您需要创建一个存储库。OdTfRevisionControl 允许您创建一个空存储库（在存储库中创建一个空的 .dwg 数据库）。您还可以将现有的 .dwg 文件导入到存储库中。

OdTfRevisionControl 可以在单用户（本地）模式下工作，但它也提供了一个 API，允许您在多用户（客户端-服务器）模式下工作。makePatch / applyPatch 功能是 OdTfRevisionControl API 中可用于客户端-服务器模式的部分。

版本控制系统有多种工作流程。其中许多都描述了如何使用不同的分支进行工作。借助 OdTfRevisionControl，您可以创建一个新的工作分支，并将其与另一个分支合并。

#### 修订数据压缩

如果您只更改绘图中的一个对象，则该对象本身以及依赖于它且也已更改的对象将被放入提交中。因此，如果您对所有对象进行“移动/拖动”操作，则提交将很大。为了减小存储库的体积（减小提交的大小），OdTfRevisionControl API 中有一个 compressRevisionData 函数。每次提交时，我们不会自动压缩对象，但借助 API，您可以一次压缩 N 个提交。

在提交之间移动（以获取所需的提交）时，压缩数据必须恢复到其以前的形式，这需要时间。要恢复压缩数据，您需要一个参考点（初始数据，相对于之前已压缩的数据）。为了减少恢复时间，初始状态（整体）应尽可能接近压缩状态。为此，compressRevisionData 会以指定的时间间隔压缩提交中的对象。换句话说，当达到指定的压缩深度时，对象将不会被压缩，而是在将来被压缩。

您可以在下面看到绘图的初始状态以及每次提交的更改。

![image1](/files/inline-images/image001_31.png)下表显示了存储库的初始大小、每次提交后的大小以及所有提交压缩后的大小。在此示例中，执行了移动和删除对象的操作。

| | 大小 (千字节) | 大小差异 |
| --- | --- | --- |
| 源存储库大小 | 8,564 | |
| 提交 1 | 8,840 | +0,276 |
| 提交 2 | 8,884 | +0,44 |
| 提交 3 | 8,928 | +0,44 |
| 提交 4 | 8,972 | +0,44 |
| 已压缩 | 8,756 | -0.216 |

您可以在下面看到绘图初始状态和每次提交更改的另一个示例。

![image2](/files/inline-images/image003_15.png)下表显示了存储库的初始大小、每次提交后的大小以及所有提交压缩后的大小。在此示例中，所有绘制的对象都被移动，选定的对象被移动，并且添加了新的对象。

| | 大小 (千字节) | 大小差异 |
| --- | --- | --- |
| 源存储库大小 | 10,052 | |
| 提交 1 | 11,068 | +1,016 |
| 提交 2 | 12,072 | +1,004 |
| 提交 3 | 13,916 | +1,844 |
| 已压缩 | 10,052 | -3.864 |

#### 结论

最初，版本控制仅适用于文本形式的文件，而 .dwg 文件格式的特殊性使得版本控制不易实现。现在，使用 OdTfRevisionControl 是一个强大的工具，无论是个人还是开发团队在处理绘图时都非常有用。

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
