git-svnimport(1)
================
v0.1, July 2005

NAME
----
git-svnimport - Import a SVN repository into git


SYNOPSIS
--------
'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ] [ -d | -D ]
			[ -C <GIT_repository> ] [ -i ] [ -u ] [-l limit_rev]
			[ -b branch_subdir ] [ -T trunk_subdir ] [ -t tag_subdir ]
			[ -s start_chg ] [ -m ] [ -M regex ]
			<SVN_repository_URL> [ <path> ]


DESCRIPTION
-----------
Imports a SVN repository into git. It will either create a new
repository, or incrementally import into an existing one.

SVN access is done by the SVN:: Perl module.

git-svnimport assumes that SVN repositories are organized into one
"trunk" directory where the main development happens, "branch/FOO"
directories for branches, and "/tags/FOO" directories for tags.
Other subdirectories are ignored.

git-svnimport creates a file ".git/svn2git", which is required for
incremental SVN imports.

OPTIONS
-------
-C <target-dir>::
        The GIT repository to import to.  If the directory doesn't
        exist, it will be created.  Default is the current directory.

-s <start_rev>::
        Start importing at this SVN change number. The  default is 1.
+
When importing incrementally, you might need to edit the .git/svn2git file.

-i::
	Import-only: don't perform a checkout after importing.  This option
	ensures the working directory and index remain untouched and will
	not create them if they do not exist.

-T <trunk_subdir>::
	Name the SVN trunk. Default "trunk".

-t <tag_subdir>::
	Name the SVN subdirectory for tags. Default "tags".

-b <branch_subdir>::
	Name the SVN subdirectory for branches. Default "branches".

-o <branch-for-HEAD>::
	The 'trunk' branch from SVN is imported to the 'origin' branch within
	the git repository. Use this option if you want to import into a
	different branch.

-m::
	Attempt to detect merges based on the commit message. This option
	will enable default regexes that try to capture the name source
	branch name from the commit message.

-M <regex>::
	Attempt to detect merges based on the commit message with a custom
	regex. It can be used with -m to also see the default regexes.
	You must escape forward slashes.

-l <max_rev>::
	Specify a maximum revision number to pull.

	Formerly, this option controlled how many revisions to pull, due to
	SVN memory leaks. (These have been worked around.)

-v::
	Verbosity: let 'svnimport' report what it is doing.

-d::
	Use direct HTTP requests if possible. The "<path>" argument is used
	only for retrieving the SVN logs; the path to the contents is
	included in the SVN log.

-D::
	Use direct HTTP requests if possible. The "<path>" argument is used
	for retrieving the logs, as well as for the contents.
+
There's no safe way to automatically find out which of these options to
use, so you need to try both. Usually, the one that's wrong will die
with a 40x error pretty quickly.

<SVN_repository_URL>::
	The URL of the SVN module you want to import. For local
	repositories, use "file:///absolute/path".
+
If you're using the "-d" or "-D" option, this is the URL of the SVN
repository itself; it usually ends in "/svn".

<SVN_repository_URL>::
	The URL of the SVN module you want to import. For local
	repositories, use "file:///absolute/path".

<path>
	The path to the module you want to check out.

-h::
	Print a short usage message and exit.

OUTPUT
------
If '-v' is specified, the script reports what it is doing.

Otherwise, success is indicated the Unix way, i.e. by simply exiting with
a zero exit status.

Author
------
Written by Matthias Urlichs <smurf@smurf.noris.de>, with help from
various participants of the git-list <git@vger.kernel.org>.

Based on a cvs2git script by the same author.

Documentation
--------------
Documentation by Matthias Urlichs <smurf@smurf.noris.de>.

GIT
---
Part of the gitlink:git[7] suite

