[PATCH] convert: test clean p2 file missing

Mads Kiilerich mads at kiilerich.com
Fri Oct 23 19:34:38 CDT 2015


On 10/24/2015 02:18 AM, Mads Kiilerich wrote:
> # HG changeset patch
> # User Mads Kiilerich <madski at unity3d.com>
> # Date 1445644486 -7200
> #      Sat Oct 24 01:54:46 2015 +0200
> # Branch stable
> # Node ID d6bf0a037c0783539daaab3e90ded59b2b2a6caf
> # Parent  39dbf495880b8a439d912091109427d27a7e616a
> convert: test clean p2 file missing
>
> 216fa1ba9993 introduced "clever" reuse of p2 but did that convert could fail
> with
>    abort: f1 at f73e02ae52c5: not found in manifest!
> when it tried to reuse a file from p2 but the file didn't exist there, for
> example because filemap changes.
>
> 5ca587348875 fixed that (using changes from a75d24539aba), but with a quite
> different reasoning and test case.
>
> Add another test that makes sure this case is covered too.
>
> diff --git a/tests/test-convert-filemap.t b/tests/test-convert-filemap.t
> --- a/tests/test-convert-filemap.t
> +++ b/tests/test-convert-filemap.t
> @@ -740,4 +740,49 @@ test converting merges into a repo that
>        - converted/a
>        - toberemoved
>     
> +  $ cd ..
>   
> +
> +Test case where cleanp2 contains a file that doesn't exist in p2 - for
> +example because filemap changed.
> +
> +  $ hg init cleanp2
> +  $ cd cleanp2
> +  $ touch f f1 f2 && hg ci -Aqm '0'
> +  $ echo f1 > f1 && echo >> f && hg ci -m '1'
> +  $ hg up -qr0 && echo f2 > f2 && echo >> f && hg ci -qm '2'
> +  $ echo "include f" > filemap
> +  $ hg convert --filemap filemap .
> +  assuming destination .-hg
> +  initializing destination .-hg repository
> +  scanning source...
> +  sorting...
> +  converting...
> +  2 0
> +  1 1
> +  0 2
> +  $ hg merge && hg ci -qm '3'
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (branch merge, don't forget to commit)
> +  $ echo "include ." > filemap
> +  $ hg convert --filemap filemap .
> +  assuming destination .-hg
> +  scanning source...
> +  sorting...
> +  converting...
> +  0 3
> +  $ hg -R .-hg log -G -T '{shortest(node)} {desc}\n{files % "- {file}\n"}\n'
> +  o    e9ed 3
> +  |\
> +  | o  33a0 2
> +  | |  - f
> +  | |
> +  o |  f73e 1
> +  |/   - f
> +  |
> +  o  d681 0
> +     - f
> +
> +  $ hg -R .-hg mani -r tip
> +  f

I am not entirely convinced that it is correct behaviour that the merge 
of revision 1 on top of revision 2 in changeset 3 doesn't introduce f1 
... and by symmetry also f2.

/Mads


More information about the Mercurial-devel mailing list