windows: avoid deleting non-empty reparse points
If a hg repository including working directory is a reparse point (directory
symlinked or a junction point), then using os.removedirs will remove the
reparse point erroneously. This is fixed by only removing directories if they
are empty.
created new head
--------------
test L:up a R:nc a b W: - 1 get local a to b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local e300d1c794ec+ remote 735846fee2d7
searching for copies back to rev 1
unmatched files in other:
b
all copies found (* = to merge, ! = divergent):
b -> a *
checking for directory renames
rev: versions differ -> m
a: remote copied to b -> m
preserving a for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging a and b to b
my b@e300d1c794ec+ other b@735846fee2d7 ancestor a@924404dff337
premerge successful
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@e300d1c794ec+ other rev@735846fee2d7 ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
a
C a
--------------
created new head
--------------
test L:nc a b R:up a W: - 2 get rem change to a and b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ac809aeed39a+ remote f4db7e329e71
searching for copies back to rev 1
unmatched files in local:
b
all copies found (* = to merge, ! = divergent):
b -> a *
checking for directory renames
a: remote is newer -> g
b: local copied to a -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
getting a
picked tool 'python ../merge' for b (binary False symlink False)
merging b and a to b
my b@ac809aeed39a+ other a@f4db7e329e71 ancestor a@924404dff337
premerge successful
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ac809aeed39a+ other rev@f4db7e329e71 ancestor rev@924404dff337
1 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M a
M b
a
--------------
created new head
--------------
test L:up a R:nm a b W: - 3 get local a change to b, remove a
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local e300d1c794ec+ remote e03727d2d66b
searching for copies back to rev 1
unmatched files in other:
b
all copies found (* = to merge, ! = divergent):
b -> a *
checking for directory renames
rev: versions differ -> m
a: remote moved to b -> m
preserving a for resolve of b
preserving rev for resolve of rev
removing a
picked tool 'python ../merge' for b (binary False symlink False)
merging a and b to b
my b@e300d1c794ec+ other b@e03727d2d66b ancestor a@924404dff337
premerge successful
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@e300d1c794ec+ other rev@e03727d2d66b ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
a
--------------
created new head
--------------
test L:nm a b R:up a W: - 4 get remote change to b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ecf3cb2a4219+ remote f4db7e329e71
searching for copies back to rev 1
unmatched files in local:
b
all copies found (* = to merge, ! = divergent):
b -> a *
checking for directory renames
b: local moved to a -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging b and a to b
my b@ecf3cb2a4219+ other a@f4db7e329e71 ancestor a@924404dff337
premerge successful
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ecf3cb2a4219+ other rev@f4db7e329e71 ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
a
--------------
created new head
--------------
test L: R:nc a b W: - 5 get b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local 94b33a1b7f2d+ remote 735846fee2d7
searching for copies back to rev 1
unmatched files in other:
b
all copies found (* = to merge, ! = divergent):
b -> a
checking for directory renames
rev: versions differ -> m
b: remote created -> g
preserving rev for resolve of rev
getting b
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@94b33a1b7f2d+ other rev@735846fee2d7 ancestor rev@924404dff337
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
C a
--------------
created new head
--------------
test L:nc a b R: W: - 6 nothing
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
searching for copies back to rev 1
unmatched files in local:
b
all copies found (* = to merge, ! = divergent):
b -> a
checking for directory renames
rev: versions differ -> m
preserving rev for resolve of rev
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ac809aeed39a+ other rev@97c705ade336 ancestor rev@924404dff337
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
C a
C b
--------------
created new head
--------------
test L: R:nm a b W: - 7 get b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local 94b33a1b7f2d+ remote e03727d2d66b
searching for copies back to rev 1
unmatched files in other:
b
all copies found (* = to merge, ! = divergent):
b -> a
checking for directory renames
a: other deleted -> r
rev: versions differ -> m
b: remote created -> g
preserving rev for resolve of rev
removing a
getting b
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@94b33a1b7f2d+ other rev@e03727d2d66b ancestor rev@924404dff337
1 files updated, 1 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
--------------
created new head
--------------
test L:nm a b R: W: - 8 nothing
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
searching for copies back to rev 1
unmatched files in local:
b
all copies found (* = to merge, ! = divergent):
b -> a
checking for directory renames
rev: versions differ -> m
preserving rev for resolve of rev
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ecf3cb2a4219+ other rev@97c705ade336 ancestor rev@924404dff337
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
C b
--------------
created new head
--------------
test L:um a b R:um a b W: - 9 do merge with ancestor in a
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ec03c2ca8642+ remote 79cc6877a3b7
searching for copies back to rev 1
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@ec03c2ca8642+ other b@79cc6877a3b7 ancestor a@924404dff337
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ec03c2ca8642+ other rev@79cc6877a3b7 ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
--------------
created new head
--------------
test L:nm a b R:nm a c W: - 11 get c, keep b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ecf3cb2a4219+ remote e6abcc1a30c2
searching for copies back to rev 1
unmatched files in local:
b
unmatched files in other:
c
all copies found (* = to merge, ! = divergent):
c -> a !
b -> a !
checking for directory renames
a: divergent renames -> dr
rev: versions differ -> m
c: remote created -> g
preserving rev for resolve of rev
warning: detected divergent renames of a to:
b
c
getting c
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ecf3cb2a4219+ other rev@e6abcc1a30c2 ancestor rev@924404dff337
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M c
C b
--------------
created new head
--------------
test L:nc a b R:up b W: - 12 merge b no ancestor
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ac809aeed39a+ remote af30c7647fc7
searching for copies back to rev 1
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@ac809aeed39a+ other b@af30c7647fc7 ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ac809aeed39a+ other rev@af30c7647fc7 ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
C a
--------------
created new head
--------------
test L:up b R:nm a b W: - 13 merge b no ancestor
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
searching for copies back to rev 1
a: other deleted -> r
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
removing a
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
0 files updated, 2 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
--------------
created new head
--------------
test L:nc a b R:up a b W: - 14 merge b no ancestor
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
searching for copies back to rev 1
a: remote is newer -> g
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
getting a
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
1 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M a
M b
--------------
created new head
--------------
test L:up b R:nm a b W: - 15 merge b no ancestor, remove a
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
searching for copies back to rev 1
a: other deleted -> r
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
removing a
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
0 files updated, 2 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
--------------
created new head
--------------
test L:nc a b R:up a b W: - 16 get a, merge b no ancestor
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
searching for copies back to rev 1
a: remote is newer -> g
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
getting a
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
1 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M a
M b
--------------
created new head
--------------
test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local 0b76e65c8289+ remote 735846fee2d7
searching for copies back to rev 1
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@0b76e65c8289+ other b@735846fee2d7 ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@0b76e65c8289+ other rev@735846fee2d7 ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
C a
--------------
created new head
--------------
test L:nm a b R:up a b W: - 18 merge b no ancestor
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ecf3cb2a4219+ remote 8dbce441892a
searching for copies back to rev 1
b: versions differ -> m
rev: versions differ -> m
remote changed a which local deleted
use (c)hanged version or leave (d)eleted? c
a: prompt recreating -> g
preserving b for resolve of b
preserving rev for resolve of rev
getting a
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@ecf3cb2a4219+ other b@8dbce441892a ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ecf3cb2a4219+ other rev@8dbce441892a ancestor rev@924404dff337
1 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M a
M b
--------------
created new head
--------------
test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local 0b76e65c8289+ remote e03727d2d66b
searching for copies back to rev 1
local changed a which remote deleted
use (c)hanged version or (d)elete? c
a: prompt keep -> a
b: versions differ -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging b
my b@0b76e65c8289+ other b@e03727d2d66b ancestor b@000000000000
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@0b76e65c8289+ other rev@e03727d2d66b ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
C a
--------------
created new head
--------------
test L:up a R:um a b W: - 20 merge a and b to b, remove a
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local e300d1c794ec+ remote 79cc6877a3b7
searching for copies back to rev 1
unmatched files in other:
b
all copies found (* = to merge, ! = divergent):
b -> a *
checking for directory renames
rev: versions differ -> m
a: remote moved to b -> m
preserving a for resolve of b
preserving rev for resolve of rev
removing a
picked tool 'python ../merge' for b (binary False symlink False)
merging a and b to b
my b@e300d1c794ec+ other b@79cc6877a3b7 ancestor a@924404dff337
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@e300d1c794ec+ other rev@79cc6877a3b7 ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
a
--------------
created new head
--------------
test L:um a b R:up a W: - 21 merge a and b to b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ec03c2ca8642+ remote f4db7e329e71
searching for copies back to rev 1
unmatched files in local:
b
all copies found (* = to merge, ! = divergent):
b -> a *
checking for directory renames
b: local moved to a -> m
rev: versions differ -> m
preserving b for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging b and a to b
my b@ec03c2ca8642+ other a@f4db7e329e71 ancestor a@924404dff337
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ec03c2ca8642+ other rev@f4db7e329e71 ancestor rev@924404dff337
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
a
--------------
created new head
--------------
test L:nm a b R:up a c W: - 23 get c, keep b
--------------
resolving manifests
overwrite None partial False
ancestor 924404dff337 local ecf3cb2a4219+ remote 2b958612230f
searching for copies back to rev 1
unmatched files in local:
b
unmatched files in other:
c
all copies found (* = to merge, ! = divergent):
b -> a *
checking for directory renames
b: local moved to a -> m
rev: versions differ -> m
c: remote created -> g
preserving b for resolve of b
preserving rev for resolve of rev
picked tool 'python ../merge' for b (binary False symlink False)
merging b and a to b
my b@ecf3cb2a4219+ other a@2b958612230f ancestor a@924404dff337
premerge successful
getting c
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev
my rev@ecf3cb2a4219+ other rev@2b958612230f ancestor rev@924404dff337
1 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
M b
a
M c
--------------