强制提交原子操作的实际工作方式



perforce submit是原子的。

这意味着如果更改列表包含 3 个要签入的文件, 并且该操作成功签入了前 2 个文件,但随后出错时出现问题 在第三个文件上操作时,它能够回滚前 2 个文件的操作,以便一切恢复到原始状态。

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

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

提前非常感谢你。

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

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

如果提交在第 2 部分中的某个位置失败,则无需回滚任何内容,因为新的修订内容不会覆盖任何内容,并且在步骤 4 之前它们不会作为文件历史记录的一部分可见。 (这样做的一个不幸的副作用是,Perforce 实际上可以在失败的提交时"泄漏"磁盘空间,但与随着时间的推移磁盘使用率的预期正常增长相比,这通常是相当小的。

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

最新更新