我有一个个人项目的Mercurial存储库,我已经将主存储库存储在我的Dropbox中几个星期了(this line的内容;我知道它也是possible with git)。
这个想法是它既可以作为一种使用多台机器的方式,也可以作为远程备份。 我克隆存储库并处理非Dropbox副本,并且只会偶尔推送一次更新,就像我想的那样,我会使用Bitbucket。
与使用专用托管(Mercurial中的BitBucket)相比,你能想到这个想法的任何缺点吗? 我知道Bitbucket为单个用户提供免费帐户,这很棒,但它们限制在150M,这不是一个巨大的。
特别是,Dropbox的同步过程是否有可能破坏存储库?我必须在主存储库上运行一次 hg recover ,但它可能是无关的(无论如何它很乐意恢复)。有没有人对这个想法有不好的体验?有没有人有更好的经验,可以减轻我的担忧?有没有人基于对这些事物内部的更好理解而有意见?
编辑:我在问题中添加了一些说明。它们位于斜体中。
答案 0 :(得分:74)
出于上述原因,我建议反对,但更加强烈地说。 mercurial和git都有自己的协议来移动存储库之间的变更集。这些协议针对以下内容进行了优化/构建:
当你只是让一个目录同步来处理同步的.hg(或.git)目录时,那么在那个同步期间你就有了一个处于不一致状态且不知道它的远程存储。
此外,hg和git都分离了仅限本地的内容以及在其磁盘状态下远程可用的内容。他们知道要分享哪些信息(例如:提交的更改集)以及不应该分享的内容(例如:当前,本地工作目录父修订版)。
在其他答案中,人们说“你可能会很好”或“我从来没有遇到过问题”,这可能是真的,但这并不能保证是正确的,并且修改控制不是一个可以发挥作用的地方。为源控制系统使用正确,更好,更安全,更高效,功能更全面的同步协议。
答案 1 :(得分:17)
我的Dropbox存储库已经损坏了。它不会一直发生,但它不止一次发生的事实意味着我将停止使用Dropbox。
也就是说,Dropbox肯定比获得真正的托管便宜,所以只要你保留备份,你就会发现个人项目可以接受。
答案 2 :(得分:10)
我认为这对于一台或两台机器上的个人项目可能没问题,但实际上你会想要为多成员项目使用专业托管。
我个人使用BitBucket已经有一段时间了,并且非常高兴...你也可以在免费帐户上拥有一个私人项目。
答案 3 :(得分:2)
如果您尝试在同步过程中访问存储库,我会遇到问题。它似乎也有点开销。您不需要同步您同步的内容。我不知道dropbox如何处理冲突,但我怀疑它是否可以用scm识别方式来实现。
答案 4 :(得分:2)
+1 bitbucket。它是免费的,你可以使用该免费帐户获得一个私人仓库(与github不同)。
Dropbox唯一解决方案的缺点是,如果你在机器上的repo中搞砸了什么东西,那么这个搞砸就会被复制到bitbucket并复制到你已经安装了Dropbox的其他地方。 Dropbox非常快,因此您无法及时阻止它以防止出现问题。
您无法通过发布这些更改来解除对存储库的更改。
我确实使用dropbox来托管我在家用和工作机器上使用的几个存储库,但这些存储库并不是这些存储库的唯一副本。还有一个bitbucket repo(以及其他有克隆的人)。
答案 5 :(得分:2)
我一直在使用Dropbox with Hg,直到现在才遇到问题。太晚了,我意识到hg不会在例行检查中报告腐败,只有当你试图将回购用于真实时(最糟糕的情况,因为你不知道有什么东西被破坏,直到你真的需要它)。
目前尚不清楚腐败是自发的还是由于使用Mac,Windows和Linux客户端访问存储库造成的(我在不同的时间使用这三个)。但是,当只有Mac处于活动状态时,我至少看到过一起腐败案例,所以很可能是Dropbox本身。
如果您决定危险地生活,请定期运行“hg verify”(或“git verify”)以清除污垢。
答案 6 :(得分:1)
我已经使用Dropbox和git进行个人项目了很长一段时间了,我还没有遇到过任何问题。虽然,有时你必须等待Dropbox同步。我认为如果有多个人在同一个项目上工作,这可能会导致小问题,但对于个人项目,我发现Dropbox甚至比GitHub更好,如果只是因为推动/拉动更快。
至于推/拉中同步,这很可能会导致问题,甚至可能会破坏您的回购,但如果您是唯一一个正在处理该项目的人,那么您就知道Dropbox何时会同步。 / p>
答案 7 :(得分:1)
我不建议将dropbox与mercurial一起使用,因为我经常在Mac和Windows客户端之间看到冲突的文件。特别是撤消受到影响,但我确实也遇到了与其他文件的冲突。
此致 米尔科
答案 8 :(得分:0)
目前,我正在将3台机器与Bazaar一起使用。但是,我是任何分支机构的唯一开发人员。
我使用init-repo --no-trees命令创建存储库。
答案 9 :(得分:0)
对于那些喜欢在bitbucket / github上使用Dropbox的人,我这样做是为了避免云备份服务的双向同步过程中的损坏:
我的本地代码文件夹是c:\code
&备份文件夹为c:\Dropbox
。在Dropbox文件夹中,我有一个truecrypt加密文件容器(它的大小比我的代码文件夹大得多)。在白天,我经常将更改提交到我的本地Git / Mercurial存储库。然而,在一天结束时,我退出了Dropbox&挂载truecrypt文件容器。我将更改推送到文件容器中的裸存储库,卸载它&重新启动Dropbox。
这样,我可以安全地使用云服务作为我的DVCS存储库的备份。如果文件容器正在使用中,Dropbox将等待它被卸载,所以希望那里没有腐败的变化。尽管如此,如果我以某种方式获得了文件容器的冲突副本,我可以轻松地安装这两个副本并比较更改集。