Home Explore Blog CI



git

1st chunk of `Documentation/git-svn.adoc`
59a3aa507c16e7413dc2023e052fb73f172f8c0966ff16ab0000000100000fa6
git-svn(1)
==========

NAME
----
git-svn - Bidirectional operation between a Subversion repository and Git

SYNOPSIS
--------
[verse]
'git svn' <command> [<options>] [<arguments>]

DESCRIPTION
-----------
'git svn' is a simple conduit for changesets between Subversion and Git.
It provides a bidirectional flow of changes between a Subversion and a Git
repository.

'git svn' can track a standard Subversion repository,
following the common "trunk/branches/tags" layout, with the --stdlayout option.
It can also follow branches and tags in any layout with the -T/-t/-b options
(see options to 'init' below, and also the 'clone' command).

Once tracking a Subversion repository (with any of the above methods), the Git
repository can be updated from Subversion by the 'fetch' command and
Subversion updated from Git by the 'dcommit' command.

COMMANDS
--------

'init'::
	Initializes an empty Git repository with additional
	metadata directories for 'git svn'.  The Subversion URL
	may be specified as a command-line argument, or as full
	URL arguments to -T/-t/-b.  Optionally, the target
	directory to operate on can be specified as a second
	argument.  Normally this command initializes the current
	directory.

-T<trunk-subdir>;;
--trunk=<trunk-subdir>;;
-t<tags-subdir>;;
--tags=<tags-subdir>;;
-b<branches-subdir>;;
--branches=<branches-subdir>;;
-s;;
--stdlayout;;
	These are optional command-line options for init.  Each of
	these flags can point to a relative repository path
	(--tags=project/tags) or a full url
	(--tags=https://foo.org/project/tags).
	You can specify more than one --tags and/or --branches options, in case
	your Subversion repository places tags or branches under multiple paths.
	The option --stdlayout is
	a shorthand way of setting trunk,tags,branches as the relative paths,
	which is the Subversion default. If any of the other options are given
	as well, they take precedence.
--no-metadata;;
	Set the 'noMetadata' option in the [svn-remote] config.
	This option is not recommended, please read the 'svn.noMetadata'
	section of this manpage before using this option.
--use-svm-props;;
	Set the 'useSvmProps' option in the [svn-remote] config.
--use-svnsync-props;;
	Set the 'useSvnsyncProps' option in the [svn-remote] config.
--rewrite-root=<URL>;;
	Set the 'rewriteRoot' option in the [svn-remote] config.
--rewrite-uuid=<UUID>;;
	Set the 'rewriteUUID' option in the [svn-remote] config.
--username=<user>;;
	For transports that SVN handles authentication for (http,
	https, and plain svn), specify the username.  For other
	transports (e.g. `svn+ssh://`), you must include the username in
	the URL, e.g. `svn+ssh://foo@svn.bar.com/project`
--prefix=<prefix>;;
	This allows one to specify a prefix which is prepended
	to the names of remotes if trunk/branches/tags are
	specified.  The prefix does not automatically include a
	trailing slash, so be sure you include one in the
	argument if that is what you want.  If --branches/-b is
	specified, the prefix must include a trailing slash.
	Setting a prefix (with a trailing slash) is strongly
	encouraged in any case, as your SVN-tracking refs will
	then be located at "refs/remotes/$prefix/*", which is
	compatible with Git's own remote-tracking ref layout
	(refs/remotes/$remote/*). Setting a prefix is also useful
	if you wish to track multiple projects that share a common
	repository.
	By default, the prefix is set to 'origin/'.
+
NOTE: Before Git v2.0, the default prefix was "" (no prefix). This
meant that SVN-tracking refs were put at "refs/remotes/*", which is
incompatible with how Git's own remote-tracking refs are organized.
If you still want the old default, you can get it by passing
`--prefix ""` on the command line (`--prefix=""` may not work if
your Perl's Getopt::Long is < v2.37).

--ignore-refs=<regex>;;
	When passed to 'init' or 'clone' this regular expression will
	be preserved as a config key.  See 'fetch' for a description
	of `--ignore-refs`.
--ignore-paths=<regex>;;
	When passed to 'init'

Title: Git SVN Documentation
Summary
The git-svn command allows for bidirectional operation between a Subversion repository and Git, enabling the tracking of changes between the two version control systems and providing various options for initialization, fetching, and committing changes.