-
Notifications
You must be signed in to change notification settings - Fork 7
/
log
executable file
·49 lines (43 loc) · 1.08 KB
/
log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/rc -e
rfork en
. /sys/lib/git/common.rc
gitup
flagfmt='e:expr expression, c:branch commit, s:short'; args='file ...'
eval `''{aux/getflags $*} || exec aux/usage
base=/mnt/git/object/
if(~ $#branch 0)
branch=`{git/branch}
if(~ $#expr 0)
commits=`{git/query $branch}
if not
commits=`{git/query $expr}
files=()
if(! ~ $#* 0)
files=`"{walk -f $gitrel/^$* | subst '^\./' | sort}
while(! ~ $#commits 0){
ids=$nids
show=()
c=$commits(1)
if(! ~ $#files 0){
ncomm=`{comm -12 /env/files <{git/query -c $c~ $c | subst '^..' | sort} | wc -l}
if(! ~ $ncomm 0)
show=true
}
commits=$commits(2-)
if(~ $#expr 0)
commits=($commits `{cat $base/$c/parent >[2]/dev/null})
if(! ~ $#commits 0)
commits=`$nl{walk -emp -n0 $base^$commits | sort -rn | uniq | awk -F/ '{print $NF}'}
if(~ $#files 0 || ~ $show true){
if(~ $short 1)
echo $c `{cat $base/$c/msg | sed 1q}
if not{
echo -n 'Hash: '`''{cat $base/$c/hash}
echo -n 'Author: '`''{cat $base/$c/author}
echo -n 'Date: '`''{date `{mtime $base/$c/msg | awk '{print $1}'}}
subst -g '^' ' ' <$base/$c/msg
echo
}
}
}
exit ''