1

簡単に言うと、サーバーとファイルを同期するための単純なドロップボックス クローンを作成する必要があります。

私は宿題をし、多くの調査を行いましたが、見つけた解決策 (コードと既に作成された解決策の両方) のいずれも十分ではないようでした。

ここでスタックオーバーフローに関する他の投稿も読みましたが、唯一の違いは、ファイルシステム イベントで同期タスクをトリガーする必要があることです。また、git は実際のバージョン管理の目的で既に使用されており、この同期タスクには使用できません。

これが私のセットアップです:

私は github に git リポジトリを持っており、capistrano を使用して定期的にデプロイを行っています。これが私の問題です。実際のローカル開発を行うことを不可能にするインフラストラクチャとデータの影響があります。

コードはローカルに存在でき、github でバージョン管理できますが、開発を行っている場合でも、サーバー上で実行する必要があります。カウボーイの開発を避けるために、私はこの解決策を思いつきました:

  • これは、何百もの tpl (html + smarty)、css、および js ファイルを含むフロントエンド層のみを対象としていることを覚えておいてください *

  • master ブランチは一般公開されています

  • ライブ アプリにログインすると、開発者は「開発者モード」に切り替えて、サーバー上に存在する別のリポジトリを指すことができます。この「ゴースト」リポジトリは、開発者のローカル作業コピーの正確なレプリカにすぎません。ドロップボックスのクローンを介して、開発者のローカル リポジトリとの同期が維持されます。

そうすれば、これがワークフローになります。

  1. 開発者はすべてのものをローカルで作業します
  2. ローカルで何かが変更されるたびに、「ゴースト」開発者リポジトリも更新され、サーバー上でテストできます
  3. 開発者が結果に満足したら、コミットして開発ブランチにプッシュできます。
  4. チームが新しいリリースの準備ができたら、すべてのコミットをカピストラーノからデプロイできます

このようにして、各開発者のゴースト リポジトリは、git ワークフローに関しては完全に見えなくなります (git に関する限り、これらのゴースト リポジトリは存在すらせず、開発者にとっては単なるユーティリティです)。

この(長い!)前提を考えると、これらは私が必要とする機能です:

  • ssh 経由で同期する機能
  • ファイルシステム イベント (ファイルとディレクトリの作成/更新/削除) で同期をトリガーする
  • rsync スタイル (デルタ エンコーディング) での更新の同期のみ、基本的には違いのみ
  • おそらくクロスプラットフォーム (windows/mac) ソリューション

「すでに作成された」ソリューションの中で:

  • グッドシンク
  • 非常に柔軟なファイル シンクロナイザー
  • クロノシンク

グッドシンクだけが私に必要なものを提供しているように見えましたが、自動更新機能 (ファイルシステムの更新時に同期) を機能させることができませんでした。

私が自作しなければならないレシピの中で、FSEvents、inotify (Linux) + rsync オプションについて読んだことがありますが、それらは私のリーグから少し外れている可能性があります (基本的な AppleScript を実行できますが、FSEvents ではおそらくそれほど多くはありません)。 API または inotify)

これが私が今いるところです。私はあらゆる種類の提案を受け入れます。この件について共有できるものは何でも事前に感謝します.

ありがとう!

4

2 に答える 2

2

Windowsの互換性のためにlsyncdとsamba共有を使用する

開発者がローカルで作業するsamba共有を備えたローカルLinuxサーバーをお勧めします。次に、ローカルサーバーはlsyncd(ユーザーフレンドリーなinotify / rsync / sshソリューション)を使用してリモートサーバーと同期します。私はこのような非常に成功したソリューションを展開しましたが、セットアップは非常に簡単です(高度な/カスタムスクリプトはありません)。

また、以下もご覧ください。

  • Aerofs(クロスプラットフォーム)
  • OwnCloud(クロスプラットフォーム)
于 2012-10-06T17:41:41.943 に答える
0

あなたがそれを難し​​い方法でやろうとしているように私には見えます。

私は、ソースベースが大きく、ホームマシンではなくサーバー上に構築するのが最適なソフトウェアプロジェクトに取り組んでいます。サーバーにSSHで接続し、その方法でソースを編集します。(実際、私はNXを使用してリモートX-windowsセッションを使用していますが、同じことです。)サーバーはカリフォルニアにあり、私は英国にいます。レイテンシーは問題ではないので、ひどい接続を介して動作しているので、私は何もより凝ったもののポイントを見ていません。

ローカルエディタを使用する必要がある場合は、sshfsを使用してリモートシステムをマウントしてみてください。理想的ではありませんが、機能します。ただし、そのように多くのファイルをスキャンするようなことはお勧めしません。

それ以外の場合、ミラーリングされたディレクトリを使用する必要がある場合、なぜそれを自動にする必要があるのですか?確かに、開発者はいつ変更をテストしたいかを知っていて、rsyncボタンを押すだけでいいのでしょうか?

于 2012-04-26T15:32:53.717 に答える