Mercurial > hg
annotate tests/test-convert.t @ 22098:2fb3c1c0b4ef
largefiles: synchronize lfdirstate with dirstate after automated committing
Before this patch, after successful "hg rebase" of the revision
removing largefiles, "hg status" may still show ""R" for such
largefiles unexpectedly.
"lfilesrepo.commit" executes the special code path for automated
committing while rebase/transplant, and lfdirstate entries for removed
files aren't updated in this code path, even after successful
committing.
Then, "R" entries still existing in lfdirstate cause unexpected "hg
status" output.
This patch synchronizes lfdirstate with dirstate after automated
committing.
This patch passes False as "normallookup" to "synclfdirstate", because
modified files in "files()" of the recent (= just committed) context
should be "normal"-ed.
This is a temporary way to fix with less changes. For fundamental
resolution of this kind of problems in the future, lfdirstate should
be updated with dirstate simultaneously. Hooking "markcommitted" of
ctx in "localrepository.commitctx" may achieve this.
This problem occurs, only when (1) the parent of the working directory
is rebased and (2) it removes largefiles, because:
- if the parent of the working directory isn't rebased, returning to
the initial revision (= update) after rebase hides this problem
- files added on "other" branch (= rebase target) are treated not as
"added" but as "modified" (= "normal" status and "unset"
timestamp) at merging
This patch tests also the status of added largefile, but it is only
for avoiding regression.
In addition to conditions above, "hg status" must not take existing
files to reproduce this problem, because existing files make
"match._files" not empty in "lfilesrepo.status" code path below:
def sfindirstate(f):
sf = lfutil.standin(f)
dirstate = self.dirstate
return sf in dirstate or sf in dirstate.dirs()
match._files = [f for f in match._files
if sfindirstate(f)]
Not empty "match._files" prevents "status" on lfdirstate from
returning the result containing problematic "R" files.
This is reason why "large1" (removed) and "largeX" (added) are checked
separately in this patch.
Problematic code path in "lfilesrepo.commit" is used also by "hg
transplant", but this problem doesn't occur at "hg transplant",
because invocation of "updatelfiles" after transplant-ing in
"overridetransplant" causes cleaning lfdirstate up.
This patch tests also "hg transplant" as same as "hg rebase", but it
is only for avoiding regression.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Mon, 11 Aug 2014 22:29:43 +0900 |
parents | 78b15ad2f968 |
children | 26f7c8033bed |
rev | line source |
---|---|
12510 | 1 $ cat >> $HGRCPATH <<EOF |
2 > [extensions] | |
3 > convert= | |
4 > [convert] | |
5 > hg.saverev=False | |
6 > EOF | |
7 $ hg help convert | |
8 hg convert [OPTION]... SOURCE [DEST [REVMAP]] | |
9 | |
10 convert a foreign SCM repository to a Mercurial one. | |
11 | |
12 Accepted source formats [identifiers]: | |
13 | |
14 - Mercurial [hg] | |
15 - CVS [cvs] | |
16 - Darcs [darcs] | |
17 - git [git] | |
18 - Subversion [svn] | |
19 - Monotone [mtn] | |
20 - GNU Arch [gnuarch] | |
21 - Bazaar [bzr] | |
22 - Perforce [p4] | |
23 | |
24 Accepted destination formats [identifiers]: | |
25 | |
26 - Mercurial [hg] | |
27 - Subversion [svn] (history on branches is not preserved) | |
28 | |
29 If no revision is given, all revisions will be converted. Otherwise, | |
30 convert will only import up to the named revision (given in a format | |
31 understood by the source). | |
32 | |
33 If no destination directory name is specified, it defaults to the basename | |
34 of the source with "-hg" appended. If the destination repository doesn't | |
35 exist, it will be created. | |
36 | |
37 By default, all sources except Mercurial will use --branchsort. Mercurial | |
38 uses --sourcesort to preserve original revision numbers order. Sort modes | |
39 have the following effects: | |
40 | |
41 --branchsort convert from parent to child revision when possible, which | |
13011
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
12924
diff
changeset
|
42 means branches are usually converted one after the other. |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
12924
diff
changeset
|
43 It generates more compact repositories. |
12510 | 44 --datesort sort revisions by date. Converted repositories have good- |
45 looking changelogs but are often an order of magnitude | |
46 larger than the same ones generated by --branchsort. | |
47 --sourcesort try to preserve source revisions order, only supported by | |
48 Mercurial sources. | |
18819
05acdf8e1f23
convert: add closesort algorithm to mercurial sources
Constantine Linnick <theaspect@gmail.com>
parents:
18324
diff
changeset
|
49 --closesort try to move closed revisions as close as possible to parent |
05acdf8e1f23
convert: add closesort algorithm to mercurial sources
Constantine Linnick <theaspect@gmail.com>
parents:
18324
diff
changeset
|
50 branches, only supported by Mercurial sources. |
12510 | 51 |
12924
2f1174b2c4fa
convert: better ReST markup in docstring
Martin Geisler <mg@aragost.com>
parents:
12922
diff
changeset
|
52 If "REVMAP" isn't given, it will be put in a default location |
2f1174b2c4fa
convert: better ReST markup in docstring
Martin Geisler <mg@aragost.com>
parents:
12922
diff
changeset
|
53 ("<dest>/.hg/shamap" by default). The "REVMAP" is a simple text file that |
12510 | 54 maps each source commit ID to the destination ID for that revision, like |
55 so: | |
56 | |
57 <source ID> <destination ID> | |
58 | |
59 If the file doesn't exist, it's automatically created. It's updated on | |
60 each commit copied, so "hg convert" can be interrupted and can be run | |
61 repeatedly to copy new commits. | |
62 | |
63 The authormap is a simple text file that maps each source commit author to | |
64 a destination commit author. It is handy for source SCMs that use unix | |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
17345
diff
changeset
|
65 logins to identify authors (e.g.: CVS). One line per author mapping and |
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
17345
diff
changeset
|
66 the line format is: |
12510 | 67 |
68 source author = destination author | |
69 | |
70 Empty lines and lines starting with a "#" are ignored. | |
71 | |
72 The filemap is a file that allows filtering and remapping of files and | |
73 directories. Each line can contain one of the following directives: | |
74 | |
75 include path/to/file-or-dir | |
76 | |
77 exclude path/to/file-or-dir | |
78 | |
79 rename path/to/source path/to/destination | |
80 | |
81 Comment lines start with "#". A specified path matches if it equals the | |
82 full relative name of a file or one of its parent directories. The | |
83 "include" or "exclude" directive with the longest matching path applies, | |
84 so line order does not matter. | |
85 | |
86 The "include" directive causes a file, or all files under a directory, to | |
20784
7f4cf938643d
convert: more clear documentation of the 'include' default of a 'include .'
Mads Kiilerich <madski@unity3d.com>
parents:
20008
diff
changeset
|
87 be included in the destination repository. The default if there are no |
7f4cf938643d
convert: more clear documentation of the 'include' default of a 'include .'
Mads Kiilerich <madski@unity3d.com>
parents:
20008
diff
changeset
|
88 "include" statements is to include everything. If there are any "include" |
7f4cf938643d
convert: more clear documentation of the 'include' default of a 'include .'
Mads Kiilerich <madski@unity3d.com>
parents:
20008
diff
changeset
|
89 statements, nothing else is included. The "exclude" directive causes files |
7f4cf938643d
convert: more clear documentation of the 'include' default of a 'include .'
Mads Kiilerich <madski@unity3d.com>
parents:
20008
diff
changeset
|
90 or directories to be omitted. The "rename" directive renames a file or |
7f4cf938643d
convert: more clear documentation of the 'include' default of a 'include .'
Mads Kiilerich <madski@unity3d.com>
parents:
20008
diff
changeset
|
91 directory if it is converted. To rename from a subdirectory into the root |
7f4cf938643d
convert: more clear documentation of the 'include' default of a 'include .'
Mads Kiilerich <madski@unity3d.com>
parents:
20008
diff
changeset
|
92 of the repository, use "." as the path to rename to. |
12510 | 93 |
94 The splicemap is a file that allows insertion of synthetic history, | |
95 letting you specify the parents of a revision. This is useful if you want | |
96 to e.g. give a Subversion merge two parents, or graft two disconnected | |
97 series of history together. Each entry contains a key, followed by a | |
98 space, followed by one or two comma-separated values: | |
99 | |
100 key parent1, parent2 | |
101 | |
102 The key is the revision ID in the source revision control system whose | |
103 parents should be modified (same format as a key in .hg/shamap). The | |
104 values are the revision IDs (in either the source or destination revision | |
105 control system) that should be used as the new parents for that node. For | |
106 example, if you have merged "release-1.0" into "trunk", then you should | |
107 specify the revision on "trunk" as the first parent and the one on the | |
108 "release-1.0" branch as the second. | |
109 | |
110 The branchmap is a file that allows you to rename a branch when it is | |
111 being brought in from whatever external repository. When used in | |
112 conjunction with a splicemap, it allows for a powerful combination to help | |
113 fix even the most badly mismanaged repositories and turn them into nicely | |
114 structured Mercurial repositories. The branchmap contains lines of the | |
115 form: | |
116 | |
117 original_branch_name new_branch_name | |
118 | |
119 where "original_branch_name" is the name of the branch in the source | |
120 repository, and "new_branch_name" is the name of the branch is the | |
121 destination repository. No whitespace is allowed in the branch names. This | |
122 can be used to (for instance) move code in one repository from "default" | |
123 to a named branch. | |
124 | |
125 Mercurial Source | |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17251
diff
changeset
|
126 ################ |
12510 | 127 |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
128 The Mercurial source recognizes the following configuration options, which |
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
129 you can set on the command line with "--config": |
12510 | 130 |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
131 convert.hg.ignoreerrors |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
132 ignore integrity errors when reading. Use it to fix |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
133 Mercurial repositories with missing revlogs, by converting |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
134 from and to Mercurial. Default is False. |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
135 convert.hg.saverev |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
136 store original revision ID in changeset (forces target IDs |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
137 to change). It takes a boolean argument and defaults to |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
138 False. |
19891
e271970b9821
convert: introduce hg.revs to replace hg.startrev and --rev with a revset
Mads Kiilerich <madski@unity3d.com>
parents:
19864
diff
changeset
|
139 convert.hg.revs |
e271970b9821
convert: introduce hg.revs to replace hg.startrev and --rev with a revset
Mads Kiilerich <madski@unity3d.com>
parents:
19864
diff
changeset
|
140 revset specifying the source revisions to convert. |
12510 | 141 |
142 CVS Source | |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17251
diff
changeset
|
143 ########## |
12510 | 144 |
145 CVS source will use a sandbox (i.e. a checked-out copy) from CVS to | |
146 indicate the starting point of what will be converted. Direct access to | |
147 the repository files is not needed, unless of course the repository is | |
12924
2f1174b2c4fa
convert: better ReST markup in docstring
Martin Geisler <mg@aragost.com>
parents:
12922
diff
changeset
|
148 ":local:". The conversion uses the top level directory in the sandbox to |
12510 | 149 find the CVS repository, and then uses CVS rlog commands to find files to |
150 convert. This means that unless a filemap is given, all files under the | |
151 starting directory will be converted, and that any directory | |
152 reorganization in the CVS sandbox is ignored. | |
153 | |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
154 The following options can be used with "--config": |
12510 | 155 |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
156 convert.cvsps.cache |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
157 Set to False to disable remote log caching, for testing and |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
158 debugging purposes. Default is True. |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
159 convert.cvsps.fuzz |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
160 Specify the maximum time (in seconds) that is allowed |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
161 between commits with identical user and log message in a |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
162 single changeset. When very large files were checked in as |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
163 part of a changeset then the default may not be long enough. |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
164 The default is 60. |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
165 convert.cvsps.mergeto |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
166 Specify a regular expression to which commit log messages |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
167 are matched. If a match occurs, then the conversion process |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
168 will insert a dummy revision merging the branch on which |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
169 this log message occurs to the branch indicated in the |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
170 regex. Default is "{{mergetobranch ([-\w]+)}}" |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
171 convert.cvsps.mergefrom |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
172 Specify a regular expression to which commit log messages |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
173 are matched. If a match occurs, then the conversion process |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
174 will add the most recent revision on the branch indicated in |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
175 the regex as the second parent of the changeset. Default is |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
176 "{{mergefrombranch ([-\w]+)}}" |
17974
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
177 convert.localtimezone |
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
178 use local time (as determined by the TZ environment |
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
179 variable) for changeset date/times. The default is False |
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
180 (use UTC). |
18321
c51d2bc7a5d7
convert: correct 'hooks' section name in online help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17837
diff
changeset
|
181 hooks.cvslog Specify a Python function to be called at the end of |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
182 gathering the CVS log. The function is passed a list with |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
183 the log entries, and can modify the entries in-place, or add |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
184 or delete them. |
18321
c51d2bc7a5d7
convert: correct 'hooks' section name in online help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17837
diff
changeset
|
185 hooks.cvschangesets |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
186 Specify a Python function to be called after the changesets |
17251
98166640b356
help: fix some instances of 'the the'
Mads Kiilerich <mads@kiilerich.com>
parents:
17002
diff
changeset
|
187 are calculated from the CVS log. The function is passed a |
98166640b356
help: fix some instances of 'the the'
Mads Kiilerich <mads@kiilerich.com>
parents:
17002
diff
changeset
|
188 list with the changeset entries, and can modify the |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
189 changesets in-place, or add or delete them. |
12510 | 190 |
191 An additional "debugcvsps" Mercurial command allows the builtin changeset | |
192 merging code to be run without doing a conversion. Its parameters and | |
193 output are similar to that of cvsps 2.1. Please see the command help for | |
194 more details. | |
195 | |
196 Subversion Source | |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17251
diff
changeset
|
197 ################# |
12510 | 198 |
199 Subversion source detects classical trunk/branches/tags layouts. By | |
200 default, the supplied "svn://repo/path/" source URL is converted as a | |
201 single branch. If "svn://repo/path/trunk" exists it replaces the default | |
202 branch. If "svn://repo/path/branches" exists, its subdirectories are | |
203 listed as possible branches. If "svn://repo/path/tags" exists, it is | |
204 looked for tags referencing converted branches. Default "trunk", | |
205 "branches" and "tags" values can be overridden with following options. Set | |
206 them to paths relative to the source URL, or leave them blank to disable | |
207 auto detection. | |
208 | |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
209 The following options can be set with "--config": |
12510 | 210 |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
211 convert.svn.branches |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
212 specify the directory containing branches. The default is |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
213 "branches". |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
214 convert.svn.tags |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
215 specify the directory containing tags. The default is |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
216 "tags". |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
217 convert.svn.trunk |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
218 specify the name of the trunk branch. The default is |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
219 "trunk". |
17974
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
220 convert.localtimezone |
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
221 use local time (as determined by the TZ environment |
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
222 variable) for changeset date/times. The default is False |
337d728e644f
convert: add config option to use the local time zone
Julian Cowley <julian@lava.net>
parents:
17837
diff
changeset
|
223 (use UTC). |
12510 | 224 |
225 Source history can be retrieved starting at a specific revision, instead | |
226 of being integrally converted. Only single branch conversions are | |
227 supported. | |
228 | |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
229 convert.svn.startrev |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
230 specify start Subversion revision number. The default is 0. |
12510 | 231 |
232 Perforce Source | |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17251
diff
changeset
|
233 ############### |
12510 | 234 |
235 The Perforce (P4) importer can be given a p4 depot path or a client | |
236 specification as source. It will convert all files in the source to a flat | |
237 Mercurial repository, ignoring labels, branches and integrations. Note | |
238 that when a depot path is given you then usually should specify a target | |
12924
2f1174b2c4fa
convert: better ReST markup in docstring
Martin Geisler <mg@aragost.com>
parents:
12922
diff
changeset
|
239 directory, because otherwise the target may be named "...-hg". |
12510 | 240 |
241 It is possible to limit the amount of source history to be converted by | |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
242 specifying an initial Perforce revision: |
12510 | 243 |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
244 convert.p4.startrev |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
245 specify initial Perforce revision (a Perforce changelist |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
246 number). |
12510 | 247 |
248 Mercurial Destination | |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17251
diff
changeset
|
249 ##################### |
12510 | 250 |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
251 The following options are supported: |
12510 | 252 |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
253 convert.hg.clonebranches |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
254 dispatch source branches in separate clones. The default is |
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
255 False. |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
256 convert.hg.tagsbranch |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
257 branch name for tag revisions, defaults to "default". |
12922
58f0c60b7f40
convert: use field list instead of option list in help
Erik Zielke <ez@aragost.com>
parents:
12787
diff
changeset
|
258 convert.hg.usebranchnames |
15861
ee8f5e4ce7b8
minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com>
parents:
15443
diff
changeset
|
259 preserve branch names. The default is True. |
12510 | 260 |
261 options: | |
262 | |
15145
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
263 -s --source-type TYPE source repository type |
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
264 -d --dest-type TYPE destination repository type |
19864
1ce3f56b879f
convert: fix description of 'convert --rev'
Mads Kiilerich <madski@unity3d.com>
parents:
18819
diff
changeset
|
265 -r --rev REV import up to source revision REV |
15145
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
266 -A --authormap FILE remap usernames using this file |
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
267 --filemap FILE remap file names using contents of file |
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
268 --splicemap FILE splice synthesized history into place |
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
269 --branchmap FILE change branch names while converting |
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
270 --branchsort try to sort changesets by branches |
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
271 --datesort try to sort changesets by date |
ff26712a0c50
help: use RST to format option lists
Matt Mackall <mpm@selenic.com>
parents:
13494
diff
changeset
|
272 --sourcesort preserve source changesets order |
18819
05acdf8e1f23
convert: add closesort algorithm to mercurial sources
Constantine Linnick <theaspect@gmail.com>
parents:
18324
diff
changeset
|
273 --closesort try to reorder closed revisions |
12510 | 274 |
17837
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17424
diff
changeset
|
275 use "hg -v help convert" to show the global options |
12510 | 276 $ hg init a |
277 $ cd a | |
278 $ echo a > a | |
279 $ hg ci -d'0 0' -Ama | |
280 adding a | |
281 $ hg cp a b | |
282 $ hg ci -d'1 0' -mb | |
283 $ hg rm a | |
284 $ hg ci -d'2 0' -mc | |
285 $ hg mv b a | |
286 $ hg ci -d'3 0' -md | |
287 $ echo a >> a | |
288 $ hg ci -d'4 0' -me | |
289 $ cd .. | |
290 $ hg convert a 2>&1 | grep -v 'subversion python bindings could not be loaded' | |
291 assuming destination a-hg | |
292 initializing destination a-hg repository | |
293 scanning source... | |
294 sorting... | |
295 converting... | |
296 4 a | |
297 3 b | |
298 2 c | |
299 1 d | |
300 0 e | |
301 $ hg --cwd a-hg pull ../a | |
302 pulling from ../a | |
303 searching for changes | |
304 no changes found | |
7905
d596b1f2935a
convert: missing p4 tool is only slightly fatal
Mads Kiilerich <mads@kiilerich.com>
parents:
5805
diff
changeset
|
305 |
16986
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
306 conversion to existing file should fail |
12510 | 307 |
16986
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
308 $ touch bogusfile |
12510 | 309 $ hg convert a bogusfile |
310 initializing destination bogusfile repository | |
311 abort: cannot create new bundle repository | |
312 [255] | |
16986
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
313 |
20008
e54a078153f7
tests: skip tests that require not having root (issue4089)
Matt Mackall <mpm@selenic.com>
parents:
19891
diff
changeset
|
314 #if unix-permissions no-root |
16986
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
315 |
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
316 conversion to dir without permissions should fail |
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
317 |
12510 | 318 $ mkdir bogusdir |
319 $ chmod 000 bogusdir | |
320 | |
321 $ hg convert a bogusdir | |
18227
720308f741cb
dispatch: show empty filename in OSError aborts
Mads Kiilerich <mads@kiilerich.com>
parents:
17974
diff
changeset
|
322 abort: Permission denied: 'bogusdir' |
12510 | 323 [255] |
324 | |
16986
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
325 user permissions should succeed |
9962
a7178eccf2dc
convert: better error on invalid repository type
Patrick Mezard <pmezard@gmail.com>
parents:
8674
diff
changeset
|
326 |
12510 | 327 $ chmod 700 bogusdir |
328 $ hg convert a bogusdir | |
329 initializing destination bogusdir repository | |
330 scanning source... | |
331 sorting... | |
332 converting... | |
333 4 a | |
334 3 b | |
335 2 c | |
336 1 d | |
337 0 e | |
338 | |
16986
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
339 #endif |
79902f7e27df
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
16107
diff
changeset
|
340 |
12510 | 341 test pre and post conversion actions |
342 | |
343 $ echo 'include b' > filemap | |
344 $ hg convert --debug --filemap filemap a partialb | \ | |
345 > grep 'run hg' | |
346 run hg source pre-conversion action | |
347 run hg sink pre-conversion action | |
348 run hg sink post-conversion action | |
349 run hg source post-conversion action | |
350 | |
351 converting empty dir should fail "nicely | |
352 | |
353 $ mkdir emptydir | |
354 | |
355 override $PATH to ensure p4 not visible; use $PYTHON in case we're | |
356 running from a devel copy, not a temp installation | |
9962
a7178eccf2dc
convert: better error on invalid repository type
Patrick Mezard <pmezard@gmail.com>
parents:
8674
diff
changeset
|
357 |
12510 | 358 $ PATH="$BINDIR" $PYTHON "$BINDIR"/hg convert emptydir |
359 assuming destination emptydir-hg | |
360 initializing destination emptydir-hg repository | |
361 emptydir does not look like a CVS checkout | |
362 emptydir does not look like a Git repository | |
363 emptydir does not look like a Subversion repository | |
364 emptydir is not a local Mercurial repository | |
365 emptydir does not look like a darcs repository | |
366 emptydir does not look like a monotone repository | |
367 emptydir does not look like a GNU Arch repository | |
368 emptydir does not look like a Bazaar repository | |
369 cannot find required "p4" tool | |
370 abort: emptydir: missing or unsupported repository | |
371 [255] | |
372 | |
373 convert with imaginary source type | |
374 | |
375 $ hg convert --source-type foo a a-foo | |
376 initializing destination a-foo repository | |
377 abort: foo: invalid source repository type | |
378 [255] | |
379 | |
380 convert with imaginary sink type | |
10577
d5bd1beff794
store: only add new entries to the fncache file
Adrian Buehlmann <adrian@cadifra.com>
parents:
9962
diff
changeset
|
381 |
12510 | 382 $ hg convert --dest-type foo a a-foo |
383 abort: foo: invalid destination repository type | |
384 [255] | |
385 | |
386 testing: convert must not produce duplicate entries in fncache | |
10885
9e4d120e3c32
convert/subversion: fix default URL checker prototype
Patrick Mezard <pmezard@gmail.com>
parents:
10775
diff
changeset
|
387 |
12510 | 388 $ hg convert a b |
389 initializing destination b repository | |
390 scanning source... | |
391 sorting... | |
392 converting... | |
393 4 a | |
394 3 b | |
395 2 c | |
396 1 d | |
397 0 e | |
398 | |
399 contents of fncache file: | |
400 | |
13389
3efc99ac2ac4
tests: sort fncache
Adrian Buehlmann <adrian@cadifra.com>
parents:
13011
diff
changeset
|
401 $ cat b/.hg/store/fncache | sort |
12510 | 402 data/a.i |
403 data/b.i | |
404 | |
405 test bogus URL | |
406 | |
407 $ hg convert -q bzr+ssh://foobar@selenic.com/baz baz | |
408 abort: bzr+ssh://foobar@selenic.com/baz: missing or unsupported repository | |
409 [255] | |
17002
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
410 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
411 test revset converted() lookup |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
412 |
17345
4f8054d3171b
check-code: fix check for trailing whitespace on sh command lines
Mads Kiilerich <mads@kiilerich.com>
parents:
17267
diff
changeset
|
413 $ hg --config convert.hg.saverev=True convert a c |
17002
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
414 initializing destination c repository |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
415 scanning source... |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
416 sorting... |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
417 converting... |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
418 4 a |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
419 3 b |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
420 2 c |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
421 1 d |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
422 0 e |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
423 $ echo f > c/f |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
424 $ hg -R c ci -d'0 0' -Amf |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
425 adding f |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
426 created new head |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
427 $ hg -R c log -r "converted(09d945a62ce6)" |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
428 changeset: 1:98c3dd46a874 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
429 user: test |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
430 date: Thu Jan 01 00:00:01 1970 +0000 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
431 summary: b |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
432 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
433 $ hg -R c log -r "converted()" |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
434 changeset: 0:31ed57b2037c |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
435 user: test |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
436 date: Thu Jan 01 00:00:00 1970 +0000 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
437 summary: a |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
438 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
439 changeset: 1:98c3dd46a874 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
440 user: test |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
441 date: Thu Jan 01 00:00:01 1970 +0000 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
442 summary: b |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
443 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
444 changeset: 2:3b9ca06ef716 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
445 user: test |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
446 date: Thu Jan 01 00:00:02 1970 +0000 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
447 summary: c |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
448 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
449 changeset: 3:4e0debd37cf2 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
450 user: test |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
451 date: Thu Jan 01 00:00:03 1970 +0000 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
452 summary: d |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
453 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
454 changeset: 4:9de3bc9349c5 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
455 user: test |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
456 date: Thu Jan 01 00:00:04 1970 +0000 |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
457 summary: e |
0eb522625eb2
revset: add a predicate for finding converted changesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
16986
diff
changeset
|
458 |