mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
convert/mtn: handle directory move into moved directory (issue1619/3)
This commit is contained in:
parent
6bbead8918
commit
f7e8a4c038
@ -160,6 +160,10 @@ class monotone_source(converter_source, commandline):
|
||||
continue
|
||||
if tofile.startswith(todir + '/'):
|
||||
renamed[tofile] = fromdir + tofile[len(todir):]
|
||||
# Avoid chained moves like:
|
||||
# d1(/a) => d3/d1(/a)
|
||||
# d2 => d3
|
||||
ignoremove[tofile] = 1
|
||||
for tofile, fromfile in renamed.items():
|
||||
self.ui.debug (_("copying file in renamed dir from '%s' to '%s'")
|
||||
% (fromfile, tofile), '\n')
|
||||
|
@ -88,6 +88,26 @@ mtn ci -m dirfilemove
|
||||
mtn mv dir3/a dir3/d1/a
|
||||
mtn mv dir3/d1 dir3/d2
|
||||
mtn ci -m dirfilemove2
|
||||
echo '% test directory move into another directory move'
|
||||
mkdir dir4
|
||||
mkdir dir5
|
||||
echo a > dir4/a
|
||||
mtn add dir4/a dir5
|
||||
mtn ci -m dirdirmove
|
||||
mtn mv dir5 dir6
|
||||
mtn mv dir4 dir6/dir4
|
||||
mtn ci -m dirdirmove2
|
||||
echo '% test diverging directory moves'
|
||||
mkdir -p dir7/dir9/dir8
|
||||
echo a > dir7/dir9/dir8/a
|
||||
echo b > dir7/dir9/b
|
||||
echo c > dir7/c
|
||||
mtn add -R dir7
|
||||
mtn ci -m divergentdirmove
|
||||
mtn mv dir7 dir7-2
|
||||
mtn mv dir7-2/dir9 dir9-2
|
||||
mtn mv dir9-2/dir8 dir8-2
|
||||
mtn ci -m divergentdirmove2
|
||||
cd ..
|
||||
|
||||
echo % convert incrementally
|
||||
@ -118,5 +138,9 @@ echo % check file remove with directory move
|
||||
hg manifest -r 5
|
||||
echo % check file move with directory move
|
||||
hg manifest -r 9
|
||||
echo % check file directory directory move
|
||||
hg manifest -r 11
|
||||
echo % check divergent directory moves
|
||||
hg manifest -r 13
|
||||
exit 0
|
||||
|
||||
|
@ -65,21 +65,58 @@ mtn: skipping dir3, already accounted for in workspace
|
||||
mtn: renaming dir3/d1 to dir3/d2 in workspace manifest
|
||||
mtn: beginning commit on branch 'com.selenic.test'
|
||||
mtn: committed revision 8b543a400d3ee7f6d4bb1835b9b9e3747c8cb632
|
||||
% test directory move into another directory move
|
||||
mtn: adding dir4 to workspace manifest
|
||||
mtn: adding dir4/a to workspace manifest
|
||||
mtn: adding dir5 to workspace manifest
|
||||
mtn: beginning commit on branch 'com.selenic.test'
|
||||
mtn: committed revision 466e0b2afc7a55aa2b4ab2f57cb240bb6cd66fc7
|
||||
mtn: renaming dir5 to dir6 in workspace manifest
|
||||
mtn: skipping dir6, already accounted for in workspace
|
||||
mtn: renaming dir4 to dir6/dir4 in workspace manifest
|
||||
mtn: beginning commit on branch 'com.selenic.test'
|
||||
mtn: committed revision 3d1f77ebad0c23a5d14911be3b670f990991b749
|
||||
% test diverging directory moves
|
||||
mtn: adding dir7 to workspace manifest
|
||||
mtn: adding dir7/c to workspace manifest
|
||||
mtn: adding dir7/dir9 to workspace manifest
|
||||
mtn: adding dir7/dir9/b to workspace manifest
|
||||
mtn: adding dir7/dir9/dir8 to workspace manifest
|
||||
mtn: adding dir7/dir9/dir8/a to workspace manifest
|
||||
mtn: beginning commit on branch 'com.selenic.test'
|
||||
mtn: committed revision 08a08511f18b428d840199b062de90d0396bc2ed
|
||||
mtn: renaming dir7 to dir7-2 in workspace manifest
|
||||
mtn: renaming dir7-2/dir9 to dir9-2 in workspace manifest
|
||||
mtn: renaming dir9-2/dir8 to dir8-2 in workspace manifest
|
||||
mtn: beginning commit on branch 'com.selenic.test'
|
||||
mtn: committed revision 4a736634505795f17786fffdf2c9cbf5b11df6f6
|
||||
% convert incrementally
|
||||
assuming destination repo.mtn-hg
|
||||
scanning source...
|
||||
sorting...
|
||||
converting...
|
||||
7 update2 "with" quotes
|
||||
6 createdir1
|
||||
5 movedir1
|
||||
4 movedir
|
||||
3 emptydir
|
||||
2 dropdirectory
|
||||
1 dirfilemove
|
||||
0 dirfilemove2
|
||||
7 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
@ 9 "dirfilemove2" files: dir3/a dir3/d2/a
|
||||
11 update2 "with" quotes
|
||||
10 createdir1
|
||||
9 movedir1
|
||||
8 movedir
|
||||
7 emptydir
|
||||
6 dropdirectory
|
||||
5 dirfilemove
|
||||
4 dirfilemove2
|
||||
3 dirdirmove
|
||||
2 dirdirmove2
|
||||
1 divergentdirmove
|
||||
0 divergentdirmove2
|
||||
11 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
@ 13 "divergentdirmove2" files: dir7-2/c dir7/c dir7/dir9/b dir7/dir9/dir8/a dir8-2/a dir9-2/b
|
||||
|
|
||||
o 12 "divergentdirmove" files: dir7/c dir7/dir9/b dir7/dir9/dir8/a
|
||||
|
|
||||
o 11 "dirdirmove2" files: dir4/a dir6/dir4/a
|
||||
|
|
||||
o 10 "dirdirmove" files: dir4/a
|
||||
|
|
||||
o 9 "dirfilemove2" files: dir3/a dir3/d2/a
|
||||
|
|
||||
o 8 "dirfilemove" files: dir3/a
|
||||
|
|
||||
@ -106,6 +143,10 @@ dir1/subdir2_other/file1
|
||||
dir2/a
|
||||
dir2/newfile
|
||||
dir3/d2/a
|
||||
dir6/dir4/a
|
||||
dir7-2/c
|
||||
dir8-2/a
|
||||
dir9-2/b
|
||||
e
|
||||
% contents
|
||||
a
|
||||
@ -135,3 +176,24 @@ dir2/a
|
||||
dir2/newfile
|
||||
dir3/d2/a
|
||||
e
|
||||
% check file directory directory move
|
||||
bin2
|
||||
dir1/subdir2/file1
|
||||
dir1/subdir2_other/file1
|
||||
dir2/a
|
||||
dir2/newfile
|
||||
dir3/d2/a
|
||||
dir6/dir4/a
|
||||
e
|
||||
% check divergent directory moves
|
||||
bin2
|
||||
dir1/subdir2/file1
|
||||
dir1/subdir2_other/file1
|
||||
dir2/a
|
||||
dir2/newfile
|
||||
dir3/d2/a
|
||||
dir6/dir4/a
|
||||
dir7-2/c
|
||||
dir8-2/a
|
||||
dir9-2/b
|
||||
e
|
||||
|
Loading…
Reference in New Issue
Block a user