Mercurial(和,我猜Git)与Dropbox:任何缺点?
我有一个个人项目的Mercurial仓库,我已经在我的Dropbox存储了几个星期的主存储库(有些东西沿着这条线 ;我知道也可以用git )。
这个想法是,它既可以作为与多台机器一起工作的方式,也可以作为远程备份。 我克隆存储库,并在非Dropbox的副本上工作,只是偶尔推送一次更新,就像我想的那样,我会用Bitbucket。
与使用专用主机(在Mercurial情况下使用BitBucket)相比,您是否可以想到这个想法的任何缺点? 我知道Bitbucket有单一用户的免费帐户,这是伟大的,但他们被限制在150M,这不是一个巨大的 。
特别是,Dropbox的同步过程有可能会损坏存储库吗? 我不得不在主存储库上运行hg recover一次,但它可能是不相关的(无论如何,它很高兴地恢复)。 有没有人有这个想法不好的经验? 有没有人有更好的经验,可以减轻我的后顾之忧? 有没有人有更好的理解这些东西的内部意见?
编辑:我添加了一些澄清的问题。 他们用斜体 。
由于上面提到的原因,我build议不要这样做,但是要更加强调。 mercurial和git都有自己的协议来移动库之间的变更集。 这些协议被优化/构build为:
- 效率
- 一致性(永远不能从一个半更新状态的回购)
- 钩子/触发器 – 推/拉包括质量(不允许标签等)filter
当你只是让一个目录同步处理保持.hg(或.git)目录同步,那么在这个同步你有一个远程存储处于不一致的状态,不知道它。
另外,在磁盘状态下,hg和git都有本地和远程的区别。 他们知道要分享什么信息(例如:提交的变更集)以及哪些不能(例如:当前的本地工作目录父母版本)。
在其他答案中,人们说“你可能会好起来的”或“我从来没有遇到过问题”,这可能是正确的,但并不能保证是正确的,修正控制不是一个可能。 为您的源代码pipe理系统使用适当,更好,更安全,更高效,更全面的同步协议。
我的Dropbox存储库已经损坏了。 它并不是一直都在发生,但事实上它已经发生了不止一次,这意味着我将不再使用Dropbox来达到这个目的。
这就是说,Dropbox肯定比获得真正的托pipe便宜,所以只要你保持备份,你可能会发现它可以接受的个人项目。
我想这可能会适用于一台或两台机器上的个人项目,但真的你会想要使用专业主机的多个成员项目。
我已经使用了BitBucket一段时间了,并且非常高兴…您也可以在免费帐户上拥有一个私人项目。
如果您尝试在同步过程中访问存储库,则会遇到问题。 这似乎也是一个开销。 您并不需要同步您的同步内容。 我不知道Dropbox是如何处理冲突的,但我怀疑它可以通过scm-aware的方式来实现。
+1的bitbucket。 它是免费的,你有一个单一的私人回购与该免费帐户(不像github)。
Dropbox唯一的解决scheme的缺点是,如果你在你的机器上的repo上搞些东西,那么这个screwup会被复制到bitbucket中,并被复制到你已经安装了dropbox的其他地方。 Dropbox非常快,所以你不能及时阻止它发生,以防止问题。
您将无法与发布这些更改分离对存储库进行更改。
我使用Dropbox来托pipe我在家庭和工作机器上使用的几个存储库,但这些存储库不是这些存储库的唯一副本。 还有一个bitbucket回购(以及其他有克隆的人)。
直到现在,我也一直在使用Dropbox。 太迟了,我意识到,在常规签入期间,只有当您尝试使用真实回购(在所有情况下最糟糕,因为在真正需要它之前,您不知道某些事情已经破裂)时,HG并不会报告腐败行为。
它不清楚是否腐败是自发的或由与Mac,Windows和Linux客户端(我在不同的时间使用所有三个)访问存储库造成的。 但是,至less有一个腐败案件发生在只有Mac被激活的情况下,所以很可能是Dropbox本身。
如果您决定危险地生活,请定期运行“hg verify”(或“git verify”)以清除灰尘。
我一直在使用Dropbox和git进行个人项目,现在还没有一个问题。 虽然有时候你必须等待Dropbox同步。 我认为如果在同一个项目上工作的人不止一个,这可能会引起一些小问题,但是对于个人项目,我发现Dropbox比GitHub更好,只是因为推拉速度更快。
至于推/拉中间同步,这很可能会导致问题,甚至可能会损坏您的回购,但是如果您是唯一一个在项目上工作的人,那么您确切知道Dropbox何时会同步。
我不build议使用带有mercurial的Dropbox,因为我经常在我的Mac和Windows客户端之间看到冲突的文件。 尤其是撤销受到影响,但我确实遇到与其他文件的冲突。
问候Mirko
目前我在3台机器上使用Bazaar。 但是,我是任何分支机构的唯一开发者。
我使用了init-repo –no-trees命令来创build存储库。
对于那些喜欢使用Dropbox而不是bitbucket / github的人,下面是我要做的,以避免云备份服务的双向同步过程中的损坏:
我的本地代码文件夹是c:\code
&backup文件夹是c:\Dropbox
。 在Dropbox文件夹中,我有一个truecryptencryption文件容器(它的大小比我的代码文件夹大)。 在白天,我定期将更改提交到本地的Git / Mercurial存储库。 然而,在一天结束的时候,我放弃了Dropbox&挂载truecrypt文件容器。 我将更改推送到文件容器中的裸存储库,卸载它并重新启动Dropbox。
这样,我可以安全地使用云服务作为我的DVCS存储库的备份。 如果文件容器正在使用,Dropbox将等待它被卸载,所以希望没有改变那里的腐败。 不过,如果我以某种方式得到文件容器的冲突副本,我可以轻松地装入这两个副本并比较变更集。