plan9fox/sys/src/cmd/git/diff
Ori Bernstein fb2e0a1987 git/diff: clean up diffs
We were overzealous about showing the changed
header, as well as setting a junk variable for
files that didn't exist; fix both.
2021-08-23 01:22:04 +00:00

48 lines
762 B
Bash

#!/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 -d $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 '^..'
}
showed=()
mntgen /mnt/scratch
bind $branch/tree/ /mnt/scratch/a
bind . /mnt/scratch/b
for(f in `$nl{lsdirty | sort | uniq}){
if(~ $#showed 0){
echo diff `{git/query $commit} uncommitted
showed=1
}
cd /mnt/scratch
a=a/$f
b=b/$f
if(! test -f a/$f)
a=/dev/null
if(! test -f b/$f)
b=/dev/null
diff -u $a $b
}
exit ''