#!/usr/bin/perl # git-st -- show git status (but handle binary files correctly) open $p, '-|', 'git', '-c', 'color.status=always', 'status', @ARGV or die "$!\n"; chomp($g = `git rev-parse --show-toplevel`); while (<$p>) { if (/^Changes not staged for commit:$/ .. /^$/) { if (/modified:\s+(.*\.pdf)/) { $f = "$ENV{PWD}/$1"; $f =~ s,^\Q$g\E/?,,; $f =~ s/'/'"'"'/g; `git-bdiff '$f'`; if ($?) { $mbuf .= $_; $mod = 1; } } else { $mod = 1 if not $mod and /[^t]:\s+/; $mbuf .= $_; } $buf .= $mbuf if /^$/ and $mod; } else { $buf .= $_; } } close $p; print $buf;