added svn to git migration script, initially for sandbox

git-svn-id: https://svn.apache.org/repos/asf/maven/sandbox/trunk@1813686 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scripts/git/migrate-sandbox.sh b/scripts/git/migrate-sandbox.sh
new file mode 100755
index 0000000..20f6aca
--- /dev/null
+++ b/scripts/git/migrate-sandbox.sh
@@ -0,0 +1,71 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is used to migrate modules from SVN to Git,
+# or more precisely to split a svn2git repo to a module repo
+#!/bin/sh -e
+
+# svn2git repo to be split
+svn2git_repo='maven-sandbox'
+
+# prefix for module
+prefix='dist-tools/dist-tool-plugin/'
+repo_name='maven-dist-tool'
+artifactId='maven-dist-tool'
+
+git_src_location="svn2git/${svn2git_repo}"
+
+if [ ! -d ${git_src_location} ]; then
+    # clone svn2git repo
+    echo "Cloning source git-svn ${svn2git_repo} ..."
+    git clone https://github.com/apache/${svn2git_repo}.git ${git_src_location}
+    #  ensure we don't accidentally overwrite the source repository
+    chmod ugo-w ${git_src_location}
+    echo "Done!"
+fi
+
+echo "Filtering ${prefix} to ${repo_name}..."
+if [ ! -d ${repo_name}/.git ]; then
+    # create the initial repo
+    git clone --no-hardlinks ${git_src_location} ${repo_name}
+    pushd ${repo_name}
+
+    # make sure we don't push to the incorrect repo and also remove make sure
+    # we don't keep references to the remote repo
+    git remote rm origin
+
+    # rename trunk to master
+    git branch -m trunk master
+
+    # Remove everything except the path belonging to the module
+    git filter-branch --subdirectory-filter ${prefix}
+
+    # remove unrelated tags
+    for tag in $(git tag); do
+        if [[ $tag != ${artifactId}* ]]; then
+            git tag -d ${tag} > /dev/null
+        fi
+    done
+
+    # cleanup and compaction
+    git for-each-ref --format="%(refname)" refs/original/ | xargs -n1 git update-ref -d
+    git reflog expire --expire=now --all
+    git repack -Ad
+    git gc --aggressive --prune=now
+    popd
+    echo "Complete!"
+else
+    echo "Already converted"
+fi