#!/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 ''