BT

Your opinion matters! あなたのご意見でInfoQが変わる!

Gitはバージョン2.13でセキュリティとUIの改善を続けている

| 作者: Sergio De Simone フォローする 5 人のフォロワー , 翻訳者 阪田 浩一 フォローする 0 人のフォロワー 投稿日 2017年6月16日. 推定読書時間: 3 分 |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

原文(投稿日:2017/05/15)へのリンク

Gitは最新リリースでユーザインタフェースの改善を目指した多くの変更を導入した。また2つの重要な脆弱性を修正した。

周知の通り、Gitが一意にオブジェクトを区別するために使っているSHA–1ハッシュアルゴリズムは最近衝突攻撃への脆弱性が証明されている。しかしGitのチームは新しい、より安全なハッシュアルゴリズムへの移行準備をしている。衝突を生む意図で作成されたように見えるあらゆるオブジェクトを検出し拒否する仕組みを実装している。これは衝突攻撃の恐れを効果的に軽減するだろう。

セキュリティ面では、Git 2.13はgitシェルを使うGitホスティングサーバすべてにに影響する脆弱性も修正している。これはGitのpush/pullコマンドに加え、git-shell-commandsディレクトリにインストールしたカスタムコマンドでSSHを使ったシェルアクセスに制限を与える。脆弱性は攻撃者が潜在的にリモートサーバでシェルコマンドを実行できるようにしていた。

すでに言及したように、Git 2.13は多くのUI改善を含む。とくに、複数の異なるプロジェクトに対して作業する開発者には有益であろう機能は、条件付き設定をすることで複数のアイデンティティを扱えることだ。手短に言うと、条件付き設定は一連の条件に基づいてGitの設定ファイルを含める方法を提供する。たとえば、リポジトリが存在するディレクトリパスに基いてGitの設定をカスタマイズするために~/.gitconfigファイルで以下の命令をすることができる。

[includeIf "gitdir:~/work/"]
  path = .gitconfig-work
[includeIf "gitdir:~/play/"]
  path = .gitconfig-play

とくに、これは.gitconfig-work.gitconfig-playで異なるuseremailを定義するのに使える。

ほとんどの開発者が使っていてGit 2.13で手を加えた別の機能はGitのコマンドでのパスの扱いである。すなわちpathspecsだ。たとえば、もしリポジトリであるタイプのファイルすべてでgrepを実行したいなら、こう書くだろう。

git grep my_pattern '*.c'

今、否定のpathspecsを使うこともできる。コマンドから特定のpathspecsを除外するためだ。そして属性を使うpathspecsも使える。これはpathspec定義に属性を含めることができる。たとえば次のようなものだ。

git grep text_to_search -- src ':(exclude)*.c'

その他注目すべき改善は以下だ。

  • git branchgit taggit for-each-ref--no-containsオプションをサポートする。これは指定したコミットを含んでいないタグやブランチを選択するのに使える。 たとえば次のようなものだ。
    git tag -l --no-contains cf5c725 'v[0-9]*' | sort | tail -n 10
    

    --no-containsオプションは既存の--containsとともに使うときは見逃される。たとえば2つのタグの間で作られたブランチを見つけるときなどだ。

    git branch --contains v2.8.0 --no-contains v2.10.0
    
  • git stashは現在のワーキングツリーの一部だけを退避できるようpathspecsの利用をサポートする。ゆえに退避するものをより制御できる。

  • 一連のコマンドは今サブモジュールで認識される。checkoutgrepls-filesを含む。これが意味することは、再帰的にサブモジュールを横断するだろうということだ。さらに、git status --shortはサブモジュールについてより詳細な情報を報告する。

Git 2.13で新しいことのより詳しい概説は完全なリリースノートを読んでほしい。

 
 

Rate this Article

Adoption Stage
Style
 
送信
送信

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT