web-dev-qa-db-ja.com

drushを使用して、同じサーバー上の2つのサイトで実行中のモジュールを比較できますか?

2つのDrupal 6サイトで実行中のモジュールのリストを比較するためにdrushを使用する方法はありますか?

私は2つのサイトをローカルで実行しています(重要な場合は2つのコードベースを使用)が異なるモジュールを使用していますが、非常によく似た奇妙な問題( ここで説明 )があります。この問題の原因となる可能性のあるモジュールを見つける際に、両方のサイトで実行されているモジュールのリストを取得すると非常に役立ちます。

6
acrosman

直接的な方法があるかどうかはわかりませんが、これはbashまたは同様のシェルで動作するはずです。 Windowsでそれを行う方法についてはわかりません:)コメントしてください。答えに統合します。

まず、次のコマンドを使用して、両方のサイトの有効なモジュールをテキストフィールドに保存します。

drush pm-list --status=enabled > enabled_modules_site_x.txt

次に、これら2つのファイルの出力をdiffと簡単に比較できます。

diff first_file second_file
7
Berdir

これが私の適応です:

diff -b -s --suppress-common-lines <(drush @sa1 pm-list --status=enabled --fields=package,name) <(drush @sa2 pm-list --status=enabled --fields=package,name)

他のサーバーで有効にされていないモジュールの概要をすばやく把握するために、バージョンを気にする必要はありません。

2
dasjo

Berdirの答えはほとんどが機能しますが、より直接的な方法がありますand許可するように設定されたDrushエイリアスがあれば、複数のマシン間で比較できます。

diff -b -s --suppress-common-lines --side-by-side <(drush @uat pm-list --status=enabled) <(drush @dev pm-list --status=enabled)

(明らかに、@uatおよび@devを使用して、適切なエイリアスを追加してください。)

通常は違いのみを気にするので、--suppress-common-linesは便利なオプションです。横に並べると違いがわかりやすいので、--side-by-sideオプションも役立つかもしれません。標準のdiff出力が必要な場合は削除してください。 -bは空白の違いを無視します。これは非常に便利です。 -sは、結果が同一であるかどうかを通知します。これは、デフォルトではなく、フィードバックを取得するのに便利です。違いがない場合、diffは何も言いません。

ただし、これは常に完全に機能するとは限りません。特定の条件下では、2つのサーバー間で出力のフォーマットが異なる場合があるためです。

ただし、ほとんどの場合、2つのDrupalインストール済み環境で有効なモジュールを比較し、95%のケースで機能する)ための非常に迅速で簡単な単一ステップの方法が得られます。

1
iconoclast