Mercurial > hg
view tests/test-convert-datesort.t @ 44985:1ca0047fd7e1
absorb: preserve changesets which were already empty
Most commands in Mercurial (commit, rebase, absorb itself) don’t create empty
changesets or drop them if they become empty. If there’s a changeset that’s
empty, it must be a deliberate choice of the user. At least it shouldn’t be
absorb’s responsibility to prune them. The fact that changesets that became
empty during absorb are pruned, is unaffected by this.
This case was found while writing patches which make it possible to configure
absorb and rebase to not drop empty changesets. Even without having such config
set, I think it’s valuable to preserve changesets which were already empty.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Mon, 01 Jun 2020 20:57:14 +0200 |
parents | 701df761aa94 |
children |
line wrap: on
line source
$ cat >> $HGRCPATH <<EOF > [extensions] > convert= > EOF $ hg init t $ cd t $ echo a >> a $ hg ci -Am a0 -d '1 0' adding a $ hg branch brancha marked working directory as branch brancha (branches are permanent and global, did you want a bookmark?) $ echo a >> a $ hg ci -m a1 -d '2 0' $ echo a >> a $ hg ci -m a2 -d '3 0' $ echo a >> a $ hg ci -m a3 -d '4 0' $ hg up -C 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg branch branchb marked working directory as branch branchb $ echo b >> b $ hg ci -Am b0 -d '6 0' adding b $ hg up -C brancha 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo a >> a $ hg ci -m a4 -d '5 0' $ echo a >> a $ hg ci -m a5 -d '7 0' $ echo a >> a $ hg ci -m a6 -d '8 0' $ hg up -C branchb 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo b >> b $ hg ci -m b1 -d '9 0' $ hg up -C 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo c >> c $ hg branch branchc marked working directory as branch branchc $ hg ci -Am c0 -d '10 0' adding c $ hg up -C brancha 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg ci --close-branch -m a7x -d '11 0' $ hg up -C branchb 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg ci --close-branch -m b2x -d '12 0' $ hg up -C branchc 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg merge branchb 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg ci -m c1 -d '13 0' $ cd .. convert with datesort $ hg convert --datesort t t-datesort initializing destination t-datesort repository scanning source... sorting... converting... 12 a0 11 a1 10 a2 9 a3 8 a4 7 b0 6 a5 5 a6 4 b1 3 c0 2 a7x 1 b2x 0 c1 graph converted repo $ hg -R t-datesort log -G --template '{rev} "{desc}"\n' o 12 "c1" |\ | _ 11 "b2x" | | | | _ 10 "a7x" | | | o | | 9 "c0" | | | | o | 8 "b1" | | | | | o 7 "a6" | | | | | o 6 "a5" | | | | o | 5 "b0" |/ / | o 4 "a4" | | | o 3 "a3" | | | o 2 "a2" | | | o 1 "a1" |/ o 0 "a0" convert with datesort (default mode) $ hg convert t t-sourcesort initializing destination t-sourcesort repository scanning source... sorting... converting... 12 a0 11 a1 10 a2 9 a3 8 b0 7 a4 6 a5 5 a6 4 b1 3 c0 2 a7x 1 b2x 0 c1 graph converted repo $ hg -R t-sourcesort log -G --template '{rev} "{desc}"\n' o 12 "c1" |\ | _ 11 "b2x" | | | | _ 10 "a7x" | | | o | | 9 "c0" | | | | o | 8 "b1" | | | | | o 7 "a6" | | | | | o 6 "a5" | | | | | o 5 "a4" | | | | o | 4 "b0" |/ / | o 3 "a3" | | | o 2 "a2" | | | o 1 "a1" |/ o 0 "a0" convert with closesort $ hg convert --closesort t t-closesort initializing destination t-closesort repository scanning source... sorting... converting... 12 a0 11 a1 10 a2 9 a3 8 b0 7 a4 6 a5 5 a6 4 a7x 3 b1 2 b2x 1 c0 0 c1 graph converted repo $ hg -R t-closesort log -G --template '{rev} "{desc}"\n' o 12 "c1" |\ | o 11 "c0" | | _ | 10 "b2x" | | o | 9 "b1" | | | | _ 8 "a7x" | | | | | o 7 "a6" | | | | | o 6 "a5" | | | | | o 5 "a4" | | | o | | 4 "b0" |/ / | o 3 "a3" | | | o 2 "a2" | | | o 1 "a1" |/ o 0 "a0"