summaryrefslogtreecommitdiff
path: root/sys/src/cmd/git/diff
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2021-05-16 18:49:45 -0700
committerOri Bernstein <ori@eigenstate.org>2021-05-16 18:49:45 -0700
commit1ee1bfaa8c5644092e0c1ca3985ee74813bbfb1d (patch)
tree9be6163e8bcd0bd43b4016e2bfeb9571a548536e /sys/src/cmd/git/diff
parent013b2cad191eef50fd4e69c38f1544c5083b640d (diff)
git: got git?
Add a snapshot of git9 to 9front.
Diffstat (limited to 'sys/src/cmd/git/diff')
-rwxr-xr-xsys/src/cmd/git/diff37
1 files changed, 37 insertions, 0 deletions
diff --git a/sys/src/cmd/git/diff b/sys/src/cmd/git/diff
new file mode 100755
index 000000000..be74676d9
--- /dev/null
+++ b/sys/src/cmd/git/diff
@@ -0,0 +1,37 @@
+#!/bin/rc
+rfork ne
+. /sys/lib/git/common.rc
+
+gitup
+
+flagfmt='c:commit branch, s:summarize'; args='[file ...]'
+eval `''{aux/getflags $*} || exec aux/usage
+
+if(~ $#commit 0)
+ commit=HEAD
+
+files=()
+if(! ~ $#* 0)
+ files=`{cleanname $gitrel/$*}
+
+branch=`{git/query -p $commit}
+if(~ $summarize 1){
+ git/walk -fMAR $files
+ exit
+}
+
+fn lsdirty {
+ git/walk -c -fRMA $files
+ if(! ~ $commit HEAD)
+ git/query -c $commit HEAD | subst '^..'
+}
+
+for(f in `$nl{lsdirty | sort | uniq}){
+ orig=$branch/tree/$f
+ if(! test -f $orig)
+ orig=/dev/null
+ if(! test -f $f)
+ f=/dev/null
+ diff -u $orig $f
+}
+exit ''