comparison tests/test-convert.out @ 9058:b10cee4bd2c1

convert: wrapped docstrings at 78 characters
author Martin Geisler <mg@lazybytes.net>
date Tue, 07 Jul 2009 23:54:42 +0200
parents d2ef4f2b904a
children f459f09b4214
comparison
equal deleted inserted replaced
9057:07788bbb35e4 9058:b10cee4bd2c1
15 15
16 Accepted destination formats [identifiers]: 16 Accepted destination formats [identifiers]:
17 - Mercurial [hg] 17 - Mercurial [hg]
18 - Subversion [svn] (history on branches is not preserved) 18 - Subversion [svn] (history on branches is not preserved)
19 19
20 If no revision is given, all revisions will be converted. 20 If no revision is given, all revisions will be converted. Otherwise,
21 Otherwise, convert will only import up to the named revision 21 convert will only import up to the named revision (given in a format
22 (given in a format understood by the source). 22 understood by the source).
23 23
24 If no destination directory name is specified, it defaults to the 24 If no destination directory name is specified, it defaults to the basename
25 basename of the source with '-hg' appended. If the destination 25 of the source with '-hg' appended. If the destination repository doesn't
26 repository doesn't exist, it will be created. 26 exist, it will be created.
27 27
28 By default, all sources except Mercurial will use 28 By default, all sources except Mercurial will use --branchsort. Mercurial
29 --branchsort. Mercurial uses --sourcesort to preserve original 29 uses --sourcesort to preserve original revision numbers order. Sort modes
30 revision numbers order. Sort modes have the following effects: 30 have the following effects:
31 --branchsort: convert from parent to child revision when 31 --branchsort: convert from parent to child revision when possible, which
32 possible, which means branches are usually converted one after 32 means branches are usually converted one after the other. It generates
33 the other. It generates more compact repositories. 33 more compact repositories.
34 --datesort: sort revisions by date. Converted repositories have 34 --datesort: sort revisions by date. Converted repositories have
35 good-looking changelogs but are often an order of magnitude 35 good-looking changelogs but are often an order of magnitude larger
36 larger than the same ones generated by --branchsort. 36 than the same ones generated by --branchsort.
37 --sourcesort: try to preserve source revisions order, only 37 --sourcesort: try to preserve source revisions order, only supported by
38 supported by Mercurial sources. 38 Mercurial sources.
39 39
40 If <REVMAP> isn't given, it will be put in a default location 40 If <REVMAP> isn't given, it will be put in a default location
41 (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file 41 (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file that
42 that maps each source commit ID to the destination ID for that 42 maps each source commit ID to the destination ID for that revision, like
43 revision, like so: 43 so:
44
44 <source ID> <destination ID> 45 <source ID> <destination ID>
45 46
46 If the file doesn't exist, it's automatically created. It's 47 If the file doesn't exist, it's automatically created. It's updated on
47 updated on each commit copied, so convert-repo can be interrupted 48 each commit copied, so convert-repo can be interrupted and can be run
48 and can be run repeatedly to copy new commits. 49 repeatedly to copy new commits.
49 50
50 The [username mapping] file is a simple text file that maps each 51 The [username mapping] file is a simple text file that maps each source
51 source commit author to a destination commit author. It is handy 52 commit author to a destination commit author. It is handy for source SCMs
52 for source SCMs that use unix logins to identify authors (eg: 53 that use unix logins to identify authors (eg: CVS). One line per author
53 CVS). One line per author mapping and the line format is: 54 mapping and the line format is: srcauthor=whatever string you want
54 srcauthor=whatever string you want 55
55 56 The filemap is a file that allows filtering and remapping of files and
56 The filemap is a file that allows filtering and remapping of files 57 directories. Comment lines start with '#'. Each line can contain one of
57 and directories. Comment lines start with '#'. Each line can 58 the following directives:
58 contain one of the following directives:
59 59
60 include path/to/file 60 include path/to/file
61 61
62 exclude path/to/file 62 exclude path/to/file
63 63
64 rename from/file to/file 64 rename from/file to/file
65 65
66 The 'include' directive causes a file, or all files under a 66 The 'include' directive causes a file, or all files under a directory, to
67 directory, to be included in the destination repository, and the 67 be included in the destination repository, and the exclusion of all other
68 exclusion of all other files and directories not explicitly included. 68 files and directories not explicitly included. The 'exclude' directive
69 The 'exclude' directive causes files or directories to be omitted. 69 causes files or directories to be omitted. The 'rename' directive renames
70 The 'rename' directive renames a file or directory. To rename from 70 a file or directory. To rename from a subdirectory into the root of the
71 a subdirectory into the root of the repository, use '.' as the 71 repository, use '.' as the path to rename to.
72 path to rename to. 72
73 73 The splicemap is a file that allows insertion of synthetic history,
74 The splicemap is a file that allows insertion of synthetic 74 letting you specify the parents of a revision. This is useful if you want
75 history, letting you specify the parents of a revision. This is 75 to e.g. give a Subversion merge two parents, or graft two disconnected
76 useful if you want to e.g. give a Subversion merge two parents, or 76 series of history together. Each entry contains a key, followed by a
77 graft two disconnected series of history together. Each entry 77 space, followed by one or two comma-separated values. The key is the
78 contains a key, followed by a space, followed by one or two 78 revision ID in the source revision control system whose parents should be
79 comma-separated values. The key is the revision ID in the source 79 modified (same format as a key in .hg/shamap). The values are the revision
80 revision control system whose parents should be modified (same 80 IDs (in either the source or destination revision control system) that
81 format as a key in .hg/shamap). The values are the revision IDs
82 (in either the source or destination revision control system) that
83 should be used as the new parents for that node. 81 should be used as the new parents for that node.
84 82
85 The branchmap is a file that allows you to rename a branch when it is 83 The branchmap is a file that allows you to rename a branch when it is
86 being brought in from whatever external repository. When used in 84 being brought in from whatever external repository. When used in
87 conjunction with a splicemap, it allows for a powerful combination 85 conjunction with a splicemap, it allows for a powerful combination to help
88 to help fix even the most badly mismanaged repositories and turn them 86 fix even the most badly mismanaged repositories and turn them into nicely
89 into nicely structured Mercurial repositories. The branchmap contains 87 structured Mercurial repositories. The branchmap contains lines of the
90 lines of the form "original_branch_name new_branch_name". 88 form "original_branch_name new_branch_name". "original_branch_name" is the
91 "original_branch_name" is the name of the branch in the source 89 name of the branch in the source repository, and "new_branch_name" is the
92 repository, and "new_branch_name" is the name of the branch is the 90 name of the branch is the destination repository. This can be used to (for
93 destination repository. This can be used to (for instance) move code 91 instance) move code in one repository from "default" to a named branch.
94 in one repository from "default" to a named branch.
95 92
96 Mercurial Source 93 Mercurial Source
97 ----------------- 94 -----------------
98 95
99 --config convert.hg.ignoreerrors=False (boolean) 96 --config convert.hg.ignoreerrors=False (boolean)
100 ignore integrity errors when reading. Use it to fix Mercurial 97 ignore integrity errors when reading. Use it to fix Mercurial
101 repositories with missing revlogs, by converting from and to 98 repositories with missing revlogs, by converting from and to
102 Mercurial. 99 Mercurial.
103 --config convert.hg.saverev=False (boolean) 100 --config convert.hg.saverev=False (boolean)
104 store original revision ID in changeset (forces target IDs to 101 store original revision ID in changeset (forces target IDs to change)
105 change)
106 --config convert.hg.startrev=0 (hg revision identifier) 102 --config convert.hg.startrev=0 (hg revision identifier)
107 convert start revision and its descendants 103 convert start revision and its descendants
108 104
109 CVS Source 105 CVS Source
110 ---------- 106 ----------
111 107
112 CVS source will use a sandbox (i.e. a checked-out copy) from CVS 108 CVS source will use a sandbox (i.e. a checked-out copy) from CVS to
113 to indicate the starting point of what will be converted. Direct 109 indicate the starting point of what will be converted. Direct access to
114 access to the repository files is not needed, unless of course the 110 the repository files is not needed, unless of course the repository is
115 repository is :local:. The conversion uses the top level directory 111 :local:. The conversion uses the top level directory in the sandbox to
116 in the sandbox to find the CVS repository, and then uses CVS rlog 112 find the CVS repository, and then uses CVS rlog commands to find files to
117 commands to find files to convert. This means that unless a 113 convert. This means that unless a filemap is given, all files under the
118 filemap is given, all files under the starting directory will be 114 starting directory will be converted, and that any directory
119 converted, and that any directory reorganization in the CVS 115 reorganization in the CVS sandbox is ignored.
120 sandbox is ignored.
121 116
122 Because CVS does not have changesets, it is necessary to collect 117 Because CVS does not have changesets, it is necessary to collect
123 individual commits to CVS and merge them into changesets. CVS 118 individual commits to CVS and merge them into changesets. CVS source uses
124 source uses its internal changeset merging code by default but can 119 its internal changeset merging code by default but can be configured to
125 be configured to call the external 'cvsps' program by setting: 120 call the external 'cvsps' program by setting:
121
126 --config convert.cvsps='cvsps -A -u --cvs-direct -q' 122 --config convert.cvsps='cvsps -A -u --cvs-direct -q'
123
127 This option is deprecated and will be removed in Mercurial 1.4. 124 This option is deprecated and will be removed in Mercurial 1.4.
128 125
129 The options shown are the defaults. 126 The options shown are the defaults.
130 127
131 Internal cvsps is selected by setting 128 Internal cvsps is selected by setting
129
132 --config convert.cvsps=builtin 130 --config convert.cvsps=builtin
131
133 and has a few more configurable options: 132 and has a few more configurable options:
134 --config convert.cvsps.cache=True (boolean) 133 --config convert.cvsps.cache=True (boolean)
135 Set to False to disable remote log caching, for testing and 134 Set to False to disable remote log caching, for testing and
136 debugging purposes. 135 debugging purposes.
137 --config convert.cvsps.fuzz=60 (integer) 136 --config convert.cvsps.fuzz=60 (integer)
138 Specify the maximum time (in seconds) that is allowed 137 Specify the maximum time (in seconds) that is allowed between
139 between commits with identical user and log message in a 138 commits with identical user and log message in a single changeset.
140 single changeset. When very large files were checked in as 139 When very large files were checked in as part of a changeset then
141 part of a changeset then the default may not be long 140 the default may not be long enough.
142 enough.
143 --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}' 141 --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}'
144 Specify a regular expression to which commit log messages 142 Specify a regular expression to which commit log messages are
145 are matched. If a match occurs, then the conversion 143 matched. If a match occurs, then the conversion process will
146 process will insert a dummy revision merging the branch on 144 insert a dummy revision merging the branch on which this log
147 which this log message occurs to the branch indicated in 145 message occurs to the branch indicated in the regex.
148 the regex.
149 --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}' 146 --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}'
150 Specify a regular expression to which commit log messages 147 Specify a regular expression to which commit log messages are
151 are matched. If a match occurs, then the conversion 148 matched. If a match occurs, then the conversion process will add
152 process will add the most recent revision on the branch 149 the most recent revision on the branch indicated in the regex as
153 indicated in the regex as the second parent of the 150 the second parent of the changeset.
154 changeset. 151
155 152 The hgext/convert/cvsps wrapper script allows the builtin changeset
156 The hgext/convert/cvsps wrapper script allows the builtin 153 merging code to be run without doing a conversion. Its parameters and
157 changeset merging code to be run without doing a conversion. Its 154 output are similar to that of cvsps 2.1.
158 parameters and output are similar to that of cvsps 2.1.
159 155
160 Subversion Source 156 Subversion Source
161 ----------------- 157 -----------------
162 158
163 Subversion source detects classical trunk/branches/tags layouts. 159 Subversion source detects classical trunk/branches/tags layouts. By
164 By default, the supplied "svn://repo/path/" source URL is 160 default, the supplied "svn://repo/path/" source URL is converted as a
165 converted as a single branch. If "svn://repo/path/trunk" exists it 161 single branch. If "svn://repo/path/trunk" exists it replaces the default
166 replaces the default branch. If "svn://repo/path/branches" exists, 162 branch. If "svn://repo/path/branches" exists, its subdirectories are
167 its subdirectories are listed as possible branches. If 163 listed as possible branches. If "svn://repo/path/tags" exists, it is
168 "svn://repo/path/tags" exists, it is looked for tags referencing 164 looked for tags referencing converted branches. Default "trunk",
169 converted branches. Default "trunk", "branches" and "tags" values 165 "branches" and "tags" values can be overridden with following options. Set
170 can be overridden with following options. Set them to paths 166 them to paths relative to the source URL, or leave them blank to disable
171 relative to the source URL, or leave them blank to disable auto 167 auto detection.
172 detection.
173 168
174 --config convert.svn.branches=branches (directory name) 169 --config convert.svn.branches=branches (directory name)
175 specify the directory containing branches 170 specify the directory containing branches
176 --config convert.svn.tags=tags (directory name) 171 --config convert.svn.tags=tags (directory name)
177 specify the directory containing tags 172 specify the directory containing tags
178 --config convert.svn.trunk=trunk (directory name) 173 --config convert.svn.trunk=trunk (directory name)
179 specify the name of the trunk branch 174 specify the name of the trunk branch
180 175
181 Source history can be retrieved starting at a specific revision, 176 Source history can be retrieved starting at a specific revision, instead
182 instead of being integrally converted. Only single branch 177 of being integrally converted. Only single branch conversions are
183 conversions are supported. 178 supported.
184 179
185 --config convert.svn.startrev=0 (svn revision number) 180 --config convert.svn.startrev=0 (svn revision number)
186 specify start Subversion revision. 181 specify start Subversion revision.
187 182
188 Perforce Source 183 Perforce Source
189 --------------- 184 ---------------
190 185
191 The Perforce (P4) importer can be given a p4 depot path or a 186 The Perforce (P4) importer can be given a p4 depot path or a client
192 client specification as source. It will convert all files in the 187 specification as source. It will convert all files in the source to a flat
193 source to a flat Mercurial repository, ignoring labels, branches 188 Mercurial repository, ignoring labels, branches and integrations. Note
194 and integrations. Note that when a depot path is given you then 189 that when a depot path is given you then usually should specify a target
195 usually should specify a target directory, because otherwise the 190 directory, because otherwise the target may be named ...-hg.
196 target may be named ...-hg. 191
197 192 It is possible to limit the amount of source history to be converted by
198 It is possible to limit the amount of source history to be 193 specifying an initial Perforce revision.
199 converted by specifying an initial Perforce revision.
200 194
201 --config convert.p4.startrev=0 (perforce changelist number) 195 --config convert.p4.startrev=0 (perforce changelist number)
202 specify initial Perforce revision. 196 specify initial Perforce revision.
203 197
204 198