Merge git://repo.or.cz/git-gui into maint
[gitweb.git] / Documentation / git-svnimport.txt
index a27a83596c05e519ff36e65e760f6b8041852af7..b166cf3327380a8f386825a7fbce92f2447bb54e 100644 (file)
@@ -9,11 +9,14 @@ 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_nr_changes]
-                       [ -b branch_subdir ] [ -t trunk_subdir ] [ -T tag_subdir ]
-                       [ -s start_chg ] [ -m ] [ -M regex ]
-                       <SVN_repository_URL> [ <path> ]
+               [ -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> ]
+               [ -R <repack_each_revs>] [ -P <path_from_trunk> ]
+               <SVN_repository_URL> [ <path> ]
 
 
 DESCRIPTION
@@ -21,7 +24,7 @@ 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.
+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"
@@ -29,7 +32,7 @@ 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. 
+incremental SVN imports.
 
 OPTIONS
 -------
@@ -40,45 +43,86 @@ OPTIONS
 -s <start_rev>::
         Start importing at this SVN change number. The  default is 1.
 +
-When importing incementally, you might need to edit the .git/svn2git file.
+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 cache remain untouched and will
+       ensures the working directory and index remain untouched and will
        not create them if they do not exist.
 
--t <trunk_subdir>::
+-T <trunk_subdir>::
        Name the SVN trunk. Default "trunk".
-       
--T <tag_subdir>::
+
+-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::    
+-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. 
+       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. 
+       regex. It can be used with -m to also see the default regexes.
+       You must escape forward slashes.
 
--l <max_num_changes>::
-       Limit the number of SVN changesets we pull before quitting.
-       This option is necessary because the SVN library has serious memory
-       leaks; the recommended value for nontrivial imports is 100.
+-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.)
+
+-R <repack_each_revs>::
+       Specify how often git repository should be repacked.
++
+The default value is 1000. git-svnimport will do import in chunks of 1000
+revisions, after each chunk git repository will be repacked. To disable
+this behavior specify some big value here which is mote than number of
+revisions to import.
 
-       git-svnimport will still exit with a zero exit code. You can check
-       the size of the file ".git/svn2git" to determine whether to call
-       the importer again.
+-P <path_from_trunk>::
+       Partial import of the SVN tree.
++
+By default, the whole tree on the SVN trunk (/trunk) is imported.
+'-P my/proj' will import starting only from '/trunk/my/proj'.
+This option is useful when you want to import one project from a
+svn repo which hosts multiple projects under the same trunk.
 
 -v::
        Verbosity: let 'svnimport' report what it is doing.
@@ -103,11 +147,7 @@ with a 40x error pretty quickly.
 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>
+<path>::
        The path to the module you want to check out.
 
 -h::