- sf
[CORE]
a path to the directory where SubGit logs are being stored. The path can be either absolute or relative to the Git repository where import/mirror from SVN is being performed to.logs = PATH
SubGit logs verbosity level. There are three levels:logLevel = [info|finer|finest]
INFO
– default level, least verbose, reflects import/mirror process steps.FINER
– more verbose, Subgit logs every action it performs.FINEST
– most verbose, logs everything, including whole network traffic with all the payload.
The values are case-insensitive. Default log level is
INFO
.
a boolean value, can be set toshared = [true|false]
true
orfalse
.Whentrue
, all files in the Git repository will be made group-writable;false
will set all the files owner writable only. The option must betrue
when more than one system account is used to work with this repository. The default isfalse
.
a path to the authors mapping file or authors mapping helper program:authorsFile = PATH
authors mapping file – a text file with explicit authors mapping:
authors mapping syntaxsvn_username = Git User <gituser@example.com>
- authors helper program – an executable authors mapping helper program and its optional arguments.
Find more details on authors mapping in the authors mapping user manual.
There could be more than oneauthorsFile
options specified, they will be processed from the last to the first until the mapping is obtained.
encoding in which authors mapping information is present. The default value isauthorsFileEncoding = ENCODING
UTF8
.
defaultDomain = DOMAIN
domain to be used to generate Git committer email when authors mapping is not defined or does not provide an email address for a particular committer.
a way SubGit handles translation failures. There are three possible options:failSafe = [auto|svn|git]
auto
– failed translation results in commits or pushes to be blocked on the side to which translation has failed.svn
– commits to Subversion are never being blocked.git
– pushes to Git are never being blocked.
pathEncoding = ENCODING
encoding to be used to store paths in Git tree objects. The default value isUTF8
.gitPath = PATH
a path to Git executable. If this option is set, Git executable will be used to stream large files and perform Git garbage collection that can significantly decrease memory and disk space consumption.streamFileThreshold = SIZE
file size in bytes. SubGit loads the entire file into memory if its size less than this threshold; if the file is larger than the threshold, SubGit sends it as a stream. The option is not set by default, but SubGit sets the threshold to 50MB when the option is not set, so default threshold is 50MB. Note, the bigger the threshold is, the more likely to run into OutOfMemory error.
a path to Java home directory; this Java RE will be used to run hooks.javaHome = PATH
[SVN]
SVN project URL to be used for import/mirror. Supported protocols:url = URL
file://
svn://
svn+ssh://
http://
https://
trunk = PATH
a path to SVN projecttrunk
relative to the SVN project URL. For more details see "Branches and Tags mapping" user manual.branches = PATH
a path to SVN projectbranches
directory relative to the SVN project URL. There can be more than onebranches
option in a configuration. For more details see "Branches and Tags mapping" user manual.tags = PATH
a path to SVN projecttags
directory relative to the SVN project URL. There can be more than onetags
option in a configuration. For more details see "Branches and Tags mapping" user manual.
shelves = PATH
a path to SVN projectshelves
directory relative to the SVN project URL; this is special directory intended to store commits in some ambiguous situations when SubGit is unable to determine branch name where those particular commits belong to, find more details in the "What are shelves really?" blog post.
excludeBranches = SIMPLE_PATTERN
a string that represents a branch or tag name to be excluded from translation. It can be either full branch or tag name or a name pattern with one wildcard. Interchangeable withexcludeTags
. For more details see "Branches and Tags mapping" user manual.excludeTags = SIMPLE_PATTERN
a string that represents a branch or tag name to be excluded from translation. It can be either full branch or tag name or a name pattern with one wildcard. Interchangeable withexcludeBranches
. For more details see "Branches and Tags mapping" user manual.
includePath = PATTERN
a string pattern that represents files or directories to be included in translation. There are few rules that apply to the pattern, find the details in "Branches and Tags mapping" user manual.
excludePath = PATTERN
opposite forincludePath
, a string pattern that represents files or directories to be excluded from translation. There are few rules that apply to the pattern, find the details in "Branches and Tags mapping" user manual.
auth = [default,option1,…]
comma-separated list of[auth]
sections IDs where Subversion credentials are defined. Credentials will be used both for read-only and write operations, and it is recommended to define credentials of an account that has full access to the Subversion repository. There is onedefault
section from scratch.
minimalRevision = REVISION
minimal SVN repository revision number the import/mirror should start from.
fetchInterval = INTERVAL
time interval in seconds. SubGit will fetch changes from SVN everyINTERVAL
. The default value is 60.
connectTimeout = TIMEOUT
SVN connection timeout in seconds. The default value is 300 seconds.
readTimeout = TIMEOUT
SVN connection read timeout in seconds. The default value is 600 seconds.
httpSpooling = [true|false]
enable HTTP requests spooling to prevent server-side timeout when request processing takes a long time. The default value isfalse
.
triggerSvnPostReceive = [true|false]
Iftrue
, SubGit invokes user-post-receive hook during changes translation from SVN side to Git repository, otherwise it doesn't. This option exerts influence on SVN-to-Git translation only, when SubGit translates changes from Git to SVN it invokes hooks irrespective of this option.
triggerGitGC = [true|false|N]
If the settings is set totrue
, SubGit will always run Git garbage collectiongit
gc--auto
. Whenfalse
it won't run the collection. A numeric valueN
represents a number of revisions; SubGit will invokegit
gc--auto
everyN
revisions.
keepGitCommitTime = [true|false]
Whentrue,
SVN commits will have the same dates as corresponding Git commits, even if this violates monotonic increase of commit dates from revision to revision. Whenfalse
, SubGit will try to preserve Git commit dates while translation to SVN, but it will guarantee SVN dates to increase monotonically from revision to revision. The default value isfalse
.
a pattern that represents revision properties to be set when a Git commit is translated to SVN, comma or space separated. Supported values are:revisionProperties = PATTERN
author
– setssubgit:author
as the author of Git commit.committer –
setssubgit:committer
as the committer of Git commitdate
– setssubgit:date
Git commit creation date in a form "YY-MM-DD hh:mm:ss Z".log
– setssubgit:log
as the Git commit message.commit
– setssubgit:commit
as the Git commit SHA-1 hash.svnUser
– setssubgit:svnUser
as the SVN user SubGit uses to create a revision.
There are two ways to set the PATTERN:
the first is just list the values:
revisionProperties list syntaxrevisionProperties = author,date,log
In this case, SubGit will set SVN the following revision properties:
SVN revision propertiessubgit:author = <author> subgit:date = <date> subgit:log = <log>
Another way is to set values along with some custom namespace, e.g. for custom namespace git:
revisionProperties syntax with custom namespacerevisionProperties = git:author=author,git:date=date,git:log=log
In such case SubGit will set the SVN revision properties using that exact git namespace:
SVN revision properties with custom namespacegit:author = <author> git:date = <date> git:log = <log>
a pattern consisting of placeholders that construct SVN commit message when a Git commit is being translated to SVN. There are several acceptable placeholders:svnCommitMessage = PATTERN
%author
= Git author%committer
= Git committer%date
= Git commit date%message
= original message%note
= Git commit note stored under refs/notes/commits%note(refs/notes/namespace)
= Git commit note stored under refs/notes/namespace%commit
= Git commit hash%svnUser
= Subversion username%branch
= Subversion branch\n
= newline feed
For example, if the
svnCommitMessage
was set like this:svnCommitMessagesvnCommitMessage = Git: %author\n%commit@%branch\\n%message
and then a commit has been pushed to the mirrored Git repository:
Git commit$ git log -v commit 161c0bc44517c21d8eb24b720dad71d724b915f9 Author: John Doe <johndoe@example.com> Date: Thu Jun 29 18:25:04 2017 +0500 svnCommitMessage example
respective SVN revision will look like this:
SVN revision 196----------------------------------------------------------------- r196 | johndoe | 2017-06-29 18:25:04 +0500 (Thu, 29 Jun 2017) | Changed paths: M /project1/trunk M /project1/trunk/source.txt Git: John Doe <johndoe@example.com> 161c0bc44517c21d8eb24b720dad71d724b915f9@trunk svnCommitMessage example -----------------------------------------------------------------
gitCommitMessage = PATTERN
a pattern consisting of placeholders that construct Git commit message when a SVNcommit is being translated to Git. There are several acceptable placeholders:%author
= Git author%committer
= Git committer%date
= date of revision%message
= original message%svnUser
= Subversion username%revision
= Subversion revision, GRN in your notation%branch.
= Subversion branch\n
= newline feed
For example, if thegitCommitMessage
was set like this:gitCommitMessagegitCommitMessage = SVN %revision@%branch\\n%message
Then, some changes have been committed to the SVN repository:
SVN revision 197----------------------------------------------------------------- r197 | johndoe | 2017-06-29 13:38:02 +0500 (Thu, 29 Jun 2017) | Changed paths: M /project1/trunk/source.txt gitCommitMessage example -----------------------------------------------------------------
Translated Git commit will look like this:
Git commit$ git log -v commit d5c7c9e2518a5e8942c26d7cda5ace61ddb7c045 Author: John Dow <johndoe@example.com> Date: Thu Jun 29 08:38:02 2017 +0000 SVN 197@trunk gitCommitMessage example
WhenallowBranchReplacement = [true|false]
true
, SVN branches replacement is allowed, otherwise it isn't allowed.allowReplacementBranches = PATH
a path pattern relative tosvn.url
that points to SVN branches which are allowed to be replaced. This option works as an exception whenallowBranchReplacement
is set tofalse:
it allows replacing those SVN branches when new Git changes are being pushed to the SubGit-mirrored Git repository.
WhenallowBranchDeletion = [true|false]
true
, SVN branches removing is allowed, otherwise it isn't allowed.allowDeletionBranches = PATH
a path pattern relative tourl
pointing to SVN branches which are allowed to be deleted. This option works as an exceptionallowBranchReplacement
is set tofalse:
It allows removing those SVN branches when new Git changes are being pushed to the SubGit-mirrored Git repository.allowForcePush = [true|false]
When set tofalse
SubGit rejects any attempts to perform non-fast-forward updates for those refs which are synchronized with SVN repository. Whentrue
, such updates are allowed.cleanStaleRefLocks = [true|false]
When set totrue
, SubGit automatically deletes any stale Git ref locks – i.e. ref lock filesGIT_REPO/refs/**/*.lock
that exist more than a minute. Iffalse
, SubGit won’t delete lock files, that means any stale ref locks has to be resolved manually. The default istrue
.
[AUTH]