秀丸のオプションとかで勝手に消された行末スペースをGitリポジトリから探す方法。
結論
以下のonelinerで表形式の結果が取得できる。
git log -S" $" --pickaxe-regex --name-only --pretty="__NEWLINE__%h%x09%an%x09%ae%x09%s" | tr "\n" "\t" | sed 's/__NEWLINE__/\n/g'
注意:Mac OSのsedではうまく動きません。回避策は後述。
解説
step 1: git-logでログ検索
git log -S" $" --pickaxe-regex --name-only --pretty="__NEWLINE__%h%x09%an%x09%ae%x09%s"
-
-S
と--pickaxe-regex
: 文末スペースが追加・削除されたコミットを探しています。 -
--name-only
: 該当ファイルのパスを出力します。 -
--pretty
: 出力形式を指定します。後述。
出力形式の補足
__NEWLINE__
: 後で改行するための印。
%x09
: タブ文字
step 2: ひとまず1行にまとめる
tr "\n" "\t"
step 3: 印の付いたところで改行
sed 's/__NEWLINE__/\n/g'
注意:Mac OSのsedでは改行文字がうまく動きません。homebrew等でGNU sed(gsed
)を入れて使うか、\
の後に実際に改行を入力してください。
事例
githubのgithubtraining/hellogitworldで試してみる。
git clone https://github.com/githubtraining/hellogitworld
git log -S" $" --pickaxe-regex --name-only --pretty="__NEWLINE__%h%x09%an%x09%ae%x09%s" | tr "\n" "\t" | sed 's/__NEWLINE__/\n/g'
ebbbf77 Jordan McCullough jordan@github.com Update package name, directory src/test/java/com/ambientideas/AppTest.java src/test/java/com/github/AppTest.java
45a30ea Jordan McCullough jordan@github.com Update package name, directory src/main/java/com/ambientideas/App.java src/main/java/com/gith
ub/App.java
d2280d0 Matthew McCullough matthew@github.com Adding maven build script src/main/java/com/ambientideas/App.java src/test/java/com/ambientideas/AppTest.java