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