2つのDrupal 6サイトで実行中のモジュールのリストを比較するためにdrushを使用する方法はありますか?
私は2つのサイトをローカルで実行しています(重要な場合は2つのコードベースを使用)が異なるモジュールを使用していますが、非常によく似た奇妙な問題( ここで説明 )があります。この問題の原因となる可能性のあるモジュールを見つける際に、両方のサイトで実行されているモジュールのリストを取得すると非常に役立ちます。
直接的な方法があるかどうかはわかりませんが、これはbashまたは同様のシェルで動作するはずです。 Windowsでそれを行う方法についてはわかりません:)コメントしてください。答えに統合します。
まず、次のコマンドを使用して、両方のサイトの有効なモジュールをテキストフィールドに保存します。
drush pm-list --status=enabled > enabled_modules_site_x.txt
次に、これら2つのファイルの出力をdiffと簡単に比較できます。
diff first_file second_file
これが私の適応です:
diff -b -s --suppress-common-lines <(drush @sa1 pm-list --status=enabled --fields=package,name) <(drush @sa2 pm-list --status=enabled --fields=package,name)
他のサーバーで有効にされていないモジュールの概要をすばやく把握するために、バージョンを気にする必要はありません。
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%のケースで機能する)ための非常に迅速で簡単な単一ステップの方法が得られます。