読者です 読者をやめる 読者になる 読者になる

GitHub for Mac と Git コマンドで .gitignore の挙動が異なる件について (聞いてみた)

Git は、1.8.4 から .gitignore に /**/ のようなパターンを書けるようになっています (正式にサポートされたようです)。

Uses of the platform fnmatch(3) function (many places in the code,
matching pathspec, .gitignore and .gitattributes to name a few)
have been replaced with wildmatch, allowing "foo/**/bar" that would
match foo/bar, foo/a/bar, foo/a/b/bar, etc.

https://github.com/git/git/blob/maint/Documentation/RelNotes/1.8.4.txt

foo/**/bar は、

  • foo/bar (←注目)
  • foo/a/bar
  • foo/a/b/bar

にマッチします。
/**/ の部分が無い場合 (foo 直下に bar がある場合) にもマッチする仕様です。

ところが GitHub for Mac (2014/04/22 リリース版 Your Hogward Eyes) だと、

  • foo/a/bar
  • foo/a/b/bar

にしかマッチしません。GitHub for Mac にバンドルされている git コマンドのバージョンは、

$ /Applications/GitHub.app/Contents/Resources/git/bin/git --version
git version 1.8.4

で 1.8.4 と互換性がありそうなのですが…。

issue トラッカーがないので、メールフォームで聞いてみたところ、内部で使っている libgit2 が未対応とのことでした。

そのうち直りそう。