jobs/clone.sh: Remove now-unnecessary indirection
[girocco/mytab.git] / jobs / clone.sh
blobe9f5b96f5f098454d5d515b074f3b12efcc9ae34
1 #!/bin/bash
3 . shlib.sh
5 set -e
7 proj="$1"
9 bang_action="clone"
10 bang_trap() {
11 # This removes any remnants from /srv/git/$proj.git _and_ gets rid
12 # of the group record.
13 perl -I/home/repo/repomgr/cgi -MGirocco::Project -e 'Girocco::Project->ghost('"'$proj'"')->delete;'
14 cd "$queuedir" && rm -rf "$proj"/* && rmdir -p "$proj"
17 queuedir=$(pwd)
19 cd "$proj"
21 url="$(cat base_url)"
22 mail="$(cat owner)"
24 ref=()
25 if [ -s objects/info/alternates ]; then
26 ref=(--reference "$(cat objects/info/alternates | sed 's#/objects$##')")
28 bang git clone "${ref[@]}" --bare "$url" repodir
29 ! [ -d /srv/git/"$proj".git ]
30 lproj="$(echo "$proj" | sed 's/^\(.*\/\)\(.*\)/\1/')"
31 if [ z"$lproj" != z"$proj" ]; then
32 bang mkdir -m 0775 -p /srv/git/"$lproj"
34 bang mv repodir /srv/git/"$proj".git
35 bang chmod g+w base_url owner description homepage README.html
36 bang mv base_url owner description homepage README.html /srv/git/"$proj".git/
37 #bang mv objects/info/alternates /srv/git/"$proj".git/objects/info/alternates # git clone should've set up that for us
38 bang git --git-dir=/srv/git/"$proj".git config --bool --add mirror.allowed true
39 bang git --git-dir=/srv/git/"$proj".git update-server-info
40 cd "$queuedir" && rm -rf "$proj"/* && rmdir -p "$proj"
41 # NO bang AT THIS POINT! rm -r depends on cwd.
42 mail -s "[repo.or.cz] $proj clone completed" "$mail",pasky@ucw.cz <<EOT
43 Congratulations! The clone of project $proj just completed. You can now adjust
44 the project settings at
46 http://repo.or.cz/m/editproj.cgi?name=$proj
48 Then check out the cool stuff at http://repo.or.cz/w/$proj.git !
49 EOT