.hg文件夹是否需要驻留在工作目录中?

时间:2010-11-09 01:49:36

标签: version-control mercurial dvcs

我是Mercurial的新手。我想知道是否有办法将.hg文件夹移动到工作目录以外的其他位置并仍然监视更改?

例如,

I have the .hg in /foo/.hg/*
Can I move it to  /bar/.hg/* and still monitor the contents of foo?

编辑: 我对工作目录很偏执。我有Dropbox备份我的Mercurial存储库。但.hg文件夹对我的Dropbox来说太大了

3 个答案:

答案 0 :(得分:5)

不,你不能。如果您能解释为什么要这样做,我可以帮助您找出不同的解决方案。

此外,您可以在foo中包含子目录,并且每个子目录都不必拥有自己的.hg目录。只有Mercurial管理的树的顶级目录需要.hg目录。

如果您的担心是备份,那么解决方案很简单。将您的存储库克隆到您从未执行任何操作的目录,并定期推送到克隆。 Mercurial使用加密哈希的系统将确保您的存储库永远不会以推送静默成功并破坏备份存储库的方式被破坏。

如果您需要“非现场”备份,请使用bitbucket之类的托管服务,甚至只是克隆到USB记忆棒中的存储库。

我必须拥有5到10份几乎所有我的存储库,这些存储库位于不同的地方。我使用pushpull来保持同步,如果我丢失了,我很可能没有丢失任何更改。我rm -rf定期工作目录而不用担心。

答案 1 :(得分:4)

你应该没有,强调不将你的存储库放在任何类型的同步系统中,无论是Microsoft Live Sync(即将消失),Microsoft Live Mesh,DropBox,或者其他什么。

基本上你是在惹麻烦。各种同步工具无法保证您在设置同步之前无法更改其中一个文件,并且如果您在DropBox同步之前设法更改多台计算机上的文件,则会出现同步冲突,可能只是让你的整个存储库损坏,无法修复。

正如你所说,如果你对你的文件感到偏执,那么dropbox应该是你想要选择的最后一个“解决方案”。几乎可以保证在某些时候出错。

相反,获取托管提供商的帐户,例如bitbucket并将您的存储库主文件放在那里,然后只需下拉到您使用的计算机。 Bitbucket支持私有存储库,这些存储库不向公众开放,并且应该比将存储库放在Dropbox帐户中一样安全。

这样可以避免通过任何同步工具遇到大小问题,而且您不必担心存储库损坏。

所以不要这样做!

至于移动.hg目录,除非您使用的开发环境不会单独留下这些文件,否则不需要移动它。

答案 2 :(得分:0)

你的实际问题的答案是否定的,但是你的问题有一个解决方案。我猜测真正的问题是你害怕失去不受约束的工作。虽然其他海报是正确的,您应该定期并推送到远程存储库(如果您不想分支,请使用书签),您还可以备份脏工作副本状态,使用dropbox上的uncommited工作以下链接中的技巧:

http://www.dropboxwiki.com/tips-and-tricks/exclude-folders-from-syncing

此链接说明如何在保留本地内容的同时从Dropbox同步中排除某些文件夹。

您可以将此解决方案应用于克隆存储库中的.hg文件夹,因此会被忽略。如果这样做,我还会在Dropbox中创建一个子文件夹,该子文件夹专门用于您所使用的每台计算机,以克隆您的回购,并且出于显而易见的原因,不要在多台计算机上使用相同的子文件夹。

这当然只是灾难保护系统的最后手段,它只会备份你工作副本的瞬时状态,而不是任何未提交的提交等。因此,它应该永远不会比半天节省你更多#&# 39;随时工作。