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

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


SYNOPSIS
--------
[verse]
'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 ] [ -r ] [ -M regex ]
		[ -I <ignorefile_name> ] [ -A <author_file> ]
		<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.

-r::
	Prepend 'rX: ' to commit messages, where X is the imported
	subversion revision.

-I <ignorefile_name>::
	Import the svn:ignore directory property to files with this
	name in each directory. (The Subversion and GIT ignore
	syntaxes are similar enough that using the Subversion patterns
	directly with "-I .gitignore" will almost always just work.)

-A <author_file>::
	Read a file with lines on the form
+
------
	username = User's Full Name <email@addr.es>

------
+
and use "User's Full Name <email@addr.es>" as the GIT
author and committer for Subversion commits made by
"username". If encountering a commit made by a user not in the
list, abort.
+
For convenience, this data is saved to $GIT_DIR/svn-authors
each time the -A option is provided, and read from that same
file each time git-svnimport is run with an existing GIT
repository without -A.

-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".

<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

