This routine will convert an SVN repo to github. If it has nested projects, those projects will become git submodules linked to their nearest ancestor. The git master branch is created from trunk, and a .gitinore file is added from svn properties. Trunk is left intact and untouched as a branch, unless --no-branches or --no-preserve-trunk is used, in which case only master will exist, which will be the original trunk converted There is a .gitignore file that is created from the original repo, and used as the first commit on the new master branch. Files and folders above the trunk are considered part of the repository and are added to the new master branch as the final conversion commit. Trunk directories are created in each master branch and point to the trunk branch to maintain the trunk directory tree for trunks, but can be disabled through option --no-preserve-trunk. Nested repos Under Trunk only exist in the master branch, and not in the trunk branch. LDAP is required to be configured in order for svn Author lookups to work when building the "SVN Authors File" for full names and email addresses, otherwise svn commits will not be linked to their users in github. Conversion time could very greatly Conversion time factors are, directory size, commit length of branches/tags and trunk(s) and the greatest factor of all is missing branches or tags. When a branch is deleted from svn permanently, the conversion process must start over from the beginning of the commit chain for every occurrence. It is highly advisable one does not attempt to prune out unwanted branches or tags prior to conversion, but rather after because doing so will result in longer conversion time and errors in the logs.