mercurial存储库的数据损坏
我在mercurial存储库的数据损坏,mercurial,backup,dropbox,google-drive-api,hardlink,Mercurial,Backup,Dropbox,Google Drive Api,Hardlink,我在c:\Dropbox\code有一个mercurial存储库。我已使用以下方法在本地创建了此回购协议的克隆: hg clone -U c:\Dropbox\code c:\GoogleDrive\codeBackup 此裸回购仅用于备份目的。我定期将更改推送到codeBackup。此外,这两个目录都在云中备份(分别是Dropbox和Google Drive) 如果code中的我的回购损坏,code备份repo是否会自动损坏,因为克隆操作使用了指向原始回购的硬链接?因此,我的双云备份策略将毫
c:\Dropbox\code
有一个mercurial存储库。我已使用以下方法在本地创建了此回购协议的克隆:
hg clone -U c:\Dropbox\code c:\GoogleDrive\codeBackup
此裸回购仅用于备份目的。我定期将更改推送到codeBackup。此外,这两个目录都在云中备份(分别是Dropbox和Google Drive)
如果code
中的我的回购损坏,code备份
repo是否会自动损坏,因为克隆操作使用了指向原始回购的硬链接?因此,我的双云备份策略将毫无用处
注:我知道退后选项是使用云服务恢复以前已知的良好状态
更新:仔细研究之后,我将添加这些内容以供参考
- 要避免硬链接(使用--pull):
hg clone-U——拉c:\Dropbox\code c:\GoogleDrive\code备份
- 要检查硬链接,请执行以下操作:
:显示
:显示硬链接>1的所有文件
:显示每个文件旁边的硬链接计数ls-l
代码
存储库可能会损坏的唯一方式(假设您最初将其克隆到代码备份
时它没有损坏)是在您向其写入内容时,可以是提交、重写历史记录等。每当有内容写入硬链接文件时,Mercurial会首先中断硬链接,创建文件的独立副本,然后仅修改新创建的副本
因此,为了回答您的问题:在正常使用情况下,存储库损坏不会传播到您的
codeBackup
存储库。您code
存储库损坏的唯一方式(假设在您最初将其克隆到codeBackup
时未损坏)是在您向其写入内容时,无论是提交、重写历史记录,等等。每当有东西写入硬链接文件时,Mercurial都会首先断开硬链接,创建文件的独立副本,然后只修改新创建的副本
因此,为了回答您的问题:在正常使用情况下,存储库损坏不会传播到您的
codeBackup
存储库。关于存储库损坏,这里最大的问题是您使用Dropbox和Google Drive跨机器同步存储库
不要那样做强>
这肯定会导致存储库损坏,除非您能够保证:
hg verify
D:\Dropbox\Temp\repotest>hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
3.txt@?: rev 1 points to unexpected changeset 1
(expected 0)
3.txt@?: 89ab3388d4d1 not in manifests
3 files, 2 changesets, 6 total revisions
1 warnings encountered!
2 integrity errors encountered!
取而代之的是获得一个免费或帐户,并使用该帐户在多台计算机之间进行推拉同步。关于存储库损坏,这里最大的问题是,您使用Dropbox和Google Drive跨计算机同步存储库 不要那样做强> 这肯定会导致存储库损坏,除非您能够保证: