質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Drupal

DrupalはPHPで書かれたオープンソースのCMSフレームワークです。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

1回答

1579閲覧

composerでパッチの当て方や管理

SmokeyBlues

総合スコア22

Drupal

DrupalはPHPで書かれたオープンソースのCMSフレームワークです。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

1グッド

0クリップ

投稿2019/09/08 14:16

Composerで管理している、Drupal8のcoreのdrupal/coreのhogehogeモジュールにパッチを当てたいと思っています。
composer.jsonに記述する方法は次のサイトを見て理解しました。

Composerパッケージにパッチをあてる便利なプラグイン

しかしながら、このパッチが当たる動作の流れと、composer.jsonファイルの管理の方法がいまいちがわかりません。

例えば、最新のバージョンが8.7.7ですが、hogehogeモジュールは、8.7.5でもパッチが提供されてほぼ問題ないレベルに達しているのに、なかなかコミットされてなかったとします。
そこで、8.7.6へ、さらに8.7.7にアップデートしてしまった後に、今後composer.jsonに記述することにより、パッチを当てて管理したいと思い、記述しました。
8.7.7にアップデートしているのですから、composer updateの必要はないのですが、パッチはいつ当たるのでしょうか?
composer installをしないといけないのでしょうか?(新規ではないのにcomposer installしても問題ないのかな?)
composer require Drupal/coreをしても、Drupal/coreを一旦削除し再インストールしてくれるので、このタイミングでパッチは当たりますでしょうか?
はたまた、8.7.8のときにはdrupal/coreがアップデートされるので、このときに適用されるのでしょうか?

また、8.7.8でパッチがコミットされて、パッチを当てる必要がなくなったとします。
このときは、composer.jsonのパッチの記述を任意で削除して管理しますでしょうか?
それとも、放ったらかしでも問題ないでしょうか?

よろしくお願いいたします。

snize👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

パッチはいつ当たるのでしょうか?

composer update,composer installのどちらでも、パッチが適用されるパッケージは一旦削除されパッチが適用されます。細かくは追ってませんが、ComposerのInstallとUpdateイベントをサブスクライブしているように見えます。composer-patches/Patches.php at 9a08b4defec6f7fefed0d56051fe710d60e99652 · cweagans/composer-patches

8.7.8でパッチがコミットされて、パッチを当てる必要がなくなったとします。

このときは、composer.jsonのパッチの記述を任意で削除して管理しますでしょうか?
それとも、放ったらかしでも問題ないでしょうか?

パッチを適用するコードの対象部分に何らかの変更があった場合、パッチの適用に失敗します。この時点で問題が解決している場合はcomposer.jsonからパッチ適用の記述を削除、別の新しいパッチが必要な場合はパッチの更新の必要があります。その意味では放ったらかしにしたままアップデートができないので、自然とメンテナンスすることになると思います。

投稿2019/09/09 00:48

snize

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SmokeyBlues

2019/09/09 07:05

ありがとうございます。 > composer update,composer installのどちらでも、パッチが適用されるパッケージは一旦削除されパッチが適用されます。 一旦削除されるんですね、なるほどありがとうございます。 > パッチを適用するコードの対象部分に何らかの変更があった場合、パッチの適用に失敗します。 なるほどです。対象部分に変更ある場合は、別のパッチがある、パッチがすでに取り込まれているということになりますね。失敗してくれるので余計なチェックをする必要がないということですね。 ついでに1つ教えていただきたいのですが、パッチが成功すると、Composerでメッセージが表示されますでしょうか?
SmokeyBlues

2019/09/09 07:09

すみません、もう1つ。Drupal/coreの現状最新状態に、パッチを当てる場合、updateじゃ反応しないから、requireする感じでしょうか?
snize

2019/09/09 10:34

> パッチが成功すると、Composerでメッセージが表示されますでしょうか? 何か出ていた気がします。出てたら教えてください;) > パッチを当てる場合、updateじゃ反応しないから、requireする感じでしょうか? もしかしたら、[Update core via Composer | Drupal 8 guide on Drupal.org](https://www.drupal.org/docs/8/update/update-core-via-composer)を読むと解決するかもしれないですが、詳細わからないので必要に応じて新たに質問を作成されるのが良いかもしれません。
SmokeyBlues

2019/09/10 06:42

教えていただいたドキュメントを読んでもます。またベススレッドにすることを検討いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問