チームには次のような構造があります。
- Bitbucketの中央ストレージでGitを使用する。
- メインドメイン(project.example.com)の「development」ブランチからのすべてのコードを含む開発リモートサーバー(Debian)を使用します。
- 各開発者は、サーバー上に独自のサブドメイン(dev01.project.example.com)を持つ独自のインスタンス(物理的には、CMFの変更不可能なコアファイルへの記号を持つドキュメントルートのサブフォルダー)を持っています。
必要なのは、各開発者のリモートインスタンスでのすべてのローカルコードベースの変更を追跡することです。
最初の最も明白な解決策は、そのためにGitを使用することです-開発サーバー上にリモートリポジトリを作成し、ローカルインスタンスからリモートに変更を「プッシュ」します。しかし、これは最悪の解決策です。開発者はすべての変更(デバッグメッセージとエラー出力を修正するためのすべての試行を含む)に対してコミットを作成する必要があり、Gitのログが大量の無用なコミットでいっぱいになるため、開発者はすべてのローカルリポジトリの利点+は、変更をBitbucketにプッシュする前に、ログのクリーニングに多くの時間を費やす必要があります。
2番目のオプション-ローカルサーバー。しかし、これも問題を引き起こします。私たちの構造ではすべて単一のデータベースを使用しているため、リモートデータベースを複製し、ローカルの変更と頻繁にマージするという複雑さがもう1つあります。また、ローカルワークステーション(Windowsベース)で開発環境を複製することは困難です。また、ワークステーションはコードの生成に使用され、サーバーは実際の環境でのコード作業に使用されるため、私は個人的にすべてのマシンにローカルサーバーを配置するという考えを嫌います。
3番目のオプション-FTP同期。私たちは皆、FTP経由のリモート同期のオプションがあるphpStormを使用しています。また、コードを変更してCtrl + Sを押すと、チャームのように機能します。変更した内容はすべて、リモートインスタンスにすぐに表示されます。ただし、Gitでリモートコードをプルする場合は、FTPでローカルファイルをリモートファイルと同期する必要があります。phpStormはすべてのファイルの内容を比較するため、実行速度が遅すぎます(この場合は15〜20分)。現在、私たちのプロジェクトには3k phpファイルがあります)。もちろん、サイズで比較して実行することはできますが、これは信頼できないソリューションです。
4番目の解決策-Samba。私たちもやってみました。両方のサブソリューションを使用したFTPよりも、それほど高速ではありませんでした。
- ローカルファイルを、マウントされたSambaのドライブにあるファイルと同期します。
- マウントされたドライブで直接作業する
インターネット接続の問題が発生し、その後phpStormが永久にハングするため、2つ目はさらに悪化しました...
私も既存のソリューションを探していましたが、ほとんどのものは、手動で実行する必要があるunisonのような同期ユーティリティでしたが、実際には、私が探していたものではありません-同期は必要ありませんが、レプリケーションユーティリティ、これは、いくつかのローカルフォルダーを監視し、開発者の介入なしに、変更されたすべてのファイル(またはさらに良い-デルタ)をリモートの場所にプッシュします。
したがって、開発者のワークフローは可能な限りシンプルに保つ必要があります。
- IDEのCtrl+Sはリモートで複製します。
- gitpullはリモートで複製します。
- gitcheckoutはリモートで複製します。
- 等々...
Dropboxに似ていますが、任意のフォルダーを同期する可能性があり、一部のサブフォルダーをレプリケーションから除外します。これは一方向でのみ機能します:ローカル->リモート。どのツールが私たちのニーズに合うでしょうか?