aboutsummaryrefslogtreecommitdiff
path: root/git/git-s
diff options
context:
space:
mode:
Diffstat (limited to 'git/git-s')
-rwxr-xr-xgit/git-s20
1 files changed, 20 insertions, 0 deletions
diff --git a/git/git-s b/git/git-s
new file mode 100755
index 0000000..faf55ff
--- /dev/null
+++ b/git/git-s
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# git-s -- selection-friendly git-status
+
+git status -s | perl -ne '
+ push @{$x{$1}}, $2 if /^(.). (.*)/;
+ push @{$y{$1}}, $2 if /^.(.) (.*)/;
+ END {
+ delete $x{"?"}; delete $x{" "}; delete $y{" "};
+ for (["index" => \%x], ["tree" => \%y]) {
+ ($n, $h) = @$_;
+ print "$n:" if values %$h;
+ for (sort keys %$h) {
+ print " $_ ";
+ print " $_" for @{$h->{$_}};
+ print "\n";
+ }
+ }
+ }
+'