blob: 80600fa7bbc9a53e3e63665d2f3dc9802d239de4 (
plain)
- #!/bin/sh
- set -eu
- PRG=$(basename "$0")
- showhelp() {
- cat <<EOF
- Usage: $PRG PROJECT [GIT_HOST [SSH_CONN]]
- Initialize remote git, push local git, and set as default remote.
- PROJECT basename or relative path for remote git project
- GIT_HOST hostname for public git access
- default: "source." + current domainname
- SSH_CONN hostname for ssh, optionally with user prepended
- default: GIT_HOST
- Full remote path becomes SSH_USER@SSH_HOST:/srv/git/GIT_HOST/PROJECT.git
- Examples:
- $PRG myproject
- $PRG some/subproject git.example.org me@shell.example.org
- EOF
- }
- exit1() {
- echo >&2 "${1:+ERROR: }${1:-Internal error!}"
- exit 1
- }
- # parse cmdline options
- TEMP="`getopt -s -s sh -o h -l help -n "$PRG" -- "$@"`" || exit1
- eval set -- "$TEMP"
- while true; do
- case "$1" in
- -h|--help) showhelp; exit;;
- --) shift; break;;
- *) exit1;;
- esac
- done
- PROJECT=${1-$(showhelp; exit1 "project name missing")}
- GIT_HOST=${2:-source.$(dnsdomainname --domain)}
- SSH_CONN=${4:+$4@}${3:-$GIT_HOST}
- ssh "$SSH_CONN" git init --bare --shared /srv/git/"$GIT_HOST"/"$PROJECT".git
- git remote add origin "$SSH_CONN":/srv/git/"$GIT_HOST"/"$PROJECT".git
- git push --set-upstream origin master
|