Mercurial > hg-stable
changeset 7564:f1af59451c0c
localrepo: fix bad manifest delta generation (issue1433)
The issue came from the 720ae5085ee3 fix for issue586 working only for
manifest.add() fast path, where the incorrect removed file set was
ignored. This path was no longer taken after 716a1296e182 refactoring.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sat, 03 Jan 2009 20:16:10 +0100 |
parents | bbcd2dea19fe |
children | 5f162f61e479 f9784c425a96 |
files | mercurial/localrepo.py tests/test-586 tests/test-586.out |
diffstat | 3 files changed, 60 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/localrepo.py Sat Jan 03 20:50:06 2009 +0100 +++ b/mercurial/localrepo.py Sat Jan 03 20:16:10 2009 +0100 @@ -882,16 +882,15 @@ # update manifest m1.update(new) - removed = [] + removed = [f for f in util.sort(remove) if f in m1 or f in m2] + removed1 = [] - for f in util.sort(remove): + for f in removed: if f in m1: del m1[f] - removed.append(f) - elif f in m2: - removed.append(f) + removed1.append(f) mn = self.manifest.add(m1, trp, linkrev, c1[0], c2[0], - (new, removed)) + (new, removed1)) # add changeset if (not empty_ok and not text) or force_editor:
--- a/tests/test-586 Sat Jan 03 20:50:06 2009 +0100 +++ b/tests/test-586 Sat Jan 03 20:16:10 2009 +0100 @@ -17,3 +17,33 @@ hg ci -Amc hg st -A +cd .. + +# a test for issue 1433, related to issue586 +echo % create test repos +hg init repoa +touch repoa/a +hg -R repoa ci -Am adda + +hg init repob +touch repob/b +hg -R repob ci -Am addb + +hg init repoc +cd repoc +hg pull ../repoa +hg update +mkdir tst +hg mv * tst +hg ci -m "import a in tst" +hg pull -f ../repob +echo % merge both repos +hg merge +mkdir src +echo % move b content +hg mv b src +hg ci -m "import b in src" +hg manifest + + +
--- a/tests/test-586.out Sat Jan 03 20:50:06 2009 +0100 +++ b/tests/test-586.out Sat Jan 03 20:16:10 2009 +0100 @@ -11,3 +11,28 @@ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) C b +% create test repos +adding a +adding b +pulling from ../repoa +requesting all changes +adding changesets +adding manifests +adding file changes +added 1 changesets with 1 changes to 1 files +(run 'hg update' to get a working copy) +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +pulling from ../repob +searching for changes +warning: repository is unrelated +adding changesets +adding manifests +adding file changes +added 1 changesets with 1 changes to 1 files (+1 heads) +(run 'hg heads' to see heads, 'hg merge' to merge) +% merge both repos +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +% move b content +src/b +tst/a