summaryrefslogtreecommitdiff
path: root/bin/extra
diff options
context:
space:
mode:
Diffstat (limited to 'bin/extra')
-rwxr-xr-xbin/extra/ginit30
1 files changed, 30 insertions, 0 deletions
diff --git a/bin/extra/ginit b/bin/extra/ginit
new file mode 100755
index 0000000..b9e44a6
--- /dev/null
+++ b/bin/extra/ginit
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# Create a clone of the current git repository on a remote
+
+# Expects the remote to have a git user 'git@remote.net'
+
+if [ -z "$1" ] ;then
+ >&2 printf 'ginit <remote>\n'
+ exit 1
+fi
+
+git_current_branch () {
+ local ref
+ ref=$(__git_prompt_git symbolic-ref --quiet HEAD 2> /dev/null)
+ local ret=$?
+ if [ "$ret" -ne 0 ]
+ then
+ [ "$ret" -eq 128 ] && return
+ ref=$(__git_prompt_git rev-parse --short HEAD 2> /dev/null) || return
+ fi
+ echo ${ref#refs/heads/}
+}
+
+remote="$1"
+name="$(basename "$(git rev-parse --show-toplevel)")"
+[ "$name" ] || exit 1
+
+ssh "git@$remote" "git init --bare $name.git"
+git remote add "$remote" "git@$remote":"$name.git"
+git push "$remote" $(git_current_branch)