読者です 読者をやめる 読者になる 読者になる

ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

diff-so-fancyのリポジトリをforkしてみた

GitHub Git Programming TIL shell

diff-so-fancy

f:id:mczh:20160301233924j:plain Photo by Benjamin Faust | Unsplash / CC BY 0

github.com

こっちが元のリポジトリ

GitHub - so-fancy/diff-so-fancy: Good-lookin' diffs with diff-highlight and more

git diff を見やすくするシェルスクリプトだ。便利そうなので導入してみたが、試してみるとなにやらエラーを吐いている。

ソースを見てみると、sedを使って文字列置換をしていた。拡張正規表現を使っていて、そのためにsedの引数に-Eを渡している。

たとえば、

 $SED -E "s/@@$reset_color $reset_color(.*$)/@@ $dim_magenta\1/g"

など。

しかし、私の環境だと、sedのバージョンが古くて-Eに対応していなかった。CentOS6.xなのだが、7系はどうも対応しているようだ。

sedについて調べてみると、どうやら-rを引数指定することで、拡張正規表現を使えるらしいので、全部rに変更してみた。

どうやら動いているようなので、forkしてブランチを切って変更をpushした。

これがそのコミット。 github.com

しかし、単純に変更したソースをforkして使っていると、せっかく本家が更新しても追従出来ない。本家からpullして、自分の変更とマージしながら進めていく方法については、また違う機会に書く。

拡張正規表現とは?

拡張というと、なにやら盛りだくさんなのかと思ったが、単純に特定文字のエスケープを書かなくてよい、ということだけらしい。具体的には、「+」「?」「{」「}」「(」「)」「|」の7つである。

sed/grepコマンドの正規表現 - Miuran Business Systems

上に書いた拡張正規表現は、正規表現にすると、

 $SED "s/@@$reset_color $reset_color\(.*$\)/@@ $dim_magenta\1/g"

となる、のだろうか?試してはいない。

積んでる宿題

  • gruntについて調べる
  • NULLの定義を調べる
  • forkしたブランチと本流のマージ処理