gitは、1.7以上になっても意外とマイナーバージョンでの仕様変更がちょくちょくあります。
今回は、1.7.4.3と1.7.4.4のお話。そんな古いバージョン使うなって話ですが、Ubuntu 10.04初期インストール時の参照パッケージは1.7.0系なので、十分引っかかることはありそうです。
1.7.4.4の変更点は、diffを見るのが一番詳しいですが、ReleaseNoteにさらっとこんなことが書いてあります。
"git log --max-count=4 -Sfoobar" now shows 4 commits that changes the
number of occurrences of string "foobar"; it used to scan only for 4
commits and then emitted only matching ones.
git log --max-count=1 --follow -- README.md
というコマンドを叩いたときに、
1.7.4.4ではこの部分が検索されます。最初にパスでフィルタして、その中でmax-count件分を取得します。
1.7.4.3ではこの部分が検索されます。最初にmax-countの分探索して、その結果をパスでフィルタします。
何も取得できませんね!
Release Noteには特に書いてないですが、followを指定しなければ、1.7.4.3でも1.7.4.4と同じ挙動をしました。
GitLab(厳密には依存gemのgitlab-grit)では、last_commitなところでこのmax-countを使用しているので、この挙動が原因でnilエラーが発生し、プロジェクトツリーに最新のコミットが表示されなくなる可能性があります。
ちなみにcheck.rakeを見る限り、現在のGitLab(5.3 master)は1.7.10以上推奨みたいです。この他にも旧バージョンは問題があるみたいですね。
結論:gitは新しくしておきましょう。
gitlab-gritの方には、READMEに取り込んでもらいました。gritは1.7.4.6以上に依存しているので、最低でもそれ以上にしておいた方が良いです。