web-dev-qa-db-ja.com

新しいアップグレード後にパッチを適用したコアを保存するにはどうすればよいですか?

Drupal 7コアにカスタムパッチを適用する必要がありましたが、新しいマイナーアップグレードをロールオーバーした後、変更が上書きされると思います。

コアの新しいマイナーパッチにアップグレードした後でも(このパッチが、アップグレードするバージョンに適用されていない場合)、パッチを適用したフォルダーなどを作成して、変更を保存する方法はありますか?コアが動作し続けることを確認しますか?

3
Michael

通常は Drupal core をハッキングしないでください。ただし、いくつかの例外があります:

  • drupal.orgからダウンロードしたパッチを適用しています QAテスト済み
  • Drupalコードベース、開発プラクティス、およびセキュリティモデルに精通している人が実装したパッチを適用している。
  • Drupalコアに含まれているユニットテスト(SimpleTest)を使用してパッチをテストし、変更を適切に文書化します(たとえば、コードで適切なリビジョン管理を行うことにより)。

その場合は、パッチを適切に文書化し、理想的にはリポジトリに保管する必要があります(例:Drupal docroot level、Drupal core folder、または、そのための新しいpatches/フォルダを作成します)。

次に、Drupalコアをアップグレードするたびに、これらのパッチを再度適用することを忘れないでください(これは、Drupalアップグレード手順の一部です)。

これを自動化するには、次の可能性があります。

  • drushコマンドを使用してコアをアップグレードします(例:スクリプトの一部として):

    drush -y up drupal
    find . -name "*.patch" -depth 1 -print -exec sh -c "patch -p1 <'{}'" ';'
    
  • drush makeを使用します。例:

    • .makeファイル `(参照: 完全な例drupal-org.makeファイル

      api = 2
      core = 7.x
      projects[drupal][patch][] = http://drupal.org/files/issues/992540-3-reset_flood_limit_on_password_reset-drush.patch
      projects[drupal][patch][] = http://drupal.org/files/issues/object_conversion_menu_router_build-972536-1.patch
      
    • YAMLファイル(参照: examples/example.make.yml

      core: "7.x"
      api: 2
      projects:
        drupal:
          version: ~
          patch:
            - "https://www.drupal.org/files/issues/add_a_startup-1543858-30.patch"
      

    Makeファイルで作業していない場合でも、Drupalコアファイルを空のフォルダーにダウンロードできます。これにより、パッチファイルが自動的に適用されます。ユニットテストを実行して、生成されたファイルを置き換えることを検討してください。 Drupalコアインスタンスに。

  • Drupal docrootで手動でアップグレードおよびパッチを適用:

    curl https://ftp.drupal.org/files/projects/drupal-7.4?.tar.gz | tar xvf - --strip-components=1
    patch -p1 < add_a_startup-1543858-30.patch
    
4
kenorb

ベストプラクティスは、元のコアにパッチを適用する必要のない機能を実装する方法を見つけることです。あなたは読んでみるべきです- なぜコアをハックしないのですか?

とにかく、パッチでDrupalコアを維持したい場合(または必要な場合)は、このプロジェクトのいずれかを使用してパッチを管理できます。

このプロジェクトは、次の問題の解決を目指しています。

  • プロジェクトに適用したパッチを文書化するにはどうすればよいですか?
  • すべてのパッチを手動でチェックせずに、どのパッチが適用されているかどうかを確実に知るには?
  • モジュールの更新をダウンロードした後でパッチを再適用する必要があることをどのように思い出させることができますか?

Drupalでのパッチ管理に役立つDrushツール。パッチ適用とモジュールのアップグレードに役立ちます。

3
itsdarrylnorris