背景
igapyon/miku-project#123 で、製品ファミリーの canonical name を mikuproject 系から miku-project 系へ移行する方針を定めた。
このリポジトリは現在、GitHub repository igapyon/mikuproject-java、Maven artifactId と build final name mikuproject、成果物 mikuproject.jar、Java package jp.igapyon.mikuproject、upstream 参照 directory vendor/mikuproject/ を使用している。公開名称と内部 identifier を一括置換すると、Java 利用者の互換性と upstream 追従履歴を同時に壊す可能性がある。
本 Issue では、公開される repository・Maven metadata・成果物・CLI 表示・参照 URL を miku-project 系へ移行し、Java package、class 名、vendor directory は互換性を優先して第一段階では維持する。
Refs igapyon/miku-project#123
目的
- GitHub repository を
igapyon/miku-project-java へ変更する
- Java 版の公開 metadata と配布成果物を
miku-project 系へ揃える
- 維持する旧内部 identifier を明記し、機械的な全置換を防ぐ
- 同じ手順と検証条件で再実行できる移行記録を残す
名称と互換境界
| 対象 |
現在 |
変更後 |
方針 |
| GitHub repository |
igapyon/mikuproject-java |
igapyon/miku-project-java |
人間が GitHub Settings で変更する |
| repository / project 表示名 |
mikuproject-java |
miku-project-java |
canonical name を変更する |
Maven artifactId |
mikuproject |
miku-project |
public artifact name を変更する |
| build final name |
mikuproject |
miku-project |
JAR と distribution 名へ反映する |
| runtime JAR |
mikuproject.jar |
miku-project.jar |
canonical filename を変更する |
| sources JAR |
mikuproject-sources.jar |
miku-project-sources.jar |
canonical filename を変更する |
| distribution ZIP |
mikuproject-dist.zip |
miku-project-dist.zip |
canonical filename を変更する |
| CLI の製品表示 |
mikuproject |
miku-project |
--version、help、診断を更新する |
| Java package |
jp.igapyon.mikuproject |
変更しない |
source/binary compatibility のため第一段階では維持する |
| main class |
jp.igapyon.mikuproject.cli.MikuprojectCli |
変更しない |
manifest entrypoint を維持する |
| upstream directory |
vendor/mikuproject/ |
変更しない |
subtree の追跡履歴を維持し、歴史的内部 path として文書化する |
jp.igapyon.mikuproject、MikuprojectCli、vendor/mikuproject/ の変更が必要になった場合は、本 Issue に混在させず、互換性と移行方法を定めた別 Issue で扱う。
実施前に固定する情報
作業開始時に、Issue コメントまたは PR 本文へ次を記録する。
- 変更前 repository の default branch と exact HEAD SHA
- 変更前の最新 Release tag、または Release がないこと
- 追従対象となる
miku-project の exact tag または commit SHA
vendor/mikuproject/ が指す upstream commit
- 変更前に実行した
mvn test と mvn package の結果
- 変更前 runtime の
java -jar target/mikuproject.jar --version の結果
latest、可変 branch 名、GitHub redirect だけを再現条件に使用しない。
実施手順
- 上記 baseline を取得し、変更前の build/test が成功することを確認する。
- 人間が GitHub Settings で
igapyon/mikuproject-java を igapyon/miku-project-java へ rename する。
- local clone の
origin を新 URL へ変更し、fetch/push の参照先が igapyon/miku-project-java であることを確認する。redirect のまま作業を続けない。
pom.xml の artifactId、name、description、url、finalName と配布 ZIP 設定を名称表へ揃える。
- README、development docs、upstream mapping、assembly descriptor、GitHub Actions、Release asset 名、badge、repository URL を更新する。
- CLI の
--version、help、診断、配布文書に現れる製品表示を miku-project へ更新する。
vendor/ を除く旧名称を棚卸しし、公開名称、互換 identifier、歴史的記録のいずれかへ分類する。
- build/test と distribution 検証を完了し、PR に baseline と変更後結果を記録する。
- merge 後、通常の Release 承認手順で新名称の成果物を公開し、下流が固定できる exact tag を記録する。
対応範囲
- Maven metadata と build output name
- assembly descriptor と配布 archive 内の filename/documentation
- CLI の product name、help、version 表示
- README、docs、GitHub Actions、Release asset、repository URL
- upstream repository の canonical URL と追従手順
- 新名称を前提にした test assertion と fixture
旧名称の棚卸しには、少なくとも次と同等の検索を使用する。
rg -n --hidden -g '!vendor/**' -g '!target/**' -g '!.git/**' 'mikuproject|mikuproject-java' .
検索結果を無条件に置換せず、維持する identifier は理由とともに PR 本文へ列挙する。vendor/ 内は upstream snapshot として別に確認し、本 Issue の一括置換対象にしない。
検証
mvn test
mvn package
java -jar target/miku-project.jar --version
unzip -l target/miku-project-dist.zip
あわせて次を確認する。
--version と help が miku-project を canonical name として表示する
- distribution ZIP に
miku-project.jar、miku-project-sources.jar、README、LICENSE、runtime documentation が含まれる
- Release workflow が
miku-project-<version>.jar と miku-project-sources-<version>.jar を生成・検証する
- Java package と main class を維持した状態で既存 test が通る
- 管理中の URL が旧 GitHub redirect に依存していない
- 旧名称の残存が、互換 identifier、内部 path、歴史的記録として説明されている
中断条件
- baseline build/test が失敗する
- rename 対象 repository、default branch、exact HEAD を確定できない
- Maven artifact、Java package、vendor subtree のどれを変更するかが名称表と矛盾する
- GitHub rename 後に新 URL で fetch/push できない
- 新旧成果物の対応を検証できない
中断時は次の repository へ進めず、GitHub repository 名を戻す必要がある場合も人間が判断・実施する。履歴の書き換えや強制 push は行わない。
完了条件
- GitHub repository が
igapyon/miku-project-java になっている
- Maven metadata、JAR、sources JAR、distribution ZIP、CLI 表示が名称表どおりである
- README、docs、Actions、Release 設定、管理中 URL が新名称へ整合している
- Java package、main class、vendor directory の維持理由が文書化されている
- baseline と変更後の exact SHA、upstream ref、検証結果が PR に残っている
- build、test、CLI smoke、distribution 内容確認が成功している
- 下流が参照できる新名称の exact Release tag が確定している
非対象
- Java package、class 名、vendor subtree directory の移行
- WBS、MS Project XML、帳票、AI JSON などの機能変更
- upstream 実装との差分解消
- Git 履歴の作り直し
- 過去の Release、Issue、記事にある歴史的名称の一括置換
背景
igapyon/miku-project#123で、製品ファミリーの canonical name をmikuproject系からmiku-project系へ移行する方針を定めた。このリポジトリは現在、GitHub repository
igapyon/mikuproject-java、MavenartifactIdと build final namemikuproject、成果物mikuproject.jar、Java packagejp.igapyon.mikuproject、upstream 参照 directoryvendor/mikuproject/を使用している。公開名称と内部 identifier を一括置換すると、Java 利用者の互換性と upstream 追従履歴を同時に壊す可能性がある。本 Issue では、公開される repository・Maven metadata・成果物・CLI 表示・参照 URL を
miku-project系へ移行し、Java package、class 名、vendor directory は互換性を優先して第一段階では維持する。Refs igapyon/miku-project#123
目的
igapyon/miku-project-javaへ変更するmiku-project系へ揃える名称と互換境界
igapyon/mikuproject-javaigapyon/miku-project-javamikuproject-javamiku-project-javaartifactIdmikuprojectmiku-projectmikuprojectmiku-projectmikuproject.jarmiku-project.jarmikuproject-sources.jarmiku-project-sources.jarmikuproject-dist.zipmiku-project-dist.zipmikuprojectmiku-project--version、help、診断を更新するjp.igapyon.mikuprojectjp.igapyon.mikuproject.cli.MikuprojectClivendor/mikuproject/jp.igapyon.mikuproject、MikuprojectCli、vendor/mikuproject/の変更が必要になった場合は、本 Issue に混在させず、互換性と移行方法を定めた別 Issue で扱う。実施前に固定する情報
作業開始時に、Issue コメントまたは PR 本文へ次を記録する。
miku-projectの exact tag または commit SHAvendor/mikuproject/が指す upstream commitmvn testとmvn packageの結果java -jar target/mikuproject.jar --versionの結果latest、可変 branch 名、GitHub redirect だけを再現条件に使用しない。実施手順
igapyon/mikuproject-javaをigapyon/miku-project-javaへ rename する。originを新 URL へ変更し、fetch/push の参照先がigapyon/miku-project-javaであることを確認する。redirect のまま作業を続けない。pom.xmlのartifactId、name、description、url、finalNameと配布 ZIP 設定を名称表へ揃える。--version、help、診断、配布文書に現れる製品表示をmiku-projectへ更新する。vendor/を除く旧名称を棚卸しし、公開名称、互換 identifier、歴史的記録のいずれかへ分類する。対応範囲
旧名称の棚卸しには、少なくとも次と同等の検索を使用する。
検索結果を無条件に置換せず、維持する identifier は理由とともに PR 本文へ列挙する。
vendor/内は upstream snapshot として別に確認し、本 Issue の一括置換対象にしない。検証
mvn test mvn package java -jar target/miku-project.jar --version unzip -l target/miku-project-dist.zipあわせて次を確認する。
--versionと help がmiku-projectを canonical name として表示するmiku-project.jar、miku-project-sources.jar、README、LICENSE、runtime documentation が含まれるmiku-project-<version>.jarとmiku-project-sources-<version>.jarを生成・検証する中断条件
中断時は次の repository へ進めず、GitHub repository 名を戻す必要がある場合も人間が判断・実施する。履歴の書き換えや強制 push は行わない。
完了条件
igapyon/miku-project-javaになっている非対象