convert/bzr: make it work with filemaps (
issue1631)
The bzr converter maintains a child -> parents mapping and drop entries
whenever a child is read. It does not work with filemaps, getchangedfiles() may
be called more than once when filtered files belong to merge revisions.
getchanges() still works that way but it is not clear whether a similar issue
can arise when interacting with merges.
% create and rename on the same file in the same step
a => b
c => d
e => f
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Initial add: a, c, e
0 rename a into b, create a, rename c into d
o 1 "rename a into b, create a, rename c into d" files: a b c d e f
|
o 0 "Initial add: a, c, e" files: a c e
% manifest
a
b
d
f
% test --rev option
initializing destination source-1-hg repository
scanning source...
sorting...
converting...
0 Initial add: a, c, e
o 0 "Initial add: a, c, e" files: a c e
% test with filemap
initializing destination source-filemap-hg repository
scanning source...
sorting...
converting...
1 Initial add: a, c, e
0 rename a into b, create a, rename c into d
b
d
f
% merge
initializing destination source-hg repository
scanning source...
sorting...
converting...
3 Initial add
2 Editing a
1 Editing b
0 Merged improve branch
o 3 "Merged improve branch" files:
|\
| o 2 "Editing b" files: b
| |
o | 1 "Editing a" files: a
|/
o 0 "Initial add" files: a b
% symlinks and executable files
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Initial setup
0 Symlink changed, x bits changed
% manifest of 0
644 @ altname
644 d/a
755 * program
644 @ syma
% manifest of tip
644 @ altname
644 d/a
755 * newprog
644 program
644 @ syma