我在c:\Dropbox\code有一个mercurial存储库。我已经在本地创建了这个回购的克隆,使用:
hg clone -U c:\Dropbox\code c:\GoogleDrive\codeBackup这种裸回购只起备份的作用。我经常将更改推送到codeBackup。此外,这两个目录都备份在云中(Dropbox和Google )。
如果我在code中的回购被破坏,那么codeBackup回购会不会自动损坏,因为克隆操作使用了到原始回购的硬链接?这样我的双云备份策略就没用了?
P.S.:我知道后退选项是使用云服务来恢复以前已知的良好状态。
更新:在深入挖掘之后,我将添加这些以供参考
问题是,如果完成了'hg克隆‘(没有--拉选项),那么如果文件系统提供了硬链接功能(NTFS ),那么目标和源回购在.hg/ 1中共享文件。 如果对其中一个克隆执行了提交或推送,Mercurial就会破坏.hg内部的这种硬链接。这样做的前提是,如果mercurial问“这个文件上有多少个硬链接?”,Windows使用的应该是正确的答案。 我们发现,如果hg进程在一台Windows计算机上运行,并且存储库文件位于另一台Windows计算机上的网络共享上,则这个答案几乎总是错误的(总是报告1,即使实际上是>1)。
hg clone -U --pull c:\Dropbox\code c:\GoogleDrive\codeBackupfsutil hardlink list :显示<file>的所有硬链接
find . -links +1:显示所有硬链接>1的文件
ls -l:显示每个文件旁边的硬链接数发布于 2013-07-01 09:44:16
code存储库可能变得损坏的唯一方法(假设最初将它克隆到codeBackup时它没有损坏)是当您向它写东西时,无论是提交、重写历史等等。每当有东西被写入硬链接文件时,Mercurial首先会破坏硬链接,创建文件的独立副本,然后只修改新创建的副本。
因此,要回答您的问题:在正常使用场景中,存储库损坏不会传播到您的codeBackup存储库。
发布于 2013-07-01 22:37:37
这里最大的问题,关于存储库的损坏,是您正在使用Dropbox和Google来跨计算机同步存储库。
,别这样!
这肯定会导致存储库损坏,除非您能够保证:
要验证Dropbox是否容易导致存储库损坏,请执行以下操作:
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!相反,可以获得一个免费的比特桶或窑炉帐户,并使用它在多台计算机之间进行同步。
https://stackoverflow.com/questions/17400052
复制相似问题