perforce 提交原子操作实际上是如何工作的

how perforce submit atomic operation actually work

perforce 提交是原子的。

这意味着如果更改列表包含 3 个要签入的文件, 并且操作成功检查了前 2 个文件,但随后出现错误 在操作第3个文件时,它可以回滚前2个文件的操作,让一切回到原来的状态。

我对此感到敬畏并印象深刻,并试图搜索它的实际工作原理,但似乎找不到。

如果有人能帮助我了解所有这些在后台如何工作的技术细节,我将不胜感激。

非常感谢您。

Perforce 使用数据库作为其真实来源这一事实使这变得非常简单:

  1. depot 文件被锁定(在数据库中,就像您 运行 p4 lock 一样)。
  2. 新修订内容已上传到 depot 存档。
  3. 数据库表已锁定以进行最后一组检查以确保一切正常。
  4. 新的修订记录写入数据库并释放所有锁。

如果在第 2 部分的某处提交失败,则无需回滚任何内容,因为新的修订内容不会覆盖任何内容,并且在第 4 步之前它们不会作为文件历史记录的一部分可见。(An不幸的副作用是 Perforce 实际上可以 "leak" 磁盘 space 失败的提交,但与磁盘使用随时间的预期正常增加相比,这通常是非常小的。)

如果您希望能够实时观察这种情况的发生,拖尾日志 (P4JOURNAL) 将向您显示数据库写入发生的情况,并拖尾日志 (P4LOG) 将向您展示从用户启动操作到完全提交更改的提交操作的各个阶段。