簡単に言うと、サーバーとファイルを同期するための単純なドロップボックス クローンを作成する必要があります。
私は宿題をし、多くの調査を行いましたが、見つけた解決策 (コードと既に作成された解決策の両方) のいずれも十分ではないようでした。
ここでスタックオーバーフローに関する他の投稿も読みましたが、唯一の違いは、ファイルシステム イベントで同期タスクをトリガーする必要があることです。また、git は実際のバージョン管理の目的で既に使用されており、この同期タスクには使用できません。
これが私のセットアップです:
私は github に git リポジトリを持っており、capistrano を使用して定期的にデプロイを行っています。これが私の問題です。実際のローカル開発を行うことを不可能にするインフラストラクチャとデータの影響があります。
コードはローカルに存在でき、github でバージョン管理できますが、開発を行っている場合でも、サーバー上で実行する必要があります。カウボーイの開発を避けるために、私はこの解決策を思いつきました:
これは、何百もの tpl (html + smarty)、css、および js ファイルを含むフロントエンド層のみを対象としていることを覚えておいてください *
master ブランチは一般公開されています
- ライブ アプリにログインすると、開発者は「開発者モード」に切り替えて、サーバー上に存在する別のリポジトリを指すことができます。この「ゴースト」リポジトリは、開発者のローカル作業コピーの正確なレプリカにすぎません。ドロップボックスのクローンを介して、開発者のローカル リポジトリとの同期が維持されます。
そうすれば、これがワークフローになります。
- 開発者はすべてのものをローカルで作業します
- ローカルで何かが変更されるたびに、「ゴースト」開発者リポジトリも更新され、サーバー上でテストできます
- 開発者が結果に満足したら、コミットして開発ブランチにプッシュできます。
- チームが新しいリリースの準備ができたら、すべてのコミットをカピストラーノからデプロイできます
このようにして、各開発者のゴースト リポジトリは、git ワークフローに関しては完全に見えなくなります (git に関する限り、これらのゴースト リポジトリは存在すらせず、開発者にとっては単なるユーティリティです)。
この(長い!)前提を考えると、これらは私が必要とする機能です:
- ssh 経由で同期する機能
- ファイルシステム イベント (ファイルとディレクトリの作成/更新/削除) で同期をトリガーする
- rsync スタイル (デルタ エンコーディング) での更新の同期のみ、基本的には違いのみ
- おそらくクロスプラットフォーム (windows/mac) ソリューション
「すでに作成された」ソリューションの中で:
- グッドシンク
- 非常に柔軟なファイル シンクロナイザー
- クロノシンク
グッドシンクだけが私に必要なものを提供しているように見えましたが、自動更新機能 (ファイルシステムの更新時に同期) を機能させることができませんでした。
私が自作しなければならないレシピの中で、FSEvents、inotify (Linux) + rsync オプションについて読んだことがありますが、それらは私のリーグから少し外れている可能性があります (基本的な AppleScript を実行できますが、FSEvents ではおそらくそれほど多くはありません)。 API または inotify)
これが私が今いるところです。私はあらゆる種類の提案を受け入れます。この件について共有できるものは何でも事前に感謝します.
ありがとう!