From 28d9eb606251f46e6561456dad9b8b28993bc2f4 Mon Sep 17 00:00:00 2001 From: Oshgnacknak Date: Sun, 25 Oct 2020 13:12:56 +0100 Subject: [PATCH] Initial Commit --- README | 4 ++ build.sh | 43 ++++++++++++++++++++ logo.png | Bin 0 -> 10200 bytes new-repo.sh | 21 ++++++++++ post-receive.sh | 3 ++ style.css | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 177 insertions(+) create mode 100644 README create mode 100755 build.sh create mode 100755 logo.png create mode 100755 new-repo.sh create mode 100755 post-receive.sh create mode 100755 style.css diff --git a/README b/README new file mode 100644 index 0000000..0663733 --- /dev/null +++ b/README @@ -0,0 +1,4 @@ +oshgit +====== + +Shell scripts based on stagit to manage OSHs git repositories. diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..168ae28 --- /dev/null +++ b/build.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# - Makes index for repositories in a single directory. +# - Makes static pages for each repository directory. +# +# NOTE, things to do manually (once) before running this script: +# - copy style.css, logo.png and favicon.png manually, a style.css example +# is included. +# +# - write clone url, for example "git://git.codemadness.org/dir" to the "url" +# file for each repo. +# - write owner of repo to the "owner" file. +# - write description in "description" file. + +here=$(realpath $(dirname $0)) +repos=$(realpath $here)/../*.git/ +output=/var/www/html + +echo Building repository list to $output +stagit-index $repos > $output/index.html +cp $here/style.css $output/style.css +cp $here/logo.png $output/logo.png +ln -sf $output/logo.png $output/favicon.png + +for repo in ${@:-$repos}; do + dir="$output/$(basename $repo .git)" + repo=$(realpath $repo) + + mkdir -p $dir + pushd $dir + + echo Building html for $repo to $dir + stagit -c ".cache" $repo + + ln -sf log.html index.html + ln -sf $output/style.css style.css + ln -sf $output/logo.png logo.png + ln -sf $output/logo.png favicon.png + + popd +done + +chgrp www-data $output -R +chmod 770 $output -R diff --git a/logo.png b/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..23c145bac785511f86f3536d3efa7d7dd102e2ff GIT binary patch literal 10200 zcmeHtcU03$w|3}75D-KZkO0!8C80-ZC<1~YAXR~o1PCpVgbs=nL5lQ9mEJ{^qSBjy zh|+r#DIzGK6afLb0X^q=}>XiYM-KOtj);5 zMNVnIjWu=6udwG+*}EKtujkh?Zd=Xni7!qq1}+-SDAY9!?>8KNs`IDxs&`k+%b+aY z@Q3gFWVLPYY)vSyB?s~JFK(SLtf!*=;odw=wmDM%aMEGdn+DO?v9Ttxwe@akW^r%c zTSny>glmnEQ$PHsl@yla59u}$h1-#GcUjD@azkpTEu`;<%S^THf5R%>-o3EK z?xC3R`F5JX*VQwh2e(7Ml+N#N{OH&qG*FiJq%?f^+BlEAZTn+k-wE?s$x5zR=|@Jz zvfN%(&3TECo;7uU(S=*H4Js5Z{uhTLEL zvDcuN8q9X^t*upRt$<-0N#7=;q*Z%O)Y8L`M)Z+>(I9#7or)jK5mV@ibQfsJo4QDg zdT`Rs!UHbxZ5f#iUYit!t$5+tbZtHhZvm+(^4s+dheeO?(DFlWu)UBw zb;(jS5~+k2nuJlg=+rgJ+M?>Ifa*Hw)a|6Fy~-&bh)fvPiQ8T%H^{vD(dJ7gDIv~^ zdeS@8yQNMWfk=GX^U`E}V#0>bsVP(KUVt3}t}r6)l%}Tp!8%=77=DK(elN~e zr@FdrA;!$*Lvp3uOH&3K(cVON6r>?rL_K2hgPenkP>kbvm>AfQ_M{E2TB77s%7)*X1tn zOK9i4SM89&o&+AD(H&#g%P1*;WWIWndZQ{{B+*)HY4+LH=LNI&lm2w?mIQJ@@2w#( zF40oIc9XVs4jgcquKK1gO?a~zO>@igOJ4`li1k6tjDhJBv2MEuip!L6|KKFMFn1v- zVQ8XXfHi@}PMObfvK~efAitafbd4NdY&EhTDUPcQpQX6&e^0wK^^JY1=XG@Xt<~u& zx}+NI^oYuYv8R}Vv4{CAgYkkGy3@BLQx}Z$>CSj(s(ea1F_giQ4>&U%I~;F)(;gtW z2$m5thmTf_-y;zO!z{hUeKbfecd}kLt1jH(vt;qmn0DL8Dr1bN-f0LaQXzZ!lx*h$r;EuOOxzyEv2KoXlztsjFAV+BR+0guTk%60rR zTO65oJi9qNSZL6q#lf1H!yYI#gH=9Au9)o3E1o?*buxYQCPh;)35!N4<%{@nzv}^&(c@2| z_^Tu3H4tNb-{;FUgEVPi3C@yi&sw+(3dNxmmNvIv588{Mb>Dlut;u1u;`5|dekIm( zQq4Z*Ox9UlcIQ=k`%Hdo176;UFF0J!q(0O5jP~=987Gjv!4SiKY$cT#25cDF%=pKGD>>y8WJ7cTphx!rVhOKUM6Ys6+|)0#9J-KW zBX#!U8GWI~4nqu(x(5e{=~=h0ke~KZmYZpAK2v1#&AB+&&saDhhCv|zoN~59$V0=4 z_7j;qSN$E+!ZXoYnk8=n zZckDu-mBBMXeml~N&>2y*Eg}kXNkNj=OJ&&`S_8m`Z-~8JU7TTKty-Tve|3lj-<7F zpQ{GR2r~Uv!MGKF_77omA&nbz-|A=W6Q%*^;IoA^+1j{IV--92K@#+8<%YnBoNx%` z77_?c4`z?|oCO$6rcqslorf?bUdR|%dlk!9#PG<}zT@RkFH`DwXSSrK&rwc=mei~o zaA@L*bAim|lHU=`Xo-HcvSe9Vchow?_!sh$6MVE0%oNp^*OYZOsxGYxNK?PObz~|w9?2GEc(vaCWb;#4{g6fMs0V4cEsK7+gjT1LAsMGB- z)~^PXYz2DNam+Aoz3O_Z?@I|-GIsXbdXkD79#MBD&1#Ft5r5xeT7IXCjimcbT=+iX z2HW&zthOGNZ?Cv&Gpt%6AwU^m-0CVprb`f&dLJPDWSlqJp*+TkQ82kcA5eYC=@g-L zGb)xMRcPZ|f1jU46_xSF`UEnJ4pYS@{rI)>FW717#6}LP{Phcj7SBA+)j7%7+CR_c z*XY6S#7&~gn&o9qraXVbd(oR?LdrKXxAbj|i=ygH^GcFi`jUMn*TQ+O;e{6FgqJnc z=4sq7INezBfa>qXBv@HAC%i8S+qqucEm4)Ta1+phx=9av%c98s`FeCIM%69-;W&?w z`^xI|?8gENRzC<+q%3cno?SSwF#?<)Q=!zf%+Og-t7>oOATih8jXTVZ;9)<-$HaEI zL_MBiy~cHawoe_;#(iZy)Y+n4P6?VuJNZntbdx_QueeohKg(okBl(T_ z6F@>UKk6|DdyDq-jaYWAW#?hn;m{8ilVbd?nG!KDvvYSuCtpmMO6&BdCz3Ag489-S zNY<>c6t?*Ms)@RRU+t*M{c4xM=#4AW0-y7(UE#zg7 zHsAalnO}1bY(Tf;#;9E|6*HyYOBj`~+ow>aDb=*eoJ8DqB zQEjGR!}-pj(~|d?0aC_9MMHxy(X3Om%FNY$B1m8e_3j!)Vdkyes}>_e*KWwYj8lk* z+azi}*BVI<+E*$s_9}?#;rL#qJbH2bO#H%NdYmDdpsiXQ;k;f(+Z#G5f+cVNnmQ7C zxepTySwk{>{7{gF)BoCWaHbt*Wx)*c^92A%LeQ$J`dX^0f80cf_m4FHSOv{iWsWv0 zi#&siw8nz7F^t#HFP^Z#aTPEq->uP}0#JoExyF`{$WKoVO;0r1r5qdp zVwtcN8%)vD002V-ns_xd)zyI_FwSCdB*q3M=H={4ygC8^@=9K=aD*cY541tqpS^*7=m|H;4#(J2dZMQD4?X6q!>t4-3#pj;ZdXo%43nXPy;oMUlhca z0*^f&?+O(c_w@7>^OO+7VC}@ga&mIwAc!~wB1%Mv;=En(a4%689PbguPYyK{4uM6x z;?Wov;1MU>2IG!b;Nc;T1AmbdM-l2?#Liz1j@rlcI6P8Zi`bAP&W8vPhk!t`q9BMU zL{9v7d*Z0B?w{5!xL+y~^%VDlyNZLwK;q8Mf3v{h)jj_5_b)AQM#LMsxB&`>amON1 z>K-T;Jn!#LU7g%PbsWpFu23}$ z!u`mpmYM?3QM^zj27yLGk3WJClCrX31Xxr?#s)4b36YW#wUL$uiOR|#WWX|V5QwY< z@;53i7aSh$f@3m3MpeFBP)uOfyjzVO4~?@!ci!MD3KYC1QXe%z!JYv z=wZ>sod9?GJ*p!rB#{bfV+)sqfF(rbAT~0hl5)goWQhqXia^=e*hostNrMoOW2&Qd zfU4+gDeyqVK!5e$WKp51XP2_2qz{R+8J(#5_fg6J2p957ASEtL}B4adxOY)+)tbf zR27SY<1ttx48}=;=O|X-5#{lg0?Pl|EKnT`;@I#Qj6xpmw_iIB2DcMGZpw@QJMe#F zGPK8dy8OTK{004!MForZ#9$ruuzEHQCh;sYc`dN^i(8p2%fyYGv3P=2u9|!k9{mfOOjz5PG_HY+F6tUX=+G>CF zqyI%3OT(q)kSGa+sHBV}F^y%UAfmDo2x6(SwUq$NAW_m_>7NVyCp!*fi}!?MQ7U%C z93ZYUacdo~Gf?n2`-G0u;ZL-uJ&Kqk!XO9~1mgL*yg+&Jqk{U!^yH69j;=2BcLC&& zN)lA-DDw>6U0t2fDD2;b`6E&OFSy_Ae?59M#N$!?&-3wDS`bD4-~9WPZvUGufWUv8{73r! zBiBE2{YMJ?N8o?5>mRxPBL)5=@ITr0|4lC1zi!wl7vh7SC-MILz0VazynEBQYMS8y z05RU97l~J%k_WMq3a_QBPBl-^8E)Ek?4 zns|zOzHgqDPwRLWdmo=0r1)clD=&c!5gar8J&{Z~g@0vW0NqG$#u0Ky)rdett}Jx6 zXU?XxVDc)s=fUf@rEg(H_ZeH*t_WGF#2B9oV1&snnmgtt41Yg;4pA4G{UEew{BkIS zw)kPav1O6Ud@~GwaJ=$6)z^1ENd-e&94ac9jeph0RkBNwGWo&qPcEw z?4&zlKukHs?)~S#EtY)3+^F|nyiCdWc*TL6lec}y!TZ)VFTx0zK8eRlV4mYlhJtz@Xs*Z^IW z>-S|wg}t2yphE?;gQ9PwSlM132TkOLrZuEi5#- zolLdEcm3Ra@Yv~d% z=2kr}|BZ^N3D0St3JEqwm_nJzOGpGlyGW(;{d;aHFUIabU<|BxYU(BcpuD)UdS%4_ z@SARmx;BzV`n-}-_hP-(w7-&WT$IDgaALYy-2SJ&9FTc~lV{m8^F6B2ps#A5Zt^)tYT`KI*c3 z-@P#M;*&W!uA~0xSU-&O>W2}`WagWuFu}ZBmcepMXT9pj6_N3t&!unNeLPj8`+_;7 z;!G3(DZ$@V9TCdJUIkF&4Xlx?ws71IRKAW?|BAXQe{JpB~NG!4$wx zj!7tufczPf0idFchIypNt}!0JVW+% zMCr7>lwstlfSkop?}@Me(QGX6G*r>2QF25$m=&h4T?Ko)Wm{sP8H%th-m9)djL~HV zd}Zsen>H;Oak<&3!m*9SU_5K3uFQ7Mw7m6hw$Y-$D-xQVKX)3GMa}fiJ^7ViGoD5_FcF<++G$ z3cjLKq(J{7Tsx24VUa4R`?dIhd9{4R2WlpOlPmA=#}DaKAUbD(2VE0F24_|Eg{leH z9}iPAp0(3{rSVkKVl2!+TZrF?_sNT7rVp(0S&XEbA=Y=Dt;2_GEV1jbi^`+IiA>h5 zAkKEDKz9xt`Sr%6ikqcd5v>S0tCownLbtlx0jHAl&XV*(TB+$-yF%?$y!{1kidIOr z1D>sjJU9W>swiH<7A3H_bSufp^=!AxsbXF{))L}R0`f>aW&6gLzr8wzc*dKvi)THh zQCG#^PR`v+Ens$$GQCoDBZ^pe;i+jh{!g~ancIt+N#2XRoz$M1_Sq2Zk28p(wvJ?! zqI=w*dx=9^hc9r;p~|#qzPRd}H8mT&{SK(KxyqSYSolFs(&7zI=(2+MCZBzjXxIG@ zCyH`mnS=oX?_&L&cjX{}7Q|T0q_$z^hREr2Fr(ybkR{dMin4ub+|_RiR1OBTCxMUU!hRcq5RWW87D?zvCQqtw@T8obh!+IN|Ge4dM9Y z9&d~!R(L@+zDk3ajp0Cpj5m(fO_7cDxft_9i$|xJA%I*a#=y=Y8PA$@2^Ypj)4rsh z>@WySH$poqH#^~@h3SXfLyUR%ET&yA*)q|i;3b}mnN`D3UBgnNi&8S5uVD6p1JsNu zmt$9I^fDBbWJfd9`|3ONzMVYT!=FS?mge1y_7mpwu^d5)8iiI zjO(I|Tydy2E7S`s#Va2xC03?N|YfR|Joxm$O_u;WDPmC~Y4 z(T)b+t-H<>Qwuz_1r--)pYWI$dm}+Lr?Q9bO(!>Rq=Ges(kXN7eD%bj;*@8ceddO1 zll7Cy0g@S41HXnbwr;PR)97fq`_>-Ht80~epg+~Wm(B7y7o1cf)gkgIPLrQUH^yWp z%`q?4(Xqqsrgm6=3cLK3a>=)@7ZVK3g@-=Xacp(da8tj}HfcH+)W3iYIep+NpPw`s zek)|1kUjz7sMMy~KtH{43TFE7OqsFyr?($!;?Qv~%fucSoyyH__F^lWHIt<%rO9KP z!=E;JeHy^XW2oukV&!oAa8Q%=C9c&K2D0v^>-vIyj7m9?r%foWB50fE@4nYteYV%y z>{WiFlr=&wCry%l>w;DYWAZCm8ODGNPtRx1a#;*sn}Mo0I%YobP|Np7;9L^;!mWeY z2d&?@9SC1?5eo%3C-4NnXa>U`ysLRu $dir/owner + echo $url > $dir/url + ${EDITOR:-vi} $dir/description + ln -sr post-receive.sh $dir/hooks/post-receive + + ./build.sh $dir + echo "Clone: $url" +done diff --git a/post-receive.sh b/post-receive.sh new file mode 100755 index 0000000..ef8e72b --- /dev/null +++ b/post-receive.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +../oshgit/build.sh $PWD diff --git a/style.css b/style.css new file mode 100755 index 0000000..d1cd6d3 --- /dev/null +++ b/style.css @@ -0,0 +1,106 @@ +body { + color: #000; + background-color: #fff; + font-family: monospace; +} + +h1, h2, h3, h4, h5, h6 { + font-size: 1em; + margin: 0; +} + +img, h1, h2 { + vertical-align: middle; +} + +img { + border: 0; +} + +a:target { + background-color: #ccc; +} + +a.d, +a.h, +a.i, +a.line { + text-decoration: none; +} + +#blob a { + color: #777; +} + +#blob a:hover { + color: blue; + text-decoration: none; +} + +table thead td { + font-weight: bold; +} + +table td { + padding: 0 0.4em; +} + +#content table td { + vertical-align: top; + white-space: nowrap; +} + +#branches tr:hover td, +#tags tr:hover td, +#index tr:hover td, +#log tr:hover td, +#files tr:hover td { + background-color: #eee; +} + +#index tr td:nth-child(2), +#tags tr td:nth-child(3), +#branches tr td:nth-child(3), +#log tr td:nth-child(2) { + white-space: normal; +} + +td.num { + text-align: right; +} + +.desc { + color: #777; +} + +hr { + border: 0; + border-top: 1px solid #777; + height: 1px; +} + +pre { + font-family: monospace; +} + +pre a.h { + color: #00a; +} + +.A, +span.i, +pre a.i { + color: #070; +} + +.D, +span.d, +pre a.d { + color: #e00; +} + +pre a.h:hover, +pre a.i:hover, +pre a.d:hover { + text-decoration: none; +}