]> ToastFreeware Gitweb - gregoa/movein.git/blobdiff - movein
* add new CREATE_REMOTE option for github users
[gregoa/movein.git] / movein
diff --git a/movein b/movein
index d2013da5db48de9b63500ca3b821de9c30707b73..5da747edeeb69f60c05c1f490470bea2f905de2a 100755 (executable)
--- a/movein
+++ b/movein
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # Copyright © 2008 Mike O'Connor <stew@vireo.org>
 #
@@ -80,11 +80,12 @@ EOF
 
 [ $# -ge 1 ] || usage
 
-GIT_HOST=git.$(hostname -d)
+GIT_HOST=git.$(hostname -d || echo "example.com")
 REMOTE_REPOS=~/git
 LOCAL_REPOS=~/.movein
 MRCONFIG=~/.mrconfig
 MOVEINRC=~/.moveinrc
+CREATE_REMOTE=0
 
 [ -e "$MOVEINRC" ] && . "$MOVEINRC"
 
@@ -111,6 +112,25 @@ init() {
         REMOTE_REPOS=~/git
     fi
 
+    case $GIT_HOST in
+        *github*)
+            DEFAULT_CREATE_REMOTE=0
+            CREATE_REMOTE_OPTIONS="[yN]"
+            ;;
+        *)
+            DEFAULT_CREATE_REMOTE=1
+            CREATE_REMOTE_OPTIONS="[Yn]"
+            ;;
+    esac
+
+    echo -n "should \"movein new\" run \"git init\" on the remote host? (github users should say \"no\") $CREATE_REMOTE_OPTIONS"
+    read CREATE_REMOTE_SELECTION
+    case "$CREATE_REMOTE_SELECTION" in
+        [yY]) CREATE_REMOTE=1 ;;
+        [nN]) CREATE_REMOTE=0 ;;
+        *) CREATE_REMOTE=$DEFAULT_CREATE_REMOTE
+    esac
+
     echo -n "Local repository directory? [~/.movein] "
     read LOCAL_REPOS
     if [ -z "$LOCAL_REPOS" ]; then
@@ -128,6 +148,7 @@ GIT_HOST=$GIT_HOST
 REMOTE_REPOS=$REMOTE_REPOS
 LOCAL_REPOS=$LOCAL_REPOS
 MRCONFIG=$MRCONFIG
+CREATE_REMOTE=$CREATE_REMOTE
 EOF
 
     if [ ! -d "$LOCAL_REPOS" ]; then
@@ -151,7 +172,7 @@ login() {
 
 execin() {
     local REPO
-    if [ $# -lt 1 ]; then
+    if [ $# -lt 2 ]; then
        usage
     fi
 
@@ -177,7 +198,7 @@ add() {
             echo $LOCAL_REPO already exists
             exit 1
         else
-            trap "rm -rf $LOCAL_REPO" 0
+            trap "unset GIT_DIR; unset GIT_WORK_TREE; rm -rf $LOCAL_REPO" 0
             mkdir "$LOCAL_REPO"
             export GIT_DIR="$LOCAL_REPO"
             git init --bare
@@ -207,6 +228,9 @@ listremote() {
 
 locate() {
     local REPO
+    if [ $# -ne 1 ]; then
+        usage
+    fi
     for REPO in $($0 list); do
         (cd /; $0 exec "$REPO" git ls-files | sed -nr "/$1/{s/^/$REPO:/p}")
     done
@@ -229,12 +253,14 @@ new() {
         echo $LOCAL_REPO already exists
         exit 1
     else
-        trap "rm -rf $LOCAL_REPO" 0
+        trap "unset GIT_DIR; unset GIT_WORK_TREE; rm -rf $LOCAL_REPO" 0
         mkdir -p "$LOCAL_REPO"
 
-        ssh $GIT_HOST "
-            GIT_DIR=$REMOTE_REPOS/$REPO_NAME git --bare init
-        " </dev/null
+        if [ $CREATE_REMOTE -ne 0 ]; then
+            ssh $GIT_HOST "
+                GIT_DIR=$REMOTE_REPOS/$REPO_NAME git --bare init
+            " </dev/null
+        fi
 
         export GIT_DIR="$LOCAL_REPO"
         git init --bare