diff options
-rwxr-xr-x | git-st | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -0,0 +1,31 @@ +#!/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; |