Git 2.0がリリースされて2ヶ月半、Gitの新バージョンがリリースされた。これはマイナーアップデートだが、多くの新機能と改善を含んでいる。
リリースノート全文はgitリポジトリに置かれ、Git 2.1の新機能について詳しく述べられている。Git 2.1の新機能から厳選したものを以下に示す。
-
bash補完の改善
Bash補完は「複雑なコマンドシーケンスを定義したエイリアスがうまく扱えるよう」拡張された。別の言葉で言うと、たとえば、
grep
、sort
などのコマンドラインプログラムにgitコマンドの結果をパイプするようなエイリアスを定義したとき、エイリアスの自動補完はそれがオリジナルのgitコマンドであるかのように同じオプションを生成する。 -
デコレートされたログの "auto" オプション
log.decorate
設定変数がauto
を理解するようになった。この値は、出力がttyに送られるときに--decorate
オプションを自動的に有効にする。 -
マージのためのvimdiff3サポート
git mergetool
コマンドがvimdiff3バックエンドをサポートするようになった。 -
git-grep
におけるフルパス出力のサポート新しい
--full-name
オプションを使うと、現在のディレクトリに対する相対パスではなく、フルパスで結果を取得できるようになる。大事なことは、これがデフォルトの振る舞いになることだ。「git grep
は強制的に‐‐full-name
をデフォルトにするgrep.fullname
設定変数を身に付けた。これはこうした振る舞いを期待していないユーザにとって、不具合を引き起こすおそれがある」。 -
Tags ordering
Git-tag
がtag.sort
設定をサポートするようになった。これは「--sort=
オプションが指定されていないときに、デフォルトのソート順として使われる」。AtlassianのTim Pettersen氏によるBlogで、この新機能が役に立つ良い例が紹介されている。そこではtagsのバージョン番号を考慮した次のようなデフォルトソートを提案している。$ git config --global tag.sort version:refname
上記デフォルトオプションを設定することによって、
git tag
はバージョン番号でうまくソートしてくれる。sortオプションを指定してデフォルトの辞書順を上書きする必要はない。
Gitの新バージョンには、パフォーマンス改善とバグ修正を目的とした変更も複数含まれている。詳しくはリリースノートを参照してほしい。先ほどのTim Pettersen氏による記事も、「Atlassianをワクワクさせた今回のリリースの機能」と豊富な例が述べられており、読む価値があるだろう。