2012-04-23 12 views
1

短い話をするには、サーバーとファイルを同期するための単純なDropboxクローンを作成する必要があります。Dropboxあなたのサーバーと同期するDIY:rsync + FSEvents/inotify /他の何か?

私は宿題をしましたが、私は多くの研究を行いましたが、私が見つけた解決策(コードと既に焼いた解決策のいずれも)は十分ではないようでした。

私はここでもstackoverflowで他の記事を読んでいますが、唯一の違いはファイルシステムイベントでトリガされる同期タスクが必要なことです。また、gitは実際のバージョン管理のためにすでに使用されており、この同期タスクには使用できません。私はgithubの上のgitリポジトリを持っていると私はカピストラーノとの定期的な展開を行う

は、ここに私のセットアップです。ここに私の問題があります。私たちはインフラストラクチャーとデータの意味合いがあり、実際の現地開発は不可能です。

私のコードはローカルに存在する可能性がありますが、私はgithubでバージョンアップすることができますが、にはが必要です。 は、カウボーイの開発を避けるために、私はこの解決策を考え出した:

  • は、これが唯一のTPLの何百(HTML + Smartyの)、CSSやJSを必要とするフロントエンド層、のためのものであることに留意してくださいファイルは、*私たちのライブのアプリにログインしている公共

  • ため

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

その方法は、これは私たちのワークフローになります

  1. 開発者が
  2. たびに何かがローカルに変更されたすべてのものの上でローカルに動作しない、「ゴースト」開発者のリポジトリには、あまりにも、物事に更新されますサーバ上でテストすることができます
  3. デベロッパーが結果に満足すれば、開発ブランチにコミットしてプッシュすることができます
  4. チームが新しいリリースの準備ができたら、すべてのコミットをcapis trano

この方法で、それはGitのワークフローに来るとき、各開発者のゴーストリポジトリは(限りのgitが懸念しているとして、これらのゴーストリポジトリは存在さえしていない、彼らは単にある絵の外に完全にあります開発者のためのユーティリティ)。

これを指定すると(long!)を前提に、これらは私が必要となる機能は次のとおりです。ファイルシステムイベントの同期(作成/更新/削除ファイルやディレクトリ)

  • だけrsyncのスタイルで更新を同期トリガ
  • SSH経由で同期する

    • 能力(デルタエンコーディング)、基本的にはおそらく違い
    • クロスプラットフォーム(ウィンドウ/ MAC) "が既になさ" ソリューションの中で解決

    • グッドシンク
    • スーパー柔軟なファイル同期装置
    • ChronoSync

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

    レシピの中で私はFSEvents、inotify(Linux)+ rsyncオプションについて読んだことがありますが、私のリーグから少し外れているかもしれません(私は基本的なAppleScriptを使うことができますFSEvents APIまたはinotifyでlot)

    これは私が今どこにいるかです。私はどんなタイプの提案にも開放されています。そして、あなたがその主題に関して分かち合うことができるものについて、事前に感謝します。

    ありがとうございます!

    答えて

    0

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

    大きなソースベースを持ち、自宅のマシンではなくサーバー上に構築するのが最適なソフトウェアプロジェクトで作業しています。サーバーにsshで接続してソースをそのまま編集するだけです。 (実際には、リモートX-windowsセッションを使用するためにNXを使用しますが、それは同じことになります)。サーバーはカリフォルニアにあり、私は英国にあり、待ち時間は問題ではないので、ひどいつながりで動作していて、私は何かが好きではないと思う。

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

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

    Windowsとの互換性のため
    +0

    こんにちは、あなたの答えに感謝。開発チームの誰もがコンソールテキストエディタのファンではありませんので、我々はまた、彼らが最もよく働くツールを選択する可能性を与えようとしています(TextMate、SublimeTextでもかなり大きくなっています)。あなたは実際にrsyncの良い点を作った、私はそれが最終的に私たちが行くつもりのオプションだと思う。何人かの開発者(自分自身を含む)がcmd + sを5分未満で実行することができないことを考慮して、毎回の変更時にサーバーにヒットするのは無責任なのかもしれません:) - rsyncをトリガーするリンゴスクリプトdevで選択したキーボードコンボ –

    2

    使用lsyncdとsambaの共有

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

    はまた、次のを見て:

    • Aerofs(クロスプラットフォーム)
    • OwnCloud(クロスプラットフォーム)
    関連する問題