| 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> ] | |
| [ -R <repack_each_revs>] [ -P <path_from_trunk> ] | |
| <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, "branches/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. | |
| -u:: | |
| Replace underscores in tag names with periods. | |
| -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.) | |
| -R <repack_each_revs>:: | |
| Specify how often git repository should be repacked. | |
| + | |
| The default value is 1000. git-svnimport will do imports in chunks of 1000 | |
| revisions, after each chunk the git repository will be repacked. To disable | |
| this behavior specify some large value here which is greater than the number of | |
| revisions to import. | |
| -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. | |
| -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 |