diff options
author | Ben Sima <ben@bsima.me> | 2022-09-02 09:59:02 -0400 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2022-09-02 09:59:02 -0400 |
commit | dd26430e414ec120d1aa6dd528724db16a347a89 (patch) | |
tree | f8b43a6fea94a2cdbe8170ef4f3b178a60f7f30f | |
parent | bae5f8f7c6d72e25a0598da2f82f8ea1f10d8987 (diff) |
add gitlab clone
-rwxr-xr-x | glclone | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -e +usage () { + printf "usage: $(basename $0) <owner>[/]<repo>\n" >&2 + exit 1 +} +already_exists () { + printf "%s\n" "$2" + exit 2 +} +root=${GITLAB_ROOT:-"$HOME/src"} +owner="$1" +repo="$2" +[ -z "$owner" ] && usage +if [ -z "$repo" ]; then + IFS='/' read -ra parsed <<< "$owner" + owner="${parsed[0]}" + repo="${parsed[1]}" + if [ -z "$owner" ] || [ -z "$repo" ]; then + usage + fi +fi +dest="$root/$owner" +dir="$dest/$repo" +[ -d "$dir" ] && already_exists "$owner/$repo" "$dir" +mkdir -p "$dest" +cd "$dest" +git clone "git@gitlab.com:$owner/$repo" +git config \ + --file="$dir/.git/config" \ + --add remote.origin.fetch '+refs/pull/*/head:refs/pull/origin/*' +git config \ + --file="$dir/.git/config" \ + --add remote.origin.fetch '+refs/pull/*/merge:refs/merge/origin/*' +printf "%s\n" "$dest/$repo" |