sapling/eden/scm/tests/test-treemanifest-amend.t
Jun Wu f2c3496b91 drawdag: use a single transaction
Summary:
This reduces disk flushes, and is more efficient.

The main motivation is to avoid a situation where each added commit becomes
part of `visibleheads`. For example, drawdag:

  C
  |
  B
  |
  A

would previously have visibleheads change from `A` to `B` to `C`, but now
`visibleheads` is only `C` without having the `B` or `A` state.

Reviewed By: singhsrb

Differential Revision: D32436069

fbshipit-source-id: 30274b1158c5eb796bc24101dc892c334c0f0287
2021-11-15 13:22:01 -08:00

40 lines
1.3 KiB
Perl

#chg-compatible
Crash in histpack code path where the amend destination already exists
$ configure mutation-norecord
$ enable undo treemanifest remotefilelog
$ setconfig treemanifest.treeonly=1 remotefilelog.reponame=foo remotefilelog.cachepath=$TESTTMP/cache
$ setconfig remotefilelog.write-hgcache-to-indexedlog=False remotefilelog.write-local-to-indexedlog=False
$ newrepo
$ drawdag << 'EOS'
> B
> |
> A
> EOS
$ enable undo
$ hg up -q $B
$ echo foo > msg
$ hg --config dummy.option=dummy commit --amend -l msg
$ hg undo -q
hint[undo-uncommit-unamend]: undoing amends discards their changes.
to restore the changes to the working copy, run 'hg revert -r 220f69710758 --all'
in the future, you can use 'hg unamend' instead of 'hg undo' to keep changes
hint[hint-ack]: use 'hg hint --ack undo-uncommit-unamend' to silence these hints
$ hg commit --amend -l msg
Make sure no invalid manifests were written:
$ cd .hg/store/packs/manifests
$ for i in *.histidx; do hg debughistorypack $i; done
Node P1 Node P2 Node Link Node Copy From
eb7988638387 41b34f08c135 000000000000 220f69710758
Node P1 Node P2 Node Link Node Copy From
eb7988638387 41b34f08c135 000000000000 112478962961
41b34f08c135 000000000000 000000000000 426bada5c675