Mercurial本地存储库备份

Mercurial本地存储库备份,mercurial,backup,Mercurial,Backup,我非常喜欢支持事情。我把重要的学校论文之类的东西放在我的Dropbox文件夹里。我确保我的所有照片都复制到外部驱动器。我有一个家庭服务器,在那里我将重要文件镜像到服务器内的两个驱动器(如软件RAID 1) 所以对于我的代码,我总是使用Subversion来备份它。我将主干文件夹与我的应用程序的一个稳定副本保存在一起,但随后我创建了一个以我的用户名命名的分支,其中有我的工作副本。我在提交到该分支之间很少做更改,因为我知道其中的代码是我的备份 现在我正在研究Mercurial,我必须承认我还没有真正

我非常喜欢支持事情。我把重要的学校论文之类的东西放在我的Dropbox文件夹里。我确保我的所有照片都复制到外部驱动器。我有一个家庭服务器,在那里我将重要文件镜像到服务器内的两个驱动器(如软件RAID 1)

所以对于我的代码,我总是使用Subversion来备份它。我将主干文件夹与我的应用程序的一个稳定副本保存在一起,但随后我创建了一个以我的用户名命名的分支,其中有我的工作副本。我在提交到该分支之间很少做更改,因为我知道其中的代码是我的备份

现在我正在研究Mercurial,我必须承认我还没有真正使用过它,所以我可能完全错了。但在我看来,您有一个服务器端存储库,然后以本地存储库的形式将其克隆到一个工作目录。然后,当您处理某个内容时,您将提交到该本地存储库,当内容处于要与其他人共享的状态时,您将
hg推送到服务器上的父存储库

在推送稳定、经过测试、没有bug的代码之间,备份在哪里

经过思考,我得出结论,它不是用于备份目的的,它假设您已经自己处理了。我想我需要将Mercurial本地存储库保存在dropbox或其他备份位置,因为我的进行中代码不会被推送到服务器上

这差不多了,还是我错过了什么?如果使用Mercurial,如何备份本地存储库?如果你今天早上打开电脑,你的硬盘着火了(或者,更有可能的是,读头坏了,或者操作系统本身损坏了,…),会丢失什么?如果你在过去的一周里开发了一个模块,为它编写测试用例,记录和评论它,然后一个病毒将你的本地存储库清除,这不是唯一的副本吗

那么另一方面,您是否为每个本地存储库创建了一个远程存储库并一直推送到它


你如何找到平衡?如何确保代码得到备份?使用Mercurial作为备份和使用本地文件系统备份实用程序来保证本地存储库的安全之间的界限在哪里?

只有在您推送时,更改才会到达远程目录。提交保持本地状态,但如果克隆存储库,则可以获得它们。然后,是的,如果您想让您的东西进入服务器存储库,您必须“一直”推送到它

另一方面,没有什么能阻止您拥有多台机器并将内容从一台推送到另一台。每一个mercurial存储库都可以在几秒钟内将自己变成一个服务器,输入“hg serve”

我不确定它是否真的回答了您的问题,但我也非常喜欢用我的存储库的许多克隆进行备份和管理(我也使用大量mq在补丁模式下工作,但这是另一回事)


PS:作为旁注,我正在考虑使用mercurial作为文件系统备份的工具。唯一困扰我的是,出于这个目的,我更愿意禁用diff功能,并将所有文件视为二进制文件,但这应该很容易。

将Subversion视为“备份”是可以的,但它只是在一台单独的机器上真正做到这一点,而这并不是Subversion的固有特性。如果您的Subversion服务器与您的开发机器是同一台机器(在Linux世界中并不少见),那么您就没有真正的备份来防止硬件故障、盗窃、火灾等,事实上,在这种情况下,有些数据根本没有备份—您当前的代码可能存在于两个位置,但存储库中的所有其他内容(例如修订历史记录)仅存在于远程服务器上的一个位置


Mercurial的情况与此完全相同,只是您不再需要单独的服务器,因此需要明确考虑备份,而不是需要在某个地方安装服务器的副作用。你可以在某处设置另一个汞储存库,并周期性地推动你的改变,并考虑你的备份。或者,只需像备份任何其他重要目录一样备份本地存储库。由于您在本地拥有存储库的完整副本,包括所有修订历史记录和其他元数据,这可以说比您目前使用Subversion的方式更加方便和安全。

隐藏的.hg目录存储所有本地提交。您可以使用标准备份程序备份此目录。

因此,假设已提交更改,我唯一需要备份的就是.hg文件夹?有人能证实这一点吗?mercurial还在每个存储库中保存(被跟踪分支的)修订历史记录