1

チームには次のような構造があります。

  • 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よりも、それほど高速ではありませんでした。

  1. ローカルファイルを、マウントされたSambaのドライブにあるファイルと同期します。
  2. マウントされたドライブで直接作業する

インターネット接続の問題が発生し、その後phpStormが永久にハングするため、2つ目はさらに悪化しました...

私も既存のソリューションを探していましたが、ほとんどのものは、手動で実行する必要があるunisonのような同期ユーティリティでしたが、実際には、私が探していたものではありません-同期は必要ありませんが、レプリケーションユーティリティ、これは、いくつかのローカルフォルダーを監視し、開発者の介入なしに、変更されたすべてのファイル(またはさらに良い-デルタ)をリモートの場所にプッシュします。

したがって、開発者のワークフローは可能な限りシンプルに保つ必要があります。

  • IDEのCtrl+Sはリモートで複製します。
  • gitpullはリモートで複製します。
  • gitcheckoutはリモートで複製します。
  • 等々...

Dropboxに似ていますが、任意のフォルダーを同期する可能性があり、一部のサブフォルダーをレプリケーションから除外します。これは一方向でのみ機能します:ローカル->リモート。どのツールが私たちのニーズに合うでしょうか?

4

1 に答える 1

1

もう1日試して失敗した後、ようやく自分のニーズを満たすツールを見つけました。RealSync 完璧ではありませんが、非常にうまく機能します。だから、同じ問題を抱えている人にはアドバイスできます。

UPDATE 19.08.13 最後に、最善の解決策を見つけました。PhpStormIDEに切り替えました。展開機能があり、展開サーバーの構成、展開パスのマップ、同期からの一部のファイルとフォルダーの無視などが可能です。ただし、ここで最も便利なオプションです。設定にあります:展開->オプション->変更されたファイルをデフォルトサーバーに自動的にアップロードします(常に)+外部の変更をアップロードします

この組み合わせにより、RealSyncを削除し、IDEからネイティブに同期を使用することができます。

于 2013-02-21T21:03:11.510 に答える