#!/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 -