10

TLDR については、一番下までスキップしてください。

問題:

私たちの環境では、誰もが Dropbox を使用して大規模なコーディング プロジェクトの開発を共同で行っています。他の人が何を変更したかを全員が最新の状態に保つという問題を解決し、「誰が何をいつ変更したか」に関する簡単なバージョン管理も提供します。

私が探している Dropbox が提供していないのは、バージョニング、非難、コンテンツ差分などに関する Git の素晴らしいソースです。

私が今取り組んでいること:

私はまだドロップボックスを「バージョン管理」として使用しています。他の「開発者」はおそらく git を理解できないためです

「実際に何が起こっているのか、誰がそれを行っているのか」を確認するために、Git を使用してそのプロジェクトのドロップボックス フォルダー全体を追跡しています。

Git の素晴らしいソースで何が起こっているのかを追跡するために、他の開発者に代わって時々手動でコミットする必要があります。

私が探しているもの:

私が立ち往生している環境の経験がある人はいますか? Dropbox の変更に気づき、Dropbox の API を使用してその変更を行ったユーザーのユーザー名を取得し、変更を git に自動コミットできるものを見つけたいと思います。

私はそのような解決策を見つけていません.そして、私がやりたいことをするためにすでにPythonでアプリを書き始めています.これをgithubでホストして助けを求める必要があるかもしれません.

ドロップボックス API から RSS フィードを取得し、ファイルの内容と変更者を解析することはできますが、Git コミットにフックするには不十分です。私は車輪を再発明したくありません。

TLDR:

ドロップボックス フォルダーで発生した変更を自動的に追跡し、ドロップボックスの API などを使用して、ドロップボックス内のファイルを変更した人の名前を含め、それらを Git コミットしたいと考えています。Python を使用する可能性がありますが、何でも歓迎します。

前もって感謝します。

あなたが助けたい場合は、Git Repoを! https://github.com/haqthat/git-drop

4

3 に答える 3

4

正直なところ、あなたのチームは 1 週間の git の練習が必要であり、そうすればはるかに堅牢なワークフローの恩恵を受けることができます。コミットを自動化しようとしないでください。それは地獄への道を下っています。

于 2012-08-07T18:32:47.323 に答える
2

Linux でホストできるなら、iwatchを使ってみませんか?ドロップボックス同期によってドロップボックス フォルダ内のファイルが更新されるたびに、iwatch はユーザーをプルするときに Python スクリプトを実行できます。次に、envoyを使用して 2 つの 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 リポジトリとして使用しました。

それから、私が考えることができる最も簡単な方法は次のとおりです。

1)ドロップボックス フォルダーでレポを開始します (これにより、共有しているすべてのユーザーが自動同期されます)。

2) github または独自の git サーバー (存在する場合) のリモートで構成します。このようにして、ファイルとユーザー間のすべての変更がリモートで追跡されます。

3) ローカル ドロップボックスから定期的にコミットし、リモート git サーバーに対して実行してデルタとリビジョンを探すcron ジョブとしてスクリプトを作成します。ここから始まる Dropbox API ref から取得できます - https://www.dropbox.com/developers/reference/api#revisions

4) 上記を行った後、ドロップボックスごとに変更を追跡するために使用できるハッシュを返し、次にあなたポーリング スクリプト。今のところ、数分ごとにリモートにポーリングする以外に、ドロップボックスが変更を通知する方法はないようです。

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 に答える