diff --git a/scripts/README.md b/scripts/README.md
new file mode 100644
index 0000000..60eb7ae
--- /dev/null
+++ b/scripts/README.md
@@ -0,0 +1,27 @@
+SCM Tooling
+====
+
+Git migration helpers
+---
+
+The workflow for migrating from Subversion to Git is the following:
+
+1. Generate the list of repository candidates
+
+    $ ./tooling/scm/scripts/gen-repo-candidates.sh  > repo-candidates.txt
+
+2. Create the remote repositories using the ASF self-service git tool
+
+    $ ./tooling/scm/scripts/migrate-to-git.sh -r < repo-candidates.txt
+
+Creating a repository can take up to one hour, so do this well in advance
+
+3. Extract the modules in individual repositories
+
+    $ ./tooling/scm/scripts/migrate-to-git.sh -r < repo-candidates.txt
+
+Also validate that the repositories created using step 2 are now live.
+
+4. Push the local changes to the remote repositories
+
+    $ ./tooling/scm/scripts/migrate-to-git.sh -p < repo-candidates.txt
diff --git a/scripts/migrate-to-git.sh b/scripts/migrate-to-git.sh
index b87f34f..ed270b6 100755
--- a/scripts/migrate-to-git.sh
+++ b/scripts/migrate-to-git.sh
@@ -21,6 +21,17 @@
 git_repo_location='../sling-modules'
 git_src_location='../sling-modules-src'
 
+function usage  {
+    echo "Usage: $0 [-p|-c] < repo-list.txt"
+    echo ""
+    echo "   -r : provision the Remote repositories"
+    echo "   -c : Convert the Repositories locally"
+    echo "   -p : Push local repositories to remote"
+    echo ""
+    echo "The repo-list.txt file can be generated using the "
+    echo "$(dirname $0)/gen-repo-candidates.sh script"
+}
+
 if [ ! -f check_staged_release.sh ]; then
     echo "Please run this script from the root of the Sling SVN repository"
     exit 1
@@ -35,7 +46,22 @@
     echo "Done!"
 fi
 
-for module in $(./tooling/scm/scripts/gen-repo-candidates.sh); do
+# validate CLI
+if [ $# -ne 1 ]; then
+    usage
+    exit -1
+fi
+
+case "$1" in 
+    "-r") echo "Provisioning remote repositories" ;;
+    "-c") echo "Converting local repositories";;
+    "-p") echo "Pushing local repositories to remove";;
+    *)
+        usage
+        exit -1
+esac
+
+while read -r module; do
 
     module_orig=$module
 
@@ -47,60 +73,66 @@
 
     repo_name="sling-${artifactId}" # add TLP prefix
     
-    echo "---- Preparing to migrate $module_orig to $repo_name ---"
+    echo "---- Preparing to process $module_orig as $repo_name ---"
 
-    status=$(curl -s -o /dev/null -I  -w "%{http_code}" https://git-wip-us.apache.org/repos/asf?p=${repo_name})
+    if [ $1 == "-c" ]; then
+   
+        if [ ! -d ${git_repo_location}/${repo_name}/.git ]; then
+            echo "Converting from SVN to Git..."
 
-    if [ $status = "404" ]; then
-        echo "Repository not found, will create";
-    elif [ $status = "200" ] ;then
-        echo "Repository exists, skipping";
-    else
-        echo "Unhandled HTTP status code ${status}, aborting"
-        exit 1
-    fi
-    
-    if [ ! -d ${git_repo_location}/${repo_name}/.git ]; then
-        echo "Converting from SVN to Git..."
+            # create the initial repo
+            git clone --no-hardlinks ${git_src_location} ${git_repo_location}/${repo_name}
+            pushd ${git_repo_location}/${repo_name}
 
-        # create the initial repo
-        git clone --no-hardlinks ${git_src_location} ${git_repo_location}/${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 ${module_orig}
+
+            # remove unrelated tags
+            for tag in $(git tag); do
+                if [[ $tag != ${artifactId}* ]]; then
+                    git tag -d ${tag}
+                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
+
+    elif [ $1 == "-r" ]; then
+        status=$(curl -s -o /dev/null -I  -w "%{http_code}" https://git-wip-us.apache.org/repos/asf?p=${repo_name})
+
+        if [ $status = "404" ]; then
+            echo "Repository not found, will create";
+        elif [ $status = "200" ] ;then
+            echo "Repository exists, skipping";
+        else
+            echo "Unhandled HTTP status code ${status}, aborting"
+            exit 1
+        fi
+     
+        
+        # TODO - create the repository using the ASF self-service tool
+        # curl --netrc 'https://reporeq.apache.org/ss.lua'
+        echo "Creating GIT repository ..."
+        exit 254 # unimplemented
+    else # -p
         pushd ${git_repo_location}/${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 ${module_orig}
-
-        # remove unrelated tags
-        for tag in $(git tag); do
-            if [[ $tag != ${artifactId}* ]]; then
-                git tag -d ${tag}
-            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
+        git remote add origin https://git-wip-us.apache.org/repos/asf/${repo_name}.git
+        git push -u origin master
         popd
-        echo "Complete!"
-    else
-        echo "Already converted"
     fi
-
-    
-    # TODO - create the repository using the ASF self-service tool
-    echo "Creating GIT repository ..."
-    exit 254 # unimplemented
-
-    cd ${git_repo_location}/${repo_name}
-    git remote add origin https://git-wip-us.apache.org/repos/asf/${repo_name}.git
-    git push -u origin master
 done
