10

跳到 TLDR 的底部。

问题:

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

Dropbox 没有提供的,这正是我正在寻找的,是 Git 的很棒的酱汁,就版本控制、责任、内容差异等而言

我现在正在使用的内容:

我仍在使用 Dropbox 作为我们的“版本控制”,因为其他“开发人员”可能无法弄清楚 git,我知道这很容易,但他们讨厌更改

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

我必须每隔一段时间代表其他开发人员手动提交一次,以跟踪 Git 令人敬畏的酱汁发生了什么。

我在找什么:

有人对我所处的环境有经验吗?我想在 Dropbox 中找到可以注意到更改的内容,使用 Dropbox 的 API 提取进行更改的用户名,然后将更改自动提交到 git。

我还没有找到任何这样的解决方案,并且已经开始用 Python 编写一个应用程序来做我想做的事情,我可能不得不在 github 上托管它并寻求帮助,空闲时间很少,而且对 Python 来说相对较新。

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

TLDR:

我想自动跟踪 Dropbox 文件夹中发生的更改,并让它们 Git 提交,包括更改 Dropbox 中文件的人的姓名、使用 Dropbox 的 API 或类似的。可能使用 Python,但欢迎使用任何东西。

提前致谢。

Git Repo,以防您想提供帮助! https://github.com/haqthat/git-drop

4

3 回答 3

4

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

于 2012-08-07T18:32:47.323 回答
2

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

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

于 2012-08-07T18:04:55.557 回答
1

我按照http://tumblr.intranation.com/post/766290743/using-dropbox-git-repository的内容将 dropbox 用作 git repo

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

1)在您的保管箱文件夹中初始化一个回购(这将在您与之共享的每个人之间自动同步)

2)使用 github 上的遥控器或您自己的 git 服务器(如果有)对其进行配置。这样,跨文件和用户的所有更改都将在远程进行跟踪。

3) 将脚本编写为 cron 作业,定期从本地保管箱提交,然后针对远程 git 服务器运行并查找 deltas 和 revisions。您可以从这里开始的 Dropbox API 参考中获得它 - 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.
于 2012-08-07T18:17:17.253 回答