CakePHP4で開発してるのに自作プラグインのサブモジュール名に「Cake3」という文字が含まれてるのをどうにかしようとしたときのメモです。
対象のプラグインについて
プラグイン名について以下の通り変更します。
現在 | 変更予定 |
Cake3ApiGenerator | ApiGenerator |
プラグインのソースをリファクタリング
作業用にプラグインを単体でクローンして作業用のブランチ作成
git clone https://github.com/imo-tikuwa/cakephp-api-generator.git cd cakephp-api-generator git branch * master git checkout -b rename-plugin-basename
プラグイン内のソースをVSCodeで置換。
次のような感じでプラグイン名以外にもハイフンケースとスネークケースの記述を置換。
置換前 | 置換後 |
Cake3ApiGenerator | ApiGenerator |
cake3-api-generator | api-generator |
cake3_api_generator | api_generator |
git add --all git commit -m "rename plugin basename" git push --set-upstream origin rename-plugin-basename
プラグインをサブモジュールとして使用する開発用リポジトリの作業
プラグイン開発用のリポジトリで作業。
まずサブモジュールとして使用中のリネーム前のリポジトリをいったん削除。
git checkout -b rename-cake3-api-generator cd cake_app/plugins git submodule deinit Cake3ApiGenerator git rm Cake3ApiGenerator
プラグイン開発用のリポジトリで以下の置換を実施。VSCodeで置換しちゃまずそうなファイルが候補に出るので、除外するファイルに「.git」と指定しておいた方が良いかも。
また、別のプラグイン(サブモジュール)の中で「Cake3ApiGenerator」という文字を使用してる箇所があったため、そこも置換する必要がありました。
# 別のプラグイン(サブモジュール)の修正をいったんプッシュ cd cake_app\plugins\Cake3AdminBaker\ git add -A git commit -m " Cake3ApiGenerator→ApiGeneratorのリプレイスを実施" git push # プラグイン開発用のリポジトリで置換した差分をコミット cd ../../.. git add README.md git add cake_app\composer.json git add cake_app\src\Application.php git add cake_app\tests\TestCase\ApplicationTest.php # 別のプラグイン(サブモジュール)の差異をステージング git add cake_app\plugins\Cake3AdminBaker
ここまで進めてVSCode上ではこんな感じ。
一旦コミット&プッシュ
git commit -m " Cake3ApiGenerator→ApiGeneratorのリプレイスを実施" git push --set-upstream origin rename-cake3-api-generator
プッシュ後、ApiGeneratorプラグインをサブモジュールとして追加。
masterへのマージはまだしていないので、ブランチ名を指定しています。
cd cake_app\plugins\ git submodule add -b rename-plugin-basename https://github.com/imo-tikuwa/cakephp-api-generator.git ApiGenerator
動作確認
ApiGeneratorプラグインをサブモジュールとして開発用リポジトリにプッシュする前に、ビルトインサーバー上で動作確認。
..\bin\cake.bat server
①入力画面 | ②確認画面 |
③完了画面 | ④生成したAPIに直アクセス |
動作確認後の作業
今回リネームを実施したサブモジュールのリポジトリはrename-plugin-basenameというブランチで作業していたのでmasterにマージするPRを作成、マージ。
マージ後、以下のコマンドでプラグイン開発用のリポジトリも差分をコミット&プッシュ。
cd cake_app\plugins\ApiGenerator\ git checkout master git pull cd ../ git add ApiGenerator git commit -m "Cake3ApiGenerator→ApiGeneratorのリネームが正常終了した状態"
.gitmodulesの差分にbranch名が入ってて気になるので削除。
cd ../../ git add .gitmodules git commit -m ".gitmodulesからブランチ名を削除" git push
その後、開発用のリポジトリもrename-cake3-api-generatorというブランチ名で作業していたのでmasterにマージするPRを作成、マージしました。
参考
Rename a git submodule – Stack Overflow
gitサブモジュールの追加/削除/再追加 – Qiita
その他
すべての作業が無事に完了したと思いきや、リポジトリ直下の.git/modules以下に削除した古いサブモジュールのディレクトリが残ってました(;o;
消していいのかわかんない。
9/28追記
git submodule update –recursiveを実行したところ、.git以下のCake3ApiGeneratorディレクトリだけ更新日時が変わらなかったので削除しました。