commit: try hard to reuse p1 manifest if nothing changed
This is all for commit reproducibility on "hg convert".
With this change, p1 manifest is reused if ctx.files() *to be committed* is
empty, and if new manifest entry is identical to p1. This is important
property for "hg convert" since memctx.files() built from a convert source
may be either a) more narrowed thanks to a committed ctx.files() which
provides more accurate status, or b) containing redundant files because of
sloppy filtering on e.g. octopus merge.
$ cat >> $HGRCPATH << EOF
> [extensions]
> absorb=
> drawdag=$RUNTESTDIR/drawdag.py
> EOF
$ hg init
$ hg debugdrawdag <<'EOS'
> C
> |
> B
> |
> A
> EOS
$ hg phase -r A --public -q
$ hg phase -r C --secret --force -q
$ hg update C -q
$ printf B1 > B
$ hg absorb -q
$ hg log -G -T '{desc} {phase}'
@ C secret
|
o B draft
|
o A public