PHPファイルのgit-diffを見やすくする

小ネタ。

cakephpのPRをほげ〜〜〜っと眺めていたら

ということで、やってみるか!!となった次第です

cf:

試してみる内容

before

<?php declare(strict_types=1);

namespace App;

class Hoge
{
    public function __construct()
    {
        // @todo
    }

    public function __destruct()
    {
        // @todo
    }


    public function make()
    {
        // このメソッドで
        // 何かしらして
        // 良い感じに
        // 頑張ろうと
        // 思っています
        $args = func_get_args();
        file_put_contents($this->getOutputPath(), $args);
    }

    private function getOutputPath()
    {
        return __DIR__ . DIRECTORY_SEPARATOR . 'hoge_output';
    }
}

diff

25c25
<         $args = func_get_args();
---
>         $args = json_encode(func_get_args());

という感じで、Hoge::main()の6行目を修正してみます

試してみる

gitatributes設定無し

f:id:o0h:20201001103529p:plain

こんな感じで、class は分かりますが後は行数ベースで頑張る感じです

gitattributes設定あり

f:id:o0h:20201001103546p:plain

コンテキストの粒度が「メソッド main() の中である」という事を明示するようになりました! 詳細な情報がパッと見れるようになって嬉しいですね〜〜

(・・・何で拡張子.phpのファイルに対して「phpと見なして差分を扱ってください」って設定が必要なんだろ?)

これでfinalやtraitといったキーワードにも対応できるらしいです。
やっぱりgitとphpはソース読めるようになりたいな、と改めて思いました。。。