Skip to content

サブモジュールのリポジトリで new fix の作業場所が .git/modules の下になる #2054

Open

Description

@takemi-ohama

何が起きるか

git のサブモジュールとして置かれたリポジトリ(例: 親 /work/with-ai-dev の下の with-bi)で、supervise.py new fix を --worktree なしで打つと、作業場所が <親>/.git/modules/.worktrees/<ブランチ> になる。メインディレクトリの .worktrees/ の下に作られない。

宣言の読み(project-decl.py check を含む)は plugins/ndf/scripts/lib/decl.py の main_dir を通り、サブモジュールでも .ndf/project.json を読める。

原因

plugins/ndf/scripts/supervise_lib/templates.py の fix_worktree が、メインディレクトリを git rev-parse --path-format=absolute --git-common-dir の親として独自に求める。サブモジュールでは common dir が <親>/.git/modules/<名前> になる。lib/slow_step.py・lib/container_reach.py・merged_lib/trash.py は共通の git ディレクトリそのものを使うため、サブモジュールでも正しい。

再現

  1. 親リポジトリにサブモジュールを置く
  2. サブモジュールの直下で、NDF の venv の python から supervise_lib.templates.fix_worktree("b") を呼ぶ

出力は <親>/.git/modules/.worktrees/b になる(期待は <親>/<サブモジュール>/.worktrees/b)。

サブモジュールの直下での git rev-parse の出力:

問い合わせ 出力
--path-format=absolute --git-common-dir <親>/.git/modules/sub
--show-superproject-working-tree <親>
--show-toplevel <親>/sub

直す場所

  • 現象レイヤー: サブモジュールで supervise.py new fix を --worktree なしで打つと、作業場所が .git/modules の下になる
  • 修正レイヤー: plugins/ndf/scripts/supervise_lib/templates.py の fix_worktree(メインディレクトリを独自に求めている)
  • 修正方針: fix_worktree を lib/decl.py の main_dir の呼び出しへ寄せる。メインディレクトリの求め方を main_dir の 1 か所にそろえる。シェルの側の plugins/ndf/scripts/lib/worktree-common.sh の _wt_resolve と plugins/ndf/scripts/hook_lib/worktree.py は既に --show-superproject-working-tree を読み、上位リポジトリを持つときは --show-toplevel をメインディレクトリとして扱っている

受け入れ条件

  • サブモジュールの直下で fix_worktree が <サブモジュールの作業ツリー>/.worktrees/<ブランチ> を返す
  • サブモジュールでない通常のリポジトリと、その linked worktree の中での結果が変わらない

由来: takemi-ohama/with-bi の #178 の振り返り

Activity

  1. added
    priority: high実害・安全機構の欠落など、優先して対応する
    on Oct 19, 2026
  2. changed the title [-]サブモジュールのリポジトリでメインディレクトリを .git/modules の下と取り違え、project-decl.py check が宣言を「無い」と返す[/-] [+]サブモジュールのリポジトリで new fix の作業場所が .git/modules の下になる[/+] on Nov 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: high実害・安全機構の欠落など、優先して対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions