diff options
Diffstat (limited to 'localgit-remote-init-push')
-rwxr-xr-x | localgit-remote-init-push | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/localgit-remote-init-push b/localgit-remote-init-push index c1740ed..f770a3b 100755 --- a/localgit-remote-init-push +++ b/localgit-remote-init-push @@ -12,23 +12,26 @@ Initialize remote git, push local git, and set as default remote. PROJECT basename or relative path for remote git project - GIT_REPO hostname for public git access + GIT_REPO hostname for public git access, or absolute basepath default: "source." + current domainname SSH_CONN hostname for ssh, optionally with user + "@" prepended - default: GIT_REPO + default: GIT_REPO unless it starts with "/" GIT_REMOTE name for local repository set default: "origin" Full remote path becomes SSH_USER@SSH_HOST:BASEPATH/PROJECT.git where BASEPATH is resolved as "/srv/git/" + GIT_REPO +or simply GIT_REPO when it begins with "/". When local repository set is "origin" it is marked as default remote. Examples: $PRG myproject $PRG some/subproject git.example.org me@shell.example.org + $PRG some/subproject /private/path/on/ssh/host me.example.org backup + $PRG some/subproject /private/path/on/local/host EOF } @@ -51,13 +54,20 @@ done PROJECT=${1-$(showhelp; exit1 "project name missing")} GIT_REPO=${2:-source.$(dnsdomainname --domain)} -GIT_HOST=$GIT_REPO -BASEPATH=/srv/git/"$GIT_REPO" +case "$GIT_REPO" in + /*) + BASEPATH=$GIT_REPO + ;; + *) + GIT_HOST=$GIT_REPO + BASEPATH=/srv/git/"$GIT_REPO" + ;; +esac SSH_CONN=${3:-$GIT_HOST} GIT_REMOTE=${4:-origin} [ origin != "$GIT_ORIGIN" ] || ORIGIN_IS_DEFAULT=yes -ssh "$SSH_CONN" git init --bare --shared "$BASEPATH"/"$PROJECT".git +[ -z "$GIT_CONN" ] || ssh "$SSH_CONN" git init --bare --shared "$BASEPATH"/"$PROJECT".git git remote add "$GIT_REMOTE" "$SSH_CONN":"$BASEPATH"/"$PROJECT".git git push ${ORIGIN_IS_DEFAULT:+--set-upstream "$GIT_REMOTE"} master |