协慌网

登录 贡献 社区

有效地使用 Git 和 Dropbox?

如何有效地使用GitDropbox

答案

我认为 Dropbox 上的 Git 很棒。我一直都在使用它。我有多台计算机(两台在家,一台在工作),我使用 Dropbox 作为中央裸存储库。由于我不想在公共服务上托管它,并且我无法访问我总是可以访问的服务器,因此 Dropbox 通过在后台同步(非常快)来处理这个问题。

安装程序是这样的:

~/project $ git init
~/project $ git add .
~/project $ git commit -m "first commit"
~/project $ cd ~/Dropbox/git

~/Dropbox/git $ git init --bare project.git
~/Dropbox/git $ cd ~/project

~/project $ git remote add origin ~/Dropbox/git/project.git
~/project $ git push -u origin master

从那里,你可以克隆你已经与你的 Dropbox 帐户相关联的~/Dropbox/git/project.git (或者与人共享这个目录),你可以做所有正常的 Git 操作,它们将同步到你的所有其他机器自动。

我写了一篇博客文章, On Version Control ,( 旧链接 死了 )关于我的推理以及我如何设置我的环境,它基于我的Ruby on Rails开发经验,但它可以应用于任何事情,真的。

正确的方法是使用 git-remote-dropbox: https//github.com/anishathalye/git-remote-dropbox

在 Dropbox 中创建自己的裸仓库会导致很多问题。 Anish(图书馆的创建者) 解释得最好

这些问题的根本原因是 Dropbox 桌面客户端设计用于同步文件,而不是 Git 存储库。如果没有对 Git 存储库的特殊处理,它不会像 Git 那样保持相同的保证。远程存储库上的操作不再是原子操作,并发操作或不幸的同步时间可能导致存储库损坏。

传统的 Git 远程控制器在服务器端运行代码以使其正常工作,但我们不能这样做。

解决方案:可以正确解决此问题。即使有多个用户和并发操作,也可以将 Git 与 Dropbox 一起使用,并具有与传统 Git 遥控器相同的安全性和一致性保证!

对于用户来说,它就像使用 git-remote-dropbox 一样简单,它是一个 Git 远程助手,充当 Git 和 Dropbox 之间透明的双向桥接器,并保持传统 Git 远程的所有保证。它甚至可以安全地与共享文件夹一起使用,因此它可以用于协作(与无限合作者一起使用无限制的私人回购!)。

使用远程帮助程序,可以将 Dropbox 用作 Git 远程并继续使用所有常规 Git 命令,如 git clone,git pull 和 git push,一切都将按预期工作。

这个答案基于Mercurial 的经验,而不是 Git,但是这种经验表明,如果甚至有可能在不同的时间从不同的机器更新同一个基于 Dropbox 的存储库,那么使用 Dropbox 就会要求损坏的存储库(Mac,在我的情况下,Unix,Windows)。

我没有可能出错的完整列表,但这里有一个特定的例子。每台机器都有自己的行尾字符概念,以及如何在文件名中处理大写 / 小写字符。 Dropbox 和 Git / Mercurial 对此略有不同(我不记得确切的差异)。如果 Dropbox 更新 Git / Mercurial 后面的存储库,那么 presto 就会破坏存储库。这种情况立即发生,并且不可见,所以在您尝试从中恢复之前,您甚至不知道您的存储库已损坏。

在从一个乱七八糟的东西中挖掘出这种方式之后,我一直在使用以下配方并取得了巨大的成功而且没有任何问题的迹象。只需将您的存储库移出 Dropbox 即可。将 Dropbox 用于其他一切; 文档, JAR 文件 ,您喜欢的任何内容。并使用GitHub (Git)或Bitbucket (Mercurial)来管理存储库本身。两者都是免费的,所以这不会增加成本,现在每个工具都发挥其优势。

在 Dropbox 之上运行 Git / Mercurial 除了冒险之外什么都不会增加。不要这样做。