2010-11-09 118 views
1

我是Mercurial的新手。我想知道是否有办法将.hg文件夹移动到除工作目录之外的其他位置,并且仍然监视更改?.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来说太大了

+1

你为什么要这样做?即使您想使用的方法不起作用,也可能有办法实现您的目标。 – Omnifarious 2010-11-09 02:08:50

回答

5

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

此外,您还可以在FOO子目录,它们并非每个人都必须有自己的.hg目录。只有Mercurial管理的树的顶级目录需要.hg目录。

如果您的疑虑是备份,解决方案很简单。将您的存储库克隆到您从未做过任何事情的目录并定期推送到克隆。 Mercurial的系统使用加密哈希来保证事情不会因为推送无声成功并破坏备份存储库而被破坏。

如果你想要一个“异地”的备份,使用托管服务像bitbucket,甚至只是一个仓库克隆到一个USB记忆棒。

我几乎所有的知识库都必须有5或10份副本放在不同的地方。我使用pushpull来保持它们的同步,如果我失去了它,很可能我没有失去它的任何变化。我经常不用担心工作目录。

+0

Ill粘贴编辑。我对工作目录偏执。我有Dropbox备份我的Mercurial存储库。但是.hg文件夹对于我的Dropbox来说太大了 – unj2 2010-11-09 05:20:51

+0

@kunjaan - 啊,我现在明白了,我已经用建议的解决方案编辑了我的答案。 – Omnifarious 2010-11-09 08:09:51

4

你应该不,显然不是把你的资料库,任何形式的,在任何一种同步系统,无论是微软的Live同步(这是要离开的BTW),微软的Live Mesh,DropBox的,或什么的。

基本上你在问问题。各种同步工具无法保证您在其设置同步之前无法更改其中一个文件,并且如果您在DropBox同步之前设法在多台计算机上更改文件,则会发生同步冲突,可能会让你的整个存储库变得超出修复希望。

如果像你说的,你是偏执文件,Dropbox的应该是最后的“解决方案”,你会想挑选。几乎肯定会在某个时候出错。

相反,得到一个帐户与托管提供商,像bitbucket,并把你的仓库主人那里,然后就拉下来给你使用的机器。 Bitbucket支持私人存储库,这些存储库不向公众开放,并且应该不会比将存储库放入Dropbox帐户更安全。

这将避免通过任何的同步工具越来越难同尺寸,你不必担心存储库腐败。

所以千万不要这么做!

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

+1

你对此绝对正确。关于唯一可接受的同步方法是你必须激活自己,甚至是可疑的,特别是因为推拉更有效地做同样的事情。 – Omnifarious 2010-11-09 08:11:00

+1

是的,我将通过任何同步服务同步存储库的唯一方法是首先用zip,7z或其他方法将其存档,然后将其同步。这会减少同步服务到传输介质,而不是同步介质。 – 2010-11-09 14:18:07

+0

感谢您的回复。但是如果我确实想要移动.hg目录呢?我会怎么做? – unj2 2010-11-09 15:20:33

0

你的实际问题的答案是否定的,但有一个解决你的问题。我猜测真正的问题是,你害怕失去未完成的工作。虽然其他海报是正确的,你应该正确地推动并推送到远程存储库(如果你不想分支,使用书签),你也可以备份脏工作副本状态,通过使用技巧在dropbox上无限制的工作在下面的链接:

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

此链接介绍了如何从Dropbox的同步,同时保留的本地内容排除某些文件夹。

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

这当然只是最后的避难所保护系统,它只会备份你的工作副本的瞬时状态,而不是任何不必要的提交等。因此,它永远不会比你节省半天的时间随时工作。

相关问题