tests/test-convert-datesort.t
author Stanislau Hlebik <stash@fb.com>
Thu, 02 Feb 2017 02:56:38 -0800
changeset 30875 1791be8a95c5
parent 25295 701df761aa94
permissions -rw-r--r--
localrepo: avoid unnecessary conversion from node to rev changelog.heads() first calls headrevs then converts them to nodes. localrepo.heads() then sorts them using self.changelog.rev function and makes useless conversion back to revs. Instead let's call changelog.headrevs() from localrepo.heads(), sort the output and then convert to nodes. Because headrevs does not support start parameter this optimization only works if start is None.


  $ 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"