「Git 2.8」リリース、「CRLF」改行コードへの対応強化や細かい機能追加などを含む
オープンソースの分散型バージョン管理ソフトウェアGitの開発チームは3月28日、最新版となる「Git 2.8.0」をリリースした。Git for Windowsプロジェクトでの成果物が取り込まれているほか、細かい機能強化が多数加えられている。
Git 2.8は1月に公開されたGit 2.7に続く最新版。この間、74人の開発者から532のコミットがあったという。このうち22人は新規の貢献者とのことだ。大きな仕様変更や新機能はなく、使い勝手の向上に繋がる細かな修正がメインのリリースとなっている。
「git push」コマンドでは、「–delete」オプションと同じ挙動をする「-d」オプションが追加された。これにより、「git branch」コマンドなどと同様に「-d」オプションでリモートリポジトリ内のブランチ等の削除が可能になる。
設定関連では、プロクシに対する認証方法を設定する設定変数「http.proxyAuthMethod」やユーザー名やパスワードを求められる場合に空の文字列を自動的に送信する「http.[<URL>.]emptyAuth」、使用する公開鍵を指定する「http.[<URL>.]pinnedpubkey」、コミットに利用するユーザー名やメールアドレスの設定を強制する「user.useConfigOnly」など、いくつかの設定変数が新たに追加された。libcurlの仕様により、ユーザー名やパスワードが不要な場合でもこれらの入力を求められるケースがあるが、「http.[<URL>.]emptyAuth」の設定を行うことで、こういった場合に自動的に処理を継続できる。また、「user.useConfigOnly」変数を利用することで、リポジトリごとの設定ファイルにユーザー名やメールアドレスなどが記述されていない場合警告が表示されるようになる。複数のプロジェクトで異なるユーザー名/メールアドレスを利用している開発者に有用だという。
内部的な変更点としては、いくつかの処理を並列に実行するためのフレームワークが導入された。これにより、たとえば「git fetch –recurse-submodules」でサブモジュールのフェッチを並列実行できる。
「git config」コマンドでは、表示される設定変数毎にその設定がどこで行われているのかを表示する「–show-origin」オプションが追加された。また、コミットに注釈を付与するnotes関連機能も強化されている。
Git for Windowsプロジェクトの成果をGitプロジェクトに還元し、Windows固有の変更がGit本体に多く取り込まれた。また、テキストファイルを入力として受け付けるコマンドにおいて、入力されたテキストファイルの改行コードとしてCRLFが利用されていた場合でも、これを適切に処理できるようになった。
そのほか、「git blame」コマンドで進捗表示を行うなど、出力表示の改善も行われている。また、「git push」コマンドの実行時、「push.default」設定が行われていなかった際に表示されていた警告メッセージは本バージョンでは表示されなくなった。このメッセージはGit 2.0以降での仕様変更による挙動の違いを示すものだったが、移行期間は終了したとの判断で非表示となった。
なお、後方互換性を損なう変更点として、rsyncトランスポートのサポート廃止が挙げられている。rsyncトランスポートを使用してリファレンスがパックされているリポジトリからのクローンを行った場合に問題が発生することが判明したことが直接の原因のようだ。この問題は長期に渡って存在していたが誰も気付かず、またそれに対する不満などもなかったという。
セキュリティでは、Git 2.7.4での脆弱性(CVE-2016-2324)を修正した。この脆弱性は悪意あるレポジトリのクローニングで任意のコードを実行される危険があるという。悪用された事例は報告されていないとのことだが、アップデートが推奨されている。