Tech Racho エンジニアの「?」を「!」に。
  • インフラ
  • 開発

git 1.7.4.4未満だとGitLabのtree表示でエラーになることがある

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.

たとえば、こういうコミットがあったとします(上が新しい)。
1

git log --max-count=1 --follow -- README.md

というコマンドを叩いたときに、

1.7.4.4ではこの部分が検索されます。最初にパスでフィルタして、その中でmax-count件分を取得します。
3

1.7.4.3ではこの部分が検索されます。最初にmax-countの分探索して、その結果をパスでフィルタします。
何も取得できませんね!
2

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以上に依存しているので、最低でもそれ以上にしておいた方が良いです。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。