git submodule init で、 dir/ と dir で挙動が違うのはなぜ?

投稿者: Anonymous

git submodule の挙動を調べていました。 git submodule init では、ファイルパスを指定できますが、ここで

# 1: without trailing slash
git submodule init non-existing-dir
# => error: pathspec 'non-existing-dir' did not match any file(s) known to git.

# 2: with trailing slash
git submodule init non-existing-dir/
# => すべての .gitmodules で記述されている submodule が config に定義される

と実行した場合に、 init の挙動が違うことを確認しました。 (補足: non-existing-dir は存在しない適当なディレクトリ名です) 具体的には、末尾に/を付与した場合には、パスによる init の制限が効いていないような挙動をしていました。

質問: どうしてこのような挙動になるのでしょうか。

環境情報追記: git 2.7.1 です。

解決

2.7.0で発生し、2.7.3で解消された以下のバグの絡みではないでしょうか。

submodule helper list: respect correct path prefix · git/[email protected]

内容は理解しきれていませんが、このパッチを適用することで問題が解消することが確認できました。一度Git2.7.3以降に更新してみてください。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *