aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgit-s20
1 files changed, 20 insertions, 0 deletions
diff --git a/git-s b/git-s
new file mode 100755
index 0000000..cc560d9
--- /dev/null
+++ b/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{"?"};
+ for ([">" => \%x], ["." => \%y]) {
+ ($n, $h) = @$_;
+ for (sort keys %$h) {
+ next if $_ eq " ";
+ print "$n$_";
+ print " $_" for @{$h->{$_}};
+ print "\n";
+ }
+ }
+ }
+'