]> git.donarmstrong.com Git - zsh.git/commitdiff
initial checkin of svngit script/function
authormartin f. krafft <madduck@madduck.net>
Sun, 1 Mar 2009 17:29:20 +0000 (18:29 +0100)
committermartin f. krafft <madduck@madduck.net>
Sun, 1 Mar 2009 17:29:20 +0000 (18:29 +0100)
Signed-off-by: martin f. krafft <madduck@madduck.net>
.zsh/func/svngit [new file with mode: 0755]

diff --git a/.zsh/func/svngit b/.zsh/func/svngit
new file mode 100755 (executable)
index 0000000..884e727
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# func/svngit
+#
+# one-time conversion of SVN repositories to Git repositories
+#
+# Copyright © 2006–2009 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: git://git.madduck.net/etc/zsh.git
+#
+
+local svnrepo dest args
+args=()
+
+for arg in "$@"; do
+  case "$arg" in
+    (svn+*|svn://|http://)
+      if [[ -z $svnrepo ]]; then
+        svnrepo="$arg"
+      else
+        echo "E: SVN repository multiply defined." >&2
+        exit 1
+      fi
+      ;;
+    (*)
+      if [[ -e $dest ]]; then
+        if [[ -d $dest ]] && [[ -z $svnrepo ]] && svn info $svnrepo >/dev/null 2>&1; then
+          svnrepo="$arg"
+        else
+          echo "E: destination $dest already exists." >&2
+          exit 1
+        fi
+      fi
+      if [[ -z $dest ]]; then
+        dest="$arg"
+      else
+        args+="$arg"
+      fi
+      ;;
+  esac
+done
+
+git svn clone --no-metadata $args "$svnrepo" "$dest"
+
+cd "$dest/.git"
+
+test -d svn && rm -r svn
+rm -rf **/git-svn*
+
+cd -