【发布时间】:2017-06-16 23:20:57
【问题描述】:
杀死 Mercurial 进程会造成哪些损害?工作目录可能处于未定义状态吗? .hg/-admin 区域是否会以某种方式损坏?
文件是由 Mercurial 以某种“原子”操作编写的吗? (工作树文件、.hg/-internal 文件、配置文件等等……)
【问题讨论】:
杀死 Mercurial 进程会造成哪些损害?工作目录可能处于未定义状态吗? .hg/-admin 区域是否会以某种方式损坏?
文件是由 Mercurial 以某种“原子”操作编写的吗? (工作树文件、.hg/-internal 文件、配置文件等等……)
【问题讨论】:
这是安全的。完成所有写入,以使磁盘上的文件始终一致。事务要么完全写出,要么在下次找到时自动回滚。不仅关闭时一致,而且始终一致——无论是通过 SIGKILL 还是电源故障停止。
您可以在此处了解这是如何完成的:https://www.mercurial-scm.org/wiki/FileFormats。这部分是可能的,因为所有文件写入都只是追加。在写入任何内容之前,会记录文件长度,如果发现内容处于不一致状态,它们会自动将文件截断回检查点的已知良好长度。
使用像 dropbox 之类的东西(它以它喜欢的任何顺序同步文件)可以把它抛到窗外,这就是为什么最好让 hg 成为写入存储库的唯一进程。
【讨论】: