forked from sswater/namespace-cgi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnamespace.cgi
More file actions
70 lines (55 loc) · 1.12 KB
/
namespace.cgi
File metadata and controls
70 lines (55 loc) · 1.12 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
echo "Content-Type: text/html"
echo ""
SEP="/"
# 默认 ROOT
if [[ "$GITROOT" == "" ]]; then
GITROOT=/home/git/gitroot
fi
cd $GITROOT
# 容纳所有
HEADS=()
# repo / namespace / head
for RNH in */refs/namespaces/*/refs/heads/*
do
#echo ${#HEADS[@]}
HEADS[${#HEADS[@]}]=$RNH
done
# repo / packed-refs
for RP in */packed-refs
do
# namespace / head
NHS=`cat $RP | awk '{print $2}' | grep namespaces`
#echo $NHS
for NH in $NHS
do
#echo ${RP%%$SEP*}/$NH
#echo ${#HEADS[@]}
HEADS[${#HEADS[@]}]=${RP%%$SEP*}/$NH
done
done
# 上一次NS
LASTNS=
for RNH in `echo ${HEADS[@]} | sed -e 's/ /\n/g' | sort | uniq`
do
# 物理库
REPO="${RNH%%$SEP*}"
# 逻辑库名
NS=`echo $RNH | awk -F/ '{print $4}'`
# URL访问库名(不含点)
REPONAME="${RNH%%.*}"
#echo $REPO --- $REPONAME --- $NS
if [[ "$LASTNS" != "$NS" ]]; then
if [[ "$LASTNS" != "" ]]; then
echo "<br/>"
fi
echo "ns/$REPONAME/$NS"
LASTNS=$NS
fi
# 分支名称
HEADNAME="${RNH##*$SEP}"
# 分支路径
HEADPATH="${RNH#*$SEP}"
#echo $HEADNAME --- $HEADPATH
echo "<a href='./?p=$REPO;a=shortlog;h=$HEADPATH'>$HEADNAME</a>"
done