24995


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

[code]

    # 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 に定義される
    
[/code]

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

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

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


CC BY-SA 3.0
2016-05-19T07:54:16.453
24991
2016-05-19T12:03:51.193
2016-05-19T10:28:08.157
754
754
question
git
git submodule init で、 dir/ と dir で挙動が違うのはなぜ？


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

[submodule helper list: respect correct path prefix ·
git/git@2b56bb7](https://github.com/git/git/commit/2b56bb7a87ab429c225f6325f2870cbeac0d19f9)

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


CC BY-SA 3.0
2016-05-19T12:03:51.193
24995
2016-05-19T12:03:51.193
8000
24991
answer