将Git和Dropbox有效地结合使用?

我如何有效地将Git和Dropbox一起使用?


我认为Dropbox上的Git非常棒。 我一直都在使用它。 我有多台计算机(两台在家,一台在工作),我使用Dropbox作为中央裸存储库。 由于我不希望将其托管在公共服务上,并且我无法访问始终可以ssh访问的服务器,因此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操作,并且它们将被同步到所有你的其他机器自动。

我在推理中写了一篇关于版本控制的博客文章(关于旧版链接),以及如何设置我的环境,这是基于我的Ruby on Rails开发经验,但它可以应用于任何事情。


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

我没有完整的可能出错的事情清单,但是这里有一个特定的例子让我失望。 每台机器都有自己的换行符的概念以及如何处理文件名中的大小写字符。 Dropbox和Git / Mercurial的处理方式略有不同(我不记得具体的区别)。 如果Dropbox更新Git / Mercurial背后的存储库,那么presto,破损的存储库。 这种情况会立即发生,并且无形中发生,因此直到您尝试从中恢复某些内容时,您甚至不知道您的存储库已损坏。

通过这种方式从一个混乱的事情中挖掘出来后,我一直在使用下面的配方,并取得了巨大的成功,并没有出现问题。 只需将您的存储库移出Dropbox即可。 使用Dropbox的一切; 文档,JAR文件,任何你喜欢的东西。 并使用Gi​​tHub(Git)或Bitbucket(Mercurial)来管理存储库本身。 两者都是免费的,所以这不会增加成本,每种工具现在都发挥其优势。

在Dropbox的顶部运行Git / Mercurial除了风险之外没有其他任何东西。 不要这样做。


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

在Dropbox中创建自己的裸回购会导致很多问题。 Anish(图书馆的创始人)最好地解释说:

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

传统的Git远程在服务器端运行代码以使其正常工作,但我们无法做到这一点。

解决方案:可以正确解决这个问题。 即使在有多个用户和并发操作的情况下,使用Dropbox也可以使用Git,并且具有与传统Git Remote相同的安全性和一致性保证!

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

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

链接地址: http://www.djcxy.com/p/69071.html

上一篇: Using Git and Dropbox together effectively?

下一篇: Inheriting Template class or composition errors