diff options
Diffstat (limited to 'server/mkrepo')
-rwxr-xr-x | server/mkrepo | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/server/mkrepo b/server/mkrepo index f372d2e..82eaa4a 100755 --- a/server/mkrepo +++ b/server/mkrepo @@ -2,34 +2,33 @@ # Create remote git repository (on the server). You must run this script from # the "repositories root" (e.g., /var/scm) where you want the repository to be -# created. If the repository is public, also add it to the manifest file (used -# for mirroring). -# -# Usage: mkrepo [<options>] <name> +# created (including any subdirectories). If the repository is public, also +# add it to the manifest file (used for mirroring). # # --private # make the repository private # # Note: <name> is without the .git suffix. # -trap 'exit 1' ERR +usage="usage: $0 [--private] <name>" + +owd="$(pwd)" +trap "{ cd '$owd'; exit 1; }" ERR +set -o errtrace # Trap in functions. -function error () -{ - echo "$*" 1>&2 -} +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } -public=y +public="y" -while [ $# -gt 0 ]; do - case $1 in +while [ "$#" -gt "0" ]; do + case "$1" in --private) - public=n + public="n" shift ;; -*) error "unknown option: $1" - exit 1 ;; *) break @@ -37,36 +36,35 @@ while [ $# -gt 0 ]; do esac done -if [ "$1" = "" ]; then +if [ -z "$1" ]; then error "repository name expected" - exit 1 fi -r=$1 -if [ `basename $1` = `basename --suffix=.git $1` ]; then +r="$1" +if [ "$(basename "$1")" = "$(basename --suffix=.git "$1")" ]; then r="$r.git" fi -mkdir -p $r -chgrp scm $r -git --bare init --shared=all $r -error "Enter project description (one line; or edit $r/descrition later)" -error "Hit Ctrl-D when done" -cat >$r/description -chgrp -R scm $r +mkdir -p "$r" +chgrp scm "$r" +git --bare init --shared=all "$r" +info "Enter project description (one line; or edit $r/descrition later)" +info "Hit Ctrl-D when done" +cat >"$r/description" +chgrp -R scm "$r" if [ "$public" = "y" ]; then - f=$r/git-daemon-export-ok - touch $f - chgrp scm $f - chmod g+w $f + f="$r/git-daemon-export-ok" + touch "$f" + chgrp scm "$f" + chmod g+w "$f" else # Disable raw HTTP access to this directory. # - echo "deny from all" >$r/.htaccess + echo "deny from all" >"$r/.htaccess" fi -mv $r/hooks/post-update.sample $r/hooks/post-update +mv "$r/hooks/post-update.sample" "$r/hooks/post-update" if [ "$public" = "y" ]; then echo "$r" >>manifest |