Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | git-svnimport(1) |
| 2 | ================ |
| 3 | v0.1, July 2005 |
| 4 | |
| 5 | NAME |
| 6 | ---- |
| 7 | git-svnimport - Import a SVN repository into git |
| 8 | |
| 9 | |
| 10 | SYNOPSIS |
| 11 | -------- |
Junio C Hamano | 9c099c8 | 2006-03-03 23:19:48 | [diff] [blame] | 12 | [verse] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 13 | 'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ] [ -d | -D ] |
Junio C Hamano | 2abe7e8 | 2006-02-27 07:07:08 | [diff] [blame] | 14 | [ -C <GIT_repository> ] [ -i ] [ -u ] [-l limit_rev] |
| 15 | [ -b branch_subdir ] [ -T trunk_subdir ] [ -t tag_subdir ] |
| 16 | [ -s start_chg ] [ -m ] [ -r ] [ -M regex ] |
Junio C Hamano | 93b02f2 | 2006-02-28 00:09:58 | [diff] [blame] | 17 | [ -I <ignorefile_name> ] [ -A <author_file> ] |
Junio C Hamano | 79770b6 | 2007-01-07 07:43:58 | [diff] [blame] | 18 | [ -R <repack_each_revs>] [ -P <path_from_trunk> ] |
Junio C Hamano | 93b02f2 | 2006-02-28 00:09:58 | [diff] [blame] | 19 | <SVN_repository_URL> [ <path> ] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 20 | |
| 21 | |
| 22 | DESCRIPTION |
| 23 | ----------- |
| 24 | Imports a SVN repository into git. It will either create a new |
| 25 | repository, or incrementally import into an existing one. |
| 26 | |
Junio C Hamano | a6331a8 | 2006-01-22 07:50:33 | [diff] [blame] | 27 | SVN access is done by the SVN::Perl module. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 28 | |
| 29 | git-svnimport assumes that SVN repositories are organized into one |
| 30 | "trunk" directory where the main development happens, "branch/FOO" |
| 31 | directories for branches, and "/tags/FOO" directories for tags. |
| 32 | Other subdirectories are ignored. |
| 33 | |
| 34 | git-svnimport creates a file ".git/svn2git", which is required for |
| 35 | incremental SVN imports. |
| 36 | |
| 37 | OPTIONS |
| 38 | ------- |
| 39 | -C <target-dir>:: |
| 40 | The GIT repository to import to. If the directory doesn't |
| 41 | exist, it will be created. Default is the current directory. |
| 42 | |
| 43 | -s <start_rev>:: |
| 44 | Start importing at this SVN change number. The default is 1. |
| 45 | + |
Junio C Hamano | 235a91e | 2006-01-07 01:13:58 | [diff] [blame] | 46 | When importing incrementally, you might need to edit the .git/svn2git file. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 47 | |
| 48 | -i:: |
| 49 | Import-only: don't perform a checkout after importing. This option |
| 50 | ensures the working directory and index remain untouched and will |
| 51 | not create them if they do not exist. |
| 52 | |
Junio C Hamano | 235a91e | 2006-01-07 01:13:58 | [diff] [blame] | 53 | -T <trunk_subdir>:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 54 | Name the SVN trunk. Default "trunk". |
| 55 | |
Junio C Hamano | 235a91e | 2006-01-07 01:13:58 | [diff] [blame] | 56 | -t <tag_subdir>:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 57 | Name the SVN subdirectory for tags. Default "tags". |
| 58 | |
| 59 | -b <branch_subdir>:: |
| 60 | Name the SVN subdirectory for branches. Default "branches". |
| 61 | |
| 62 | -o <branch-for-HEAD>:: |
| 63 | The 'trunk' branch from SVN is imported to the 'origin' branch within |
| 64 | the git repository. Use this option if you want to import into a |
| 65 | different branch. |
| 66 | |
Junio C Hamano | c915412 | 2006-02-15 02:22:06 | [diff] [blame] | 67 | -r:: |
| 68 | Prepend 'rX: ' to commit messages, where X is the imported |
| 69 | subversion revision. |
| 70 | |
Junio C Hamano | 2abe7e8 | 2006-02-27 07:07:08 | [diff] [blame] | 71 | -I <ignorefile_name>:: |
| 72 | Import the svn:ignore directory property to files with this |
| 73 | name in each directory. (The Subversion and GIT ignore |
| 74 | syntaxes are similar enough that using the Subversion patterns |
| 75 | directly with "-I .gitignore" will almost always just work.) |
| 76 | |
Junio C Hamano | 93b02f2 | 2006-02-28 00:09:58 | [diff] [blame] | 77 | -A <author_file>:: |
| 78 | Read a file with lines on the form |
Junio C Hamano | a725a53 | 2006-03-21 08:33:47 | [diff] [blame] | 79 | + |
| 80 | ------ |
| 81 | username = User's Full Name <email@addr.es> |
Junio C Hamano | 93b02f2 | 2006-02-28 00:09:58 | [diff] [blame] | 82 | |
Junio C Hamano | a725a53 | 2006-03-21 08:33:47 | [diff] [blame] | 83 | ------ |
| 84 | + |
| 85 | and use "User's Full Name <email@addr.es>" as the GIT |
| 86 | author and committer for Subversion commits made by |
| 87 | "username". If encountering a commit made by a user not in the |
| 88 | list, abort. |
| 89 | + |
| 90 | For convenience, this data is saved to $GIT_DIR/svn-authors |
| 91 | each time the -A option is provided, and read from that same |
| 92 | file each time git-svnimport is run with an existing GIT |
| 93 | repository without -A. |
Junio C Hamano | adb9128 | 2006-03-02 08:11:49 | [diff] [blame] | 94 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 95 | -m:: |
| 96 | Attempt to detect merges based on the commit message. This option |
| 97 | will enable default regexes that try to capture the name source |
| 98 | branch name from the commit message. |
| 99 | |
| 100 | -M <regex>:: |
| 101 | Attempt to detect merges based on the commit message with a custom |
| 102 | regex. It can be used with -m to also see the default regexes. |
| 103 | You must escape forward slashes. |
| 104 | |
| 105 | -l <max_rev>:: |
| 106 | Specify a maximum revision number to pull. |
Junio C Hamano | 1de7bc6 | 2006-12-17 19:31:54 | [diff] [blame] | 107 | + |
| 108 | Formerly, this option controlled how many revisions to pull, |
| 109 | due to SVN memory leaks. (These have been worked around.) |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 110 | |
Junio C Hamano | 79770b6 | 2007-01-07 07:43:58 | [diff] [blame] | 111 | -R <repack_each_revs>:: |
| 112 | Specify how often git repository should be repacked. |
| 113 | + |
| 114 | The default value is 1000. git-svnimport will do import in chunks of 1000 |
| 115 | revisions, after each chunk git repository will be repacked. To disable |
| 116 | this behavior specify some big value here which is mote than number of |
| 117 | revisions to import. |
| 118 | |
Junio C Hamano | 1de7bc6 | 2006-12-17 19:31:54 | [diff] [blame] | 119 | -P <path_from_trunk>:: |
| 120 | Partial import of the SVN tree. |
| 121 | + |
| 122 | By default, the whole tree on the SVN trunk (/trunk) is imported. |
| 123 | '-P my/proj' will import starting only from '/trunk/my/proj'. |
| 124 | This option is useful when you want to import one project from a |
| 125 | svn repo which hosts multiple projects under the same trunk. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 126 | |
| 127 | -v:: |
| 128 | Verbosity: let 'svnimport' report what it is doing. |
| 129 | |
| 130 | -d:: |
| 131 | Use direct HTTP requests if possible. The "<path>" argument is used |
| 132 | only for retrieving the SVN logs; the path to the contents is |
| 133 | included in the SVN log. |
| 134 | |
| 135 | -D:: |
| 136 | Use direct HTTP requests if possible. The "<path>" argument is used |
| 137 | for retrieving the logs, as well as for the contents. |
| 138 | + |
| 139 | There's no safe way to automatically find out which of these options to |
| 140 | use, so you need to try both. Usually, the one that's wrong will die |
| 141 | with a 40x error pretty quickly. |
| 142 | |
| 143 | <SVN_repository_URL>:: |
| 144 | The URL of the SVN module you want to import. For local |
| 145 | repositories, use "file:///absolute/path". |
| 146 | + |
| 147 | If you're using the "-d" or "-D" option, this is the URL of the SVN |
| 148 | repository itself; it usually ends in "/svn". |
| 149 | |
Junio C Hamano | a6331a8 | 2006-01-22 07:50:33 | [diff] [blame] | 150 | <path>:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 151 | The path to the module you want to check out. |
| 152 | |
| 153 | -h:: |
| 154 | Print a short usage message and exit. |
| 155 | |
| 156 | OUTPUT |
| 157 | ------ |
| 158 | If '-v' is specified, the script reports what it is doing. |
| 159 | |
| 160 | Otherwise, success is indicated the Unix way, i.e. by simply exiting with |
| 161 | a zero exit status. |
| 162 | |
| 163 | Author |
| 164 | ------ |
| 165 | Written by Matthias Urlichs <smurf@smurf.noris.de>, with help from |
| 166 | various participants of the git-list <git@vger.kernel.org>. |
| 167 | |
| 168 | Based on a cvs2git script by the same author. |
| 169 | |
| 170 | Documentation |
| 171 | -------------- |
| 172 | Documentation by Matthias Urlichs <smurf@smurf.noris.de>. |
| 173 | |
| 174 | GIT |
| 175 | --- |
| 176 | Part of the gitlink:git[7] suite |
| 177 | |