使用git跟踪对Dropbox的更改?

时间:2012-08-07 17:52:29

标签: python git version-control dropbox

  

跳到TLDR的底部。

问题:

在我们的环境中,每个人都使用Dropbox来协作开发大型编码项目。它解决了每个人都及时更新其他人所有变化的问题,并且还提供了一些关于“谁改变了什么,什么时候改变”的简单版本。

Dropbox没有提供,我正在寻找的是Git非常棒的版本,版本,责备,内容差异等等

我现在正在使用的是什么:

我仍然使用dropbox作为我们的“版本控制,因为其他”开发者“可能无法找出git,我知道这很容易,但他们讨厌改变

为了让我看到“真正发生了什么,以及是谁在做什么”,我正在使用Git跟踪该项目的整个Dropbox文件夹

我必须代表其他开发人员每隔一段时间手动提交一次,以便跟踪Git真棒酱的发生情况。

我在寻找什么:

有没有人对我陷入困境的环境有经验?我想找到一些可以注意Dropbox更改的内容,使用dropbox的API提取更改者的用户名,并自动将更改提交给git。

我还没有找到任何这样的解决方案,并且已经开始在Python中编写应用程序以执行我想要的操作,我可能必须在github上托管这个并请求帮助,空闲时间很少,而且相对较新的Python。

我能够从Dropbox API中提取RSS提要并解析文件是什么以及谁更改了它,但是还不足以将其挂钩到Git Commit中,应该是微不足道的 。我只是不想重新发明轮子。

  

TLDR:

     

我想自动跟踪保管箱中发生的变化   文件夹,并让他们Git Committed,包括该人的名字   谁在Dropbox中使用dropbox的API或类似文件更改了文件。可能使用Python,但欢迎任何事情。

提前致谢。

Git Repo,如果你想帮忙! https://github.com/haqthat/git-drop

3 个答案:

答案 0 :(得分:4)

老实说,您的团队需要一周的git练习,然后将从更强大的工作流程中受益。不要尝试自动提交。那是通往地狱的道路。

答案 1 :(得分:2)

如果你可以在linux上托管它,那么使用iwatch怎么样?每当通过dropbox sync在dropbox文件夹中更新文件时,iwatch可以在拉动用户时运行python脚本。然后使用envoy运行两个git命令git add 'filename'git commit -m "autocommit by system for user X changes"

当然它不是很漂亮,但它会完成这项工作,除非有更新,否则它不会运行。

答案 2 :(得分:1)

我使用dropbox作为git repo,跟随http://tumblr.intranation.com/post/766290743/using-dropbox-git-repository

因此,我能想到的最简单的方法是:

1)在您的保管箱文件夹中创建一个回购(这将与您共享的所有人自动同步)

2)使用github或您自己的git服务器上的远程配置(如果有的话)。这样,将在远程跟踪文件和用户之间的所有更改。

3)将脚本编写为cron作业,定期从本地保管箱提交,然后针对远程git服务器运行,查找增量和修订。你可以从Dropbox API ref开始 - https://www.dropbox.com/developers/reference/api#revisions

4)完成上述操作后,您可能希望包含对https://www.dropbox.com/developers/reference/api#metadata的调用,该调用根据dropbox返回可用于跟踪更改的哈希,然后调用您的轮询脚本。截至目前,似乎没有办法让Dropbox通知您除了每隔几分钟轮询到遥控器之外的更改。

hash Each call to /metadata on a folder will return a hash field, generated by hashing all of the metadata contained in that response. On later calls to /metadata, you should provide that value via this parameter so that if nothing has changed, the response will be a 304 (Not Modified) status code instead of the full, potentially very large, folder listing. This parameter is ignored if the specified path is associated with a file or if list=false. A folder shared between two users will have the same hash for each user.