At the average, translation of one revision takes 1-1.5 seconds. Of course, So the bigger the number amount of the revision is, the longer is the translation. If it runs much sloweris too slow, though, there are few things to consider:
most Most often, slow translations translation is caused by incorrect branches and tags mapping configuration. The most recommended way to create correct configuration is to use ‘subgit configure’ with ‘layout auto’
subgit configure
with--layout auto
option:Code Block theme FadeToGrey $ subgit configure --layout auto --trunk TRUNK_PATH SVN_PROJECT_URL [GIT_REPO_PATH]
where
- TRUNK_PATH - a path, relative to the
SVN_PROJECT_URL
, that leads to the directory, playing a the role of ‘trunk’ or ‘main line’ ‘mainline of development development’ in the SVN project. - SVN_PROJECT_URL - a URL that points to a single project in SVN repository, that’s intended to be translated to Git.
- GIT_REPO_PATH - an optional path to a new Git repository, where the SVN project will be translated to.
As an For example, the command may look like this:
Code Block theme FadeToGrey $ subgit configure --layout auto --trunk main http://example.com/svn/repository/project /home/user/project.git
SubGit will connect to the SVN project, scan its history and based on the
TRUNK_PATH
will try to find appropriatebranches
andtags,
based on theTRUNK_PATH,
and create valid mapping configuration.In rare occasions, though, the SVN project history and layout are so complex SubGit cannot create correct mapping configuration. In these cases the only way to set the mapping scheme is to create it manually following the mapping guide:.
- TRUNK_PATH - a path, relative to the
Another reason to change the mapping scheme manually is to exclude some branches, tags or particular files from the translation if they are not worth to be translated to Git. It can also speed up the translation, as the fewer branches and tags are in a mapping, the fewer revisions and data to translate.
There are a few more configuration options that can affect translation performance:
an “EOLs translation”EOLs translation feature that tells SubGit to perform line endings translation for each file and this process may strongly affect translation performance. To improve translation performance that feature can be turned off in SubGit configuration file:
No Format [translate] eols = false
It has to be set before translation start.
...
when streaming Git blobs, SubGit tries to use ‘git’ binary, that is expected to be found on the ‘gitPath’ path presented by ‘gitPath’
gitPath
:No Format [core] gitPath = /path/to/git/executable
If SubGit doesn’t find Git binary, it uses internal means of streaming and they may be much slower.
finally, a setting that sets Git Garbage Collector behavior:
No Format [svn] triggerGitGC = [true|false|N]
by default, SubGit invokes ‘git
git gc
–auto’–auto
with every revision and it may affect the translation performance. To speed up the translation, the GC can be either switched off (‘false’) or being invoked not so often (‘N’, a number of revisions between each invocation).