62

我有一个用于个人项目的 Mercurial 存储库,并且我已经将主存储库存储在我的 Dropbox 中几个星期了(沿着这条线;我知道它也可以使用 git)。

这个想法是,它既可以作为与多台机器一起工作的一种方式,也可以作为远程备份。我克隆存储库并处理非 Dropbox 副本,并且只偶尔推送一次更新,就像我想使用 Bitbucket 一样。

与使用专用托管(在 Mercurial 的情况下为 BitBucket)相比,您能想到这个想法的任何缺点吗?我知道 Bitbucket 有针对单个用户的免费帐户,这很棒,但它们仅限于 150M,这并不是一个巨大的.

特别是,Dropbox 的同步过程是否会损坏存储库?我不得不在主存储库上运行一次hg recover,但它可能是无关的(无论如何它很高兴恢复)。有没有人对这个想法有不好的体验?有没有人有更长的好经验,可以减轻我的后顾之忧?有没有人基于更好地理解这些事物的内部而有意见?

编辑:我对问题添加了一些说明。它们是斜体的。

4

10 回答 10

75

出于上述原因,我建议不要这样做,但要更加努力地说明。mercurial 和 git 都有自己的协议,用于在存储库之间移动变更集。这些协议针对以下情况进行了优化/构建:

  • 效率
  • 一致性(你永远不能从半更新状态的回购中提取)
  • 钩子/触发器——推/拉上的事情,包括质量(不允许标签等)过滤器

当您只是让目录同步处理 .hg(或 .git)目录的保持同步时,在同步期间,您会得到一个处于不一致状态并且不知道它的远程存储。

此外,hg 和 git 在它们的磁盘状态中都区分了哪些是本地的,哪些是远程的。他们知道要共享哪些信息(例如:提交的变更集)和不共享哪些信息(例如:当前的本地工作目录父修订版)。

在其他答案中,人们会说“你可能会没事”或“我从来没有遇到过问题”,这可能是真的,但不能保证是真的,而且修订控制不是一个赌注的地方。为您的源代码控制系统使用正确、更好、更安全、更高效、更全功能的同步协议。

于 2009-12-27T21:03:25.257 回答
17

我的 Dropbox 存储库损坏时遇到了问题。它不会一直发生,但它不止一次发生的事实意味着我将停止为此目的使用 Dropbox。

也就是说,Dropbox 肯定比获得真正的托管便宜,所以只要您保留备份,您可能会发现它对于个人项目是可以接受的。

于 2010-02-11T14:18:28.337 回答
10

我想这对于一两台机器上的个人项目可能工作得很好,但实际上你会想要为多成员项目使用专业托管。

我个人使用 BitBucket 已经有一段时间了,非常高兴……您也可以在免费帐户上拥有一个私人项目。

于 2009-12-26T21:11:05.633 回答
2

如果您尝试在同步过程中访问存储库,我预计会出现问题。这似乎也有点开销。你真的不需要同步你同步的东西。我不知道 Dropbox 如何处理冲突,但我怀疑它能否以 scm 感知的方式进行。

于 2009-12-26T21:09:53.670 回答
2

+1 位桶。它是免费的,您可以使用该免费帐户获得一个私人仓库(与 github 不同)。

仅使用保管箱的解决方案的缺点是,如果您确实在计算机上的存储库中搞砸了,那么搞砸的东西将被复制到 bitbucket 并复制到您安装了保管箱的所有其他地方。Dropbox 速度非常快,因此您将无法及时阻止它发生以防止出现问题。

您将失去对存储库进行更改与发布这些更改的分离的能力。

我确实使用 Dropbox 来托管我在家庭和工作机器上使用的几个存储库,但这些并不是这些存储库的唯一副本。还有一个 bitbucket 存储库(以及其他拥有它们的克隆的人)。

于 2009-12-27T03:37:54.107 回答
2

到目前为止,我也一直在使用带有 Hg 的 Dropbox,没有遇到任何问题。太晚了,我意识到 hg 不会在例行检查期间报告损坏,只有当你尝试真正使用 repo 时(最糟糕的情况,因为在你真正需要它之前你不知道有什么东西坏了)。

目前尚不清楚损坏是自发的还是由使用 Mac、Windows 和 Linux 客户端访问存储库引起的(我在不同时间使用这三种客户端)。但我已经看到至少有一个腐败案例发生在只有 Mac 处于活动状态时,所以它很可能是 Dropbox 本身。

如果您确实决定过着危险的生活,请定期运行“hg verify”(或“git verify”以发现任何污垢。

于 2011-03-04T11:50:30.163 回答
1

很长一段时间以来,我一直在将 Dropbox 与 git 一起用于个人项目,但我还没有遇到任何问题。不过,有时您必须等待 Dropbox 同步。我认为如果有多个人在同一个项目上工作,这可能会导致一些小问题,但对于个人项目,我发现 Dropbox 甚至比 GitHub 更好,只是因为推/拉更快。

至于推送/拉取中间同步,这很可能会导致问题,甚至可能会损坏您的存储库,但如果您是该项目的唯一工作人员,那么您确切知道 Dropbox 何时同步。

于 2009-12-27T14:37:14.880 回答
1

我不建议将 Dropbox 与 mercurial 一起使用,因为我经常看到我的 Mac 和 Windows 客户端之间存在冲突的文件。特别是撤消受到​​影响,但我也确实遇到了与其他文件的冲突。

问候米尔科

于 2010-03-31T19:35:09.957 回答
0

我现在在 3 台机器上将它与 Bazaar 一起使用。但是,我是任何分支中唯一的开发人员。

我使用 init-repo --no-trees 命令来创建存储库。

于 2010-07-22T17:09:55.900 回答
0

对于那些更喜欢使用 Dropbox 而不是 bitbucket/github 的人,这是我为避免云备份服务的 2 路同步过程造成损坏而采取的措施:

我的本地代码文件夹是c:\code& 备份文件夹是c:\Dropbox. 在 Dropbox 文件夹中,我有一个truecrypt加密文件容器(它的大小比我的代码文件夹大得多)。白天,我会定期向本地 Git/Mercurial 存储库提交更改。但是最终,我退出了 Dropbox 并挂载了 truecrypt 文件容器。我将更改推送到文件容器中的裸存储库,卸载它并重新启动 Dropbox。

这样,我可以安全地使用云服务作为 DVCS 存储库的备份。如果文件容器正在使用中,Dropbox 将等待它被卸载,所以希望那里没有损坏的变化。尽管如此,如果我以某种方式获得了文件容器的冲突副本,我可以轻松地挂载这两个副本并比较变更集。

于 2013-07-03T19:28:07.343 回答