Mercurial > hg
comparison hgext/convert/__init__.py @ 7989:468ab22785aa
convert: word-wrap help texts at 70 characters
author | Martin Geisler <mg@daimi.au.dk> |
---|---|
date | Sat, 04 Apr 2009 23:16:55 +0200 |
parents | 7b813bdbd5d0 |
children | 58ba4b86ae13 |
comparison
equal
deleted
inserted
replaced
7988:0447939b4b97 | 7989:468ab22785aa |
---|---|
30 | 30 |
31 Accepted destination formats [identifiers]: | 31 Accepted destination formats [identifiers]: |
32 - Mercurial [hg] | 32 - Mercurial [hg] |
33 - Subversion [svn] (history on branches is not preserved) | 33 - Subversion [svn] (history on branches is not preserved) |
34 | 34 |
35 If no revision is given, all revisions will be converted. Otherwise, | 35 If no revision is given, all revisions will be converted. |
36 convert will only import up to the named revision (given in a format | 36 Otherwise, convert will only import up to the named revision |
37 understood by the source). | 37 (given in a format understood by the source). |
38 | 38 |
39 If no destination directory name is specified, it defaults to the | 39 If no destination directory name is specified, it defaults to the |
40 basename of the source with '-hg' appended. If the destination | 40 basename of the source with '-hg' appended. If the destination |
41 repository doesn't exist, it will be created. | 41 repository doesn't exist, it will be created. |
42 | 42 |
43 If <REVMAP> isn't given, it will be put in a default location | 43 If <REVMAP> isn't given, it will be put in a default location |
44 (<dest>/.hg/shamap by default). The <REVMAP> is a simple text | 44 (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file |
45 file that maps each source commit ID to the destination ID for | 45 that maps each source commit ID to the destination ID for that |
46 that revision, like so: | 46 revision, like so: |
47 <source ID> <destination ID> | 47 <source ID> <destination ID> |
48 | 48 |
49 If the file doesn't exist, it's automatically created. It's updated | 49 If the file doesn't exist, it's automatically created. It's |
50 on each commit copied, so convert-repo can be interrupted and can | 50 updated on each commit copied, so convert-repo can be interrupted |
51 be run repeatedly to copy new commits. | 51 and can be run repeatedly to copy new commits. |
52 | 52 |
53 The [username mapping] file is a simple text file that maps each source | 53 The [username mapping] file is a simple text file that maps each |
54 commit author to a destination commit author. It is handy for source SCMs | 54 source commit author to a destination commit author. It is handy |
55 that use unix logins to identify authors (eg: CVS). One line per author | 55 for source SCMs that use unix logins to identify authors (eg: |
56 mapping and the line format is: | 56 CVS). One line per author mapping and the line format is: |
57 srcauthor=whatever string you want | 57 srcauthor=whatever string you want |
58 | 58 |
59 The filemap is a file that allows filtering and remapping of files | 59 The filemap is a file that allows filtering and remapping of files |
60 and directories. Comment lines start with '#'. Each line can | 60 and directories. Comment lines start with '#'. Each line can |
61 contain one of the following directives: | 61 contain one of the following directives: |
68 | 68 |
69 The 'include' directive causes a file, or all files under a | 69 The 'include' directive causes a file, or all files under a |
70 directory, to be included in the destination repository, and the | 70 directory, to be included in the destination repository, and the |
71 exclusion of all other files and dirs not explicitely included. | 71 exclusion of all other files and dirs not explicitely included. |
72 The 'exclude' directive causes files or directories to be omitted. | 72 The 'exclude' directive causes files or directories to be omitted. |
73 The 'rename' directive renames a file or directory. To rename from a | 73 The 'rename' directive renames a file or directory. To rename from |
74 subdirectory into the root of the repository, use '.' as the path to | 74 a subdirectory into the root of the repository, use '.' as the |
75 rename to. | 75 path to rename to. |
76 | 76 |
77 The splicemap is a file that allows insertion of synthetic | 77 The splicemap is a file that allows insertion of synthetic |
78 history, letting you specify the parents of a revision. This is | 78 history, letting you specify the parents of a revision. This is |
79 useful if you want to e.g. give a Subversion merge two parents, or | 79 useful if you want to e.g. give a Subversion merge two parents, or |
80 graft two disconnected series of history together. Each entry | 80 graft two disconnected series of history together. Each entry |
81 contains a key, followed by a space, followed by one or two | 81 contains a key, followed by a space, followed by one or two |
82 comma-separated values. The key is the revision ID in the | 82 comma-separated values. The key is the revision ID in the source |
83 source revision control system whose parents should be modified | 83 revision control system whose parents should be modified (same |
84 (same format as a key in .hg/shamap). The values are the revision | 84 format as a key in .hg/shamap). The values are the revision IDs |
85 IDs (in either the source or destination revision control system) | 85 (in either the source or destination revision control system) that |
86 that should be used as the new parents for that node. | 86 should be used as the new parents for that node. |
87 | 87 |
88 Mercurial Source | 88 Mercurial Source |
89 ----------------- | 89 ----------------- |
90 | 90 |
91 --config convert.hg.ignoreerrors=False (boolean) | 91 --config convert.hg.ignoreerrors=False (boolean) |
92 ignore integrity errors when reading. Use it to fix Mercurial | 92 ignore integrity errors when reading. Use it to fix Mercurial |
93 repositories with missing revlogs, by converting from and to | 93 repositories with missing revlogs, by converting from and to |
94 Mercurial. | 94 Mercurial. |
95 --config convert.hg.saverev=False (boolean) | 95 --config convert.hg.saverev=False (boolean) |
96 store original revision ID in changeset (forces target IDs to change) | 96 store original revision ID in changeset (forces target IDs to |
97 change) | |
97 --config convert.hg.startrev=0 (hg revision identifier) | 98 --config convert.hg.startrev=0 (hg revision identifier) |
98 convert start revision and its descendants | 99 convert start revision and its descendants |
99 | 100 |
100 CVS Source | 101 CVS Source |
101 ---------- | 102 ---------- |
102 | 103 |
103 CVS source will use a sandbox (i.e. a checked-out copy) from CVS | 104 CVS source will use a sandbox (i.e. a checked-out copy) from CVS |
104 to indicate the starting point of what will be converted. Direct | 105 to indicate the starting point of what will be converted. Direct |
105 access to the repository files is not needed, unless of course | 106 access to the repository files is not needed, unless of course the |
106 the repository is :local:. The conversion uses the top level | 107 repository is :local:. The conversion uses the top level directory |
107 directory in the sandbox to find the CVS repository, and then uses | 108 in the sandbox to find the CVS repository, and then uses CVS rlog |
108 CVS rlog commands to find files to convert. This means that unless | 109 commands to find files to convert. This means that unless a |
109 a filemap is given, all files under the starting directory will be | 110 filemap is given, all files under the starting directory will be |
110 converted, and that any directory reorganisation in the CVS | 111 converted, and that any directory reorganisation in the CVS |
111 sandbox is ignored. | 112 sandbox is ignored. |
112 | 113 |
113 Because CVS does not have changesets, it is necessary to collect | 114 Because CVS does not have changesets, it is necessary to collect |
114 individual commits to CVS and merge them into changesets. CVS | 115 individual commits to CVS and merge them into changesets. CVS |
121 | 122 |
122 Internal cvsps is selected by setting | 123 Internal cvsps is selected by setting |
123 --config convert.cvsps=builtin | 124 --config convert.cvsps=builtin |
124 and has a few more configurable options: | 125 and has a few more configurable options: |
125 --config convert.cvsps.fuzz=60 (integer) | 126 --config convert.cvsps.fuzz=60 (integer) |
126 Specify the maximum time (in seconds) that is allowed between | 127 Specify the maximum time (in seconds) that is allowed |
127 commits with identical user and log message in a single | 128 between commits with identical user and log message in a |
128 changeset. When very large files were checked in as part | 129 single changeset. When very large files were checked in as |
129 of a changeset then the default may not be long enough. | 130 part of a changeset then the default may not be long |
131 enough. | |
130 --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}' | 132 --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}' |
131 Specify a regular expression to which commit log messages are | 133 Specify a regular expression to which commit log messages |
132 matched. If a match occurs, then the conversion process will | 134 are matched. If a match occurs, then the conversion |
133 insert a dummy revision merging the branch on which this log | 135 process will insert a dummy revision merging the branch on |
134 message occurs to the branch indicated in the regex. | 136 which this log message occurs to the branch indicated in |
137 the regex. | |
135 --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}' | 138 --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}' |
136 Specify a regular expression to which commit log messages are | 139 Specify a regular expression to which commit log messages |
137 matched. If a match occurs, then the conversion process will | 140 are matched. If a match occurs, then the conversion |
138 add the most recent revision on the branch indicated in the | 141 process will add the most recent revision on the branch |
139 regex as the second parent of the changeset. | 142 indicated in the regex as the second parent of the |
140 | 143 changeset. |
141 The hgext/convert/cvsps wrapper script allows the builtin changeset | 144 |
142 merging code to be run without doing a conversion. Its parameters and | 145 The hgext/convert/cvsps wrapper script allows the builtin |
143 output are similar to that of cvsps 2.1. | 146 changeset merging code to be run without doing a conversion. Its |
147 parameters and output are similar to that of cvsps 2.1. | |
144 | 148 |
145 Subversion Source | 149 Subversion Source |
146 ----------------- | 150 ----------------- |
147 | 151 |
148 Subversion source detects classical trunk/branches/tags layouts. | 152 Subversion source detects classical trunk/branches/tags layouts. |
149 By default, the supplied "svn://repo/path/" source URL is | 153 By default, the supplied "svn://repo/path/" source URL is |
150 converted as a single branch. If "svn://repo/path/trunk" exists | 154 converted as a single branch. If "svn://repo/path/trunk" exists it |
151 it replaces the default branch. If "svn://repo/path/branches" | 155 replaces the default branch. If "svn://repo/path/branches" exists, |
152 exists, its subdirectories are listed as possible branches. If | 156 its subdirectories are listed as possible branches. If |
153 "svn://repo/path/tags" exists, it is looked for tags referencing | 157 "svn://repo/path/tags" exists, it is looked for tags referencing |
154 converted branches. Default "trunk", "branches" and "tags" values | 158 converted branches. Default "trunk", "branches" and "tags" values |
155 can be overriden with following options. Set them to paths | 159 can be overriden with following options. Set them to paths |
156 relative to the source URL, or leave them blank to disable | 160 relative to the source URL, or leave them blank to disable |
157 autodetection. | 161 autodetection. |
171 specify start Subversion revision. | 175 specify start Subversion revision. |
172 | 176 |
173 Perforce Source | 177 Perforce Source |
174 --------------- | 178 --------------- |
175 | 179 |
176 The Perforce (P4) importer can be given a p4 depot path or a client | 180 The Perforce (P4) importer can be given a p4 depot path or a |
177 specification as source. It will convert all files in the source to | 181 client specification as source. It will convert all files in the |
178 a flat Mercurial repository, ignoring labels, branches and integrations. | 182 source to a flat Mercurial repository, ignoring labels, branches |
179 Note that when a depot path is given you then usually should specify a | 183 and integrations. Note that when a depot path is given you then |
180 target directory, because otherwise the target may be named ...-hg. | 184 usually should specify a target directory, because otherwise the |
181 | 185 target may be named ...-hg. |
182 It is possible to limit the amount of source history to be converted | 186 |
183 by specifying an initial Perforce revision. | 187 It is possible to limit the amount of source history to be |
188 converted by specifying an initial Perforce revision. | |
184 | 189 |
185 --config convert.p4.startrev=0 (perforce changelist number) | 190 --config convert.p4.startrev=0 (perforce changelist number) |
186 specify initial Perforce revision. | 191 specify initial Perforce revision. |
187 | 192 |
188 | 193 |
203 return subversion.debugsvnlog(ui, **opts) | 208 return subversion.debugsvnlog(ui, **opts) |
204 | 209 |
205 def debugcvsps(ui, *args, **opts): | 210 def debugcvsps(ui, *args, **opts): |
206 '''create changeset information from CVS | 211 '''create changeset information from CVS |
207 | 212 |
208 This command is intended as a debugging tool for the CVS to Mercurial | 213 This command is intended as a debugging tool for the CVS to |
209 converter, and can be used as a direct replacement for cvsps. | 214 Mercurial converter, and can be used as a direct replacement for |
210 | 215 cvsps. |
211 Hg debugcvsps reads the CVS rlog for current directory (or any named | 216 |
212 directory) in the CVS repository, and converts the log to a series of | 217 Hg debugcvsps reads the CVS rlog for current directory (or any |
213 changesets based on matching commit log entries and dates.''' | 218 named directory) in the CVS repository, and converts the log to a |
219 series of changesets based on matching commit log entries and | |
220 dates.''' | |
214 return cvsps.debugcvsps(ui, *args, **opts) | 221 return cvsps.debugcvsps(ui, *args, **opts) |
215 | 222 |
216 commands.norepo += " convert debugsvnlog debugcvsps" | 223 commands.norepo += " convert debugsvnlog debugcvsps" |
217 | 224 |
218 cmdtable = { | 225 cmdtable = { |