「Git 2.9」リリース、「git diff」や「git log」での表示変更などが行われる

 Gitプロジェクトは6月13日、分散バージョン管理システムの最新安定版「Git 2.9.0」をリリースした。git-multimailが新しくなり、サブモジュールなどでも機能が加わった。

 Git 2.9.0は3月に公開されたバージョン2.8からのアップデートとなる。

 UI、ワークフロー関連では、Gitリポジトリへのプッシュ時にメールで通知を送信する「git-multimail 1.3.1」がサポートされた。また、「git diff」や「git log」などのコマンドでファイル名のリネームをデフォルトで確認できるようになった。オプション設定によってこれを無効化することも可能。

 新たに「interactive.diffFilter」設定変数が加わった。これを利用して、「git add」コマンドでインタラクティブに変更点を追加するための「-i」オプションを使用した際のdiff表示方法をカスタマイズできる。そのほか、git tagコマンドでは明示的に「-a」や「-s」オプションを指定していない場合でも「annotated tag」を生成できるようになった。「tag.forceSignAnnotated」設定変数でこの挙動を指定できる。また、「git commit」コマンドでは「–verbose」オプションが指定されていなくとも詳細な表示を出力できるようになった。この挙動は「commit.verbose」設定変数で指定できる。

 実験的機能であるmultiple worktree機能では、チェックアウトされている、もしくは活発に作業が行われているブランチでのオペレーションができなくなった。これによって安全性を強化できるという。「git format-patch」コマンドでは新たに「–base」オプションが加わった。「git clone」コマンドでは任意の参照サブモジュールを再帰的にシャロウクローンする「−−shallow-submodules」オプションが導入されている。

 内部実装関連では、「git submodule update」で実行されている処理の多くの部分をCにポーティングした。これによって並行してダウンロードタスクを動かせるようになったという。また、MSVC向けビルドのアップデートも行われている。

 後方互換性のない変更としては、共通の祖先を持たない2つのブランチをマージすることがデフォルトではできなくなった。これによって誤ったマージ処理を防ぐことができるという。また、「git log」コマンドで表示されるコミットログメッセージではインデントが半角スペース4文字ではなくHT(水平タブ)で行われるようになった。この挙動は「–no-expand-tabs」オプションを指定することで無効化できる。そのほか、「git commit-tree」コマンドでは「commit.gpgsign」設定変数による設定を行うと常にユーザーによる署名が必要になっていた問題が修正された。

 このほかにも、たくさんの機能強化や改善が加わっている。

Git
http://git-scm.com/