Skip to content

feat(plugin): 既存 plugins/ → repos/ マイグレーション (PLAN04 PR2)#30

Draft
takemi-ohama wants to merge 2 commits into
release/PLAN04from
feature/PLAN04-migration
Draft

feat(plugin): 既存 plugins/ → repos/ マイグレーション (PLAN04 PR2)#30
takemi-ohama wants to merge 2 commits into
release/PLAN04from
feature/PLAN04-migration

Conversation

@takemi-ohama
Copy link
Copy Markdown
Contributor

Summary

PR1 (#29) で repos/ 永続クローン方式に切り替えたが、PR1 以前に plugins/<name>/
ファイルコピーされた既存インストールは移行されない。本 PR でその移行ロジックを追加する。

実装内容 (予定)

  • lib/devbase/plugin/migrator.py (新規): plugins/ → repos/ 移行ロジック
    • legacy plugins/ インストールの検出
    • repos/ への永続クローン (未クローン時)
    • plugins/ とクローンの差分検出 → 差分ありは .bak 保全 + warning
    • InstalledPlugin.path の書き換え + sync_projects 再実行
    • --link が 0 件なら plugins/ を .gitkeep のみ残して削除
  • lib/devbase/commands/plugin.py + cli.py: devbase plugin migrate サブコマンド追加
  • tests/plugin/: マイグレーションテスト

Test plan

  • legacy plugins/ → repos/ 移行が正常完了
  • 移行後の projects/ シンボリックリンクが正しい
  • plugins/ にユーザー変更がある場合 → warning + .bak 保全
  • plugins/ にユーザー変更がない場合 → 削除
  • --link 残存時は plugins/ を維持 / 0 件なら .gitkeep 残して削除

takemi-ohama and others added 2 commits May 28, 2026 04:34
PLAN04 PR2。PR1 (#29) で repos/ 永続クローン方式に切り替えたが、PR1 以前に
plugins/<name>/ へファイルコピーされた既存インストールは移行されないため、その
移行ロジックを追加する。

- migrator.py (新規):
  - needs_migration / _is_legacy_plugin: legacy plugins/ インストールの検出
    (linked は --link 専用として除外)
  - _dirs_differ: コピーとクローンの差分検出 (内容変更・追加ファイルを保守的に差分扱い)
  - migrate: 未クローン repo の永続クローン作成、InstalledPlugin.path の repos/ 書き換え、
    差分なしは plugins/<name> 削除・差分ありは <name>.bak 保全、sync_projects 再実行、
    --link/.bak/skip が無ければ plugins/ を .gitkeep のみに正規化
- plugin migrate サブコマンド (cli.py / commands/plugin.py)
- install/update 初回実行時に _auto_migrate で自動移行

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant