[core]
...
[CORE]
[SVN]
[AUTH]
[TRANSLATE]
[DAEMON]
[DAEMON "SHARED"]
[CONFIG]
[HOOKS]
[CORE]
logs = PATH
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.
logLevel =
\ [info|finer|finest
\] Anchor |
---|
| core.loglevel |
---|
| core.loglevel |
---|
|
SubGit logs verbosity level. There are three levels: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
.
shared =
\ [true|false
\]
authorsFile = PATH
authorsFileEncoding = ENCODING
defaultDomain = DOMAIN
- failSafe = \
]
a boolean value, can be set to true
or false
.When true
, all files in the Git repository will be made group-writable; false
will set all the files owner writable only. The option must be true
when more than one system account is used to work with this repository. The default is false
.
authorsFile = PATH Anchor |
---|
| core.authorsFile |
---|
| core.authorsFile |
---|
|
a path to the authors mapping file or authors mapping helper program:
Find more details on authors mapping in the authors mapping user manual.
There could be more than one authorsFile
options specified, they will be processed from the last to the first until the mapping is obtained.
authorsFileEncoding = ENCODING Anchor |
---|
| core.authorsFileEncoding |
---|
| core.authorsFileEncoding |
---|
|
encoding in which authors mapping information is present. The default value is 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.
...
failSafe = [auto|svn|git
\]
pathEncoding = ENCODING
gitPath = PATH
streamFileThreshold = SIZE
javaHome = PATH
...
] Anchor |
---|
| core.failSafe |
---|
| core.failSafe |
---|
|
a way SubGit handles translation failures. There are three possible options:
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.
Find more details in "Error recover" user manual.
pathEncoding = ENCODING Anchor |
---|
| core.pathEncoding |
---|
| core.pathEncoding |
---|
|
encoding to be used to store paths in Git tree objects. The default value is UTF8
.
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 Anchor |
---|
| core.streamFileThreshold |
---|
| core.streamFileThreshold |
---|
|
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.
javaHome = PATH Anchor |
---|
| core.javaHome |
---|
| core.javaHome |
---|
|
a path to Java home directory; this Java RE will be used to run hooks.
up
[SVN]
url = URL
SVN project URL to be used for import/mirror. Supported protocols:
file://
svn://
svn+ssh://
http://
https://
trunk = PATH
branches = PATH
a path to SVN project branches
directory relative to the SVN project URL. There can be more than one branches
option in a configuration. For more details see "Branches and Tags mapping" user manual.
shelves = PATH
a path to SVN project shelves
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 Anchor |
---|
| svn.excludeBranches |
---|
| svn.excludeBranches |
---|
|
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 with excludeTags
. For more details see "Branches and Tags mapping" user manual.
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 with excludeBranches
. For more details see "Branches and Tags mapping" user manual. includePath = PATTERN Anchor |
---|
| svn.includePath |
---|
| svn.includePath |
---|
|
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 Anchor |
---|
| svn.excludePath |
---|
| svn.excludePath |
---|
|
opposite for includePath
, 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 one default
section from scratch.
minimalRevision = REVISION Anchor |
---|
| svn.minimalRevision |
---|
| svn.minimalRevision |
---|
|
minimal SVN repository revision number the import/mirror should start from.
fetchInterval = INTERVAL Anchor |
---|
| svn.fetchInterval |
---|
| svn.fetchInterval |
---|
|
time interval in seconds. SubGit will fetch changes from SVN every INTERVAL
. The default value is 60.
connectTimeout = TIMEOUT Anchor |
---|
| svn.connectTimeout |
---|
| svn.connectTimeout |
---|
|
SVN connection timeout in seconds. The default value is 300 seconds.
readTimeout = TIMEOUT Anchor |
---|
| svn.readTimeout |
---|
| svn.readTimeout |
---|
|
SVN connection read timeout in seconds. The default value is 600 seconds.
httpSpooling = [true|false] Anchor |
---|
| svn.httpSpooling |
---|
| svn.httpSpooling |
---|
|
enable HTTP requests spooling to prevent server-side timeout when request processing takes a long time. The default value is false
.
triggerSvnPostReceive = [true|false] Anchor |
---|
| svn.triggerSvnPostReceive |
---|
| svn.triggerSvnPostReceive |
---|
|
If true
, 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] Anchor |
---|
| svn.triggerGitGC |
---|
| svn.triggerGitGC |
---|
|
If the settings is set to true
, SubGit will always run Git garbage collection git
gc --auto
. When false
it won't run the collection. A numeric value N
represents a number of revisions; SubGit will invoke git
gc --auto
every N
revisions.
keepGitCommitTime = [true|false] Anchor |
---|
| svn.keepGitCommitTime |
---|
| svn.keepGitCommitTime |
---|
|
When true,
SVN commits will have the same dates as corresponding Git commits, even if this violates monotonic increase of commit dates from revision to revision. When false
, 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 is false
.
revisionProperties = PATTERN Anchor |
---|
| svn.revisionProperties |
---|
| svn.revisionProperties |
---|
|
a pattern that represents revision properties to be set when a Git commit is translated to SVN, comma or space separated. Supported values are:
author
– sets subgit:author
as the author of Git commit.committer –
sets subgit:committer
as the committer of Git commitdate
– sets subgit:date
Git commit creation date in a form "YY-MM-DD hh:mm:ss Z".log
– sets subgit:log
as the Git commit message.commit
– sets subgit:commit
as the Git commit SHA-1 hash.svnUser
– sets subgit: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:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | revisionProperties list syntax |
---|
|
revisionProperties = author,date,log |
In this case, SubGit will set SVN the following revision properties:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | SVN revision properties |
---|
|
subgit: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:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | revisionProperties syntax with custom namespace |
---|
|
revisionProperties = git:author=author,git:date=date,git:log=log |
In such case SubGit will set the SVN revision properties using that exact git namespace:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | SVN revision properties with custom namespace |
---|
|
git:author = <author>
git:date = <date>
git:log = <log> |
svnCommitMessage = PATTERN Anchor |
---|
| svn.svnCommitMessage |
---|
| svn.svnCommitMessage |
---|
|
a pattern consisting of placeholders that construct SVN commit message when a Git commit is being translated to SVN. There are several acceptable placeholders:
%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:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | svnCommitMessage |
---|
|
svnCommitMessage = Git: %author\n%commit@%branch\\n%message |
and then a commit has been pushed to the mirrored Git repository:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | 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:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | 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 Anchor |
---|
| svn.gitCommitMessage |
---|
| svn.gitCommitMessage |
---|
|
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 the gitCommitMessage
was set like this:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | gitCommitMessage |
---|
|
gitCommitMessage = SVN %revision@%branch\\n%message |
Then, some changes have been committed to the SVN repository:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | 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:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | 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 |
allowBranchReplacement = [true|false] Anchor |
---|
| svn.allowBranchReplacement |
---|
| svn.allowBranchReplacement |
---|
|
When true
, SVN branches replacement is allowed, otherwise it isn't allowed.
allowReplacementBranches = PATH Anchor |
---|
| svn.allowReplacementBranches |
---|
| svn.allowReplacementBranches |
---|
|
a path pattern relative to svn.url
that points to SVN branches which are allowed to be replaced. This option works as an exception when allowBranchReplacement
is set to false:
it allows replacing those SVN branches when new Git changes are being pushed to the SubGit-mirrored Git repository.
allowBranchDeletion = [true|false] Anchor |
---|
| svn.allowBranchDeletion |
---|
| svn.allowBranchDeletion |
---|
|
When true
, SVN branches removing is allowed, otherwise it isn't allowed.
allowDeletionBranches = PATH Anchor |
---|
| svn.allowDeletionBranches |
---|
| svn.allowDeletionBranches |
---|
|
a path pattern relative to url
pointing to SVN branches which are allowed to be deleted. This option works as an exception allowBranchReplacement
is set to false:
It allows removing those SVN branches when new Git changes are being pushed to the SubGit-mirrored Git repository.
allowForcePush = [true|false] Anchor |
---|
| svn.allowForcePush |
---|
| svn.allowForcePush |
---|
|
When set to false
SubGit rejects any attempts to perform non-fast-forward updates for those refs which are synchronized with SVN repository. When true
, such updates are allowed.
cleanStaleRefLocks = [true|false] Anchor |
---|
| svn.cleanStaleRefLocks |
---|
| svn.cleanStaleRefLocks |
---|
|
When set to true
, SubGit automatically deletes any stale Git ref locks – i.e. ref lock files GIT_REPO/refs/**/*.lock
that exist more than a minute. If false
, SubGit won’t delete lock files, that means any stale ref locks has to be resolved manually. The default is true
.
up
[AUTH "DEFAULT"]
userName = NAME Anchor |
---|
| auth.userName |
---|
| auth.userName |
---|
|
a username that is used to log into the Subversion repository.
password = PASSWORD Anchor |
---|
| auth.password |
---|
| auth.password |
---|
|
user password that is used to log into the Subversion repository.
sshKeyFile = PATH Anchor |
---|
| auth.sshKeyFile |
---|
| auth.sshKeyFile |
---|
|
a path to SSH key file in case if SVN repository is supposed to be accessed over svn+ssh
and the key is used for login. The path can be either absolute or relative to the Git repository where import/mirror from SVN is being performed to.
sshKeyPassphrase = PASSPHRASE Anchor |
---|
| auth.sshKeyPassphrase |
---|
| auth.sshKeyPassphrase |
---|
|
passphrase for the SSH key.
sslClientCertFile = PATH Anchor |
---|
| auth.sslClientCertFile |
---|
| auth.sslClientCertFile |
---|
|
a path to client SSL client certificate of PKSC#12 format for the case the SVN repository is being accessed over HTTPS and client certificate is used forlog in. The path can be either absolute or relative to the Git repository where import/mirror from SVN is being performed to.
sslClientCertPassphrase = PASSPHRASE Anchor |
---|
| auth.sslClientCertPassphrase |
---|
| auth.sslClientCertPassphrase |
---|
|
passphrase for the SSL client certificate.
passwords = PATH Anchor |
---|
| auth. passwords |
---|
| auth. passwords |
---|
|
a path to passwords file; the file contains username/password pairs that are used to log into the Subversion repository. The path can be either absolute or relative to the Git repository where import/mirror from SVN is being performed to.
credentialHelper = PATH Anchor |
---|
| auth.credentialHelper |
---|
| auth.credentialHelper |
---|
|
a path to the credential helper program and its optional arguments. The path can be either absolute or relative to the Git repository where import/mirror from SVN is being performed to. The program is expected to be non-interactive (no prompt) and to use Git credential helper input/output format. Sample credential helper script could be found in subgit/samples
directory.
subversionConfigurationDirectory = [PATH|@default@] Anchor |
---|
| auth.subversionConfigurationDirectory |
---|
| auth.subversionConfigurationDirectory |
---|
|
...
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.
...
- a path to Subversion configuration directory or
@default@
to use current user Subversion configuration and credentials cache. The path can be either absolute or relative to the Git repository where import/mirror from SVN is being performed to.
useDefaultSubversionConfigurationDirectory = [true|false] Anchor |
---|
| auth.useDefaultSubversionConfigurationDirectory |
---|
| auth.useDefaultSubversionConfigurationDirectory |
---|
|
a boolean value that can be set to true
or false
. When true
default user SVN directory ~/.subversion
is used; when false
, path that is set by subversionConfigurationDirectory
option is used.
up
[TRANSLATE]
externals = [true|false] Anchor |
---|
| translate.externals |
---|
| translate.externals |
---|
|
a boolean value that can be set to true
or false
. SubGit does not support translating svn:externals
to Git submodules and back. However, when this option is set to true
, SubGit creates special .gitsvnextmodules
files in the root of every Git commit. These files store information on all the svn:externals
definitions found in a given SVN branch. When false
, SubGit ignores any svn:externals
properties. The default is false
.
eols = [true|false] Anchor |
---|
| translate.eols |
---|
| translate.eols |
---|
|
a boolean value that can be set to true
or false
. When true
, .gitattributes
files in Git are syncronized with svn:eol-style
and svn:mime-type
properties in SVN repository. When false
.gitattributes
from Git is translated to .gitattributes
file in SVN as any other normal file. The default is true
.
ignores = [true|false] Anchor |
---|
| translate.ignores |
---|
| translate.ignores |
---|
|
a boolean value that can be set to true
or false
. When true
, .gitignore
in Git is translated to svn:ignore
and vice versa. When false
.gitignore
from Git is translated to .gitignore
file in SVN as any other normal file. The default is true
.
otherProperties = [true|false] Anchor |
---|
| translate.otherProperties |
---|
| translate.otherProperties |
---|
|
a boolean value that can be set to true
or false
. When true
, SubGit translates SVN properties (except svn:eol-style
, svn:mime-type
, svn:ignore
, svn:executable
, svn:special
) to .gitattributes
. When false
, it doesn't.
renames = [true|false] Anchor |
---|
| translate.renames |
---|
| translate.renames |
---|
|
a boolean value that can be set to true
or false
. When true
, SubGit tracks renamed files in Git and writes this information in SVN metadata. When false
, it doesn't. The default value is true
.
followFirstParent = [true|false] Anchor |
---|
| translate.followFirstParent |
---|
| translate.followFirstParent |
---|
|
a boolean value that can be set to true
or false
. When SubGit translates a merge commit to SVN revision, it tries to identify an SVN branch to send this commit to. When this option is set to true
, SubGit always sends merge commit to the branch of its first parent unless it leads to branch replacement in SVN repository. When false
, SubGit uses a number of heuristics in order to choose SVN branch for a given merge commit; in certain cases, SubGit may send a merge commit to the branch of its second parent. The default is false
.
useGlueFetch = [true|false] Anchor |
---|
| translate.useGlueFetch |
---|
| translate.useGlueFetch |
---|
|
a boolean value that can be set to true
or false
. When true
, SubGit uses SVN requests of a special form that allows to translate SVN repository faster at expense of higher memory consumption. When false
, SubGit uses regular requests. The default is false
.
createEmptySvnCommits = [true|false] Anchor |
---|
| translate.createEmptySvnCommits |
---|
| translate.createEmptySvnCommits |
---|
|
a boolean value that can be set to true
or false
. When true
, SubGit creates empty commits in SVN project even there's nothing to send from Git side (for example, if a branch isn't tracked). When false
, empty commits are not be created.
createEmptyGitCommits = [true|false]
a boolean value that can be set to true
or false
. When true
, SubGit creates empty commits in Git repository even there's nothing to send from Git side (for example, if a branch isn't tracked). When false
, empty commits are not be created.
timezone = TIMEZONE
UTC based timezone to be used in Git commits. The default is UTC
.
To set the timezone to UTC-4
the option has to be set as follows:
No Format |
---|
timezone = UTC-4 |
In this case, the timestamp in translated Git commit is set to that timezone:
Code Block |
---|
language | text |
---|
theme | FadeToGrey |
---|
title | commit example |
---|
|
commit 135242956354e70976f9c2ceec351f34d45d5d28
Author: user <user@example.com>
Date: Fri Jun 23 02:37:32 2017 -0400
changed source.cpp |
up
[DAEMON]
logs = PATH
a path to the directory where SubGit daemon 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.
javaHome = PATH Anchor |
---|
| daemon.javaHome |
---|
| daemon.javaHome |
---|
|
a path to Java home directory that should be used the daemon to start.
up
[DAEMON "SHARED"] Anchor |
---|
| daemon.shared |
---|
| daemon.shared |
---|
|
directory = PATH Anchor |
---|
| daemon.shared.directory |
---|
| daemon.shared.directory |
---|
|
a path to the directory shared daemon uses. The path can be either absolute or relative to the Git repository where import/mirror from SVN is being performed to.
up
[CONFIG]
include = PATH Anchor |
---|
| config.include |
---|
| config.include |
---|
|
a path to SubGit configuration file that should be included in the current configuration. The options that are defined in the included configuration file are being overridden by the options defined in the including configuration file.
up
[HOOKS]
up