view tests/test-rebase-issue-noparam-single-rev.t @ 30795:78ac56aebab6

revlog: use compression engine API for compression This commit swaps in the just-added revlog compressor API into the revlog class. Instead of implementing zlib compression inline in compress(), we now store a cached-on-first-use revlog compressor on each revlog instance and invoke its "compress()" method. As part of this, revlog.compress() has been refactored a bit to use a cleaner code flow and modern formatting (e.g. avoiding parenthesis around returned tuples). On a mozilla-unified repo, here are the "compress" times for a few commands: $ hg perfrevlogchunks -c ! wall 5.772450 comb 5.780000 user 5.780000 sys 0.000000 (best of 3) ! wall 5.795158 comb 5.790000 user 5.790000 sys 0.000000 (best of 3) $ hg perfrevlogchunks -m ! wall 9.975789 comb 9.970000 user 9.970000 sys 0.000000 (best of 3) ! wall 10.019505 comb 10.010000 user 10.010000 sys 0.000000 (best of 3) Compression times did seem to slow down just a little. There are 360,210 changelog revisions and 359,342 manifest revisions. For the changelog, mean time to compress a revision increased from ~16.025us to ~16.088us. That's basically a function call or an attribute lookup. I suppose this is the price you pay for abstraction. It's so low that I'm not concerned.
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 02 Jan 2017 11:22:52 -0800
parents aa4a1672583e
children 3b7cb3d17137
line wrap: on
line source

  $ cat >> $HGRCPATH <<EOF
  > [extensions]
  > rebase=
  > 
  > [phases]
  > publish=False
  > 
  > [alias]
  > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
  > EOF


  $ hg init a
  $ cd a

  $ echo c1 > c1
  $ hg ci -Am c1
  adding c1

  $ echo c2 > c2
  $ hg ci -Am c2
  adding c2

  $ echo l1 > l1
  $ hg ci -Am l1
  adding l1

  $ hg up -q -C 1

  $ echo r1 > r1
  $ hg ci -Am r1
  adding r1
  created new head

  $ echo r2 > r2
  $ hg ci -Am r2
  adding r2

  $ hg tglog
  @  4: 'r2'
  |
  o  3: 'r1'
  |
  | o  2: 'l1'
  |/
  o  1: 'c2'
  |
  o  0: 'c1'
  
Rebase with no arguments - single revision in source branch:

  $ hg up -q -C 2

  $ hg rebase
  rebasing 2:87c180a611f2 "l1"
  saved backup bundle to $TESTTMP/a/.hg/strip-backup/87c180a611f2-a5be192d-backup.hg (glob)

  $ hg tglog
  @  4: 'l1'
  |
  o  3: 'r2'
  |
  o  2: 'r1'
  |
  o  1: 'c2'
  |
  o  0: 'c1'
  
  $ cd ..


  $ hg init b
  $ cd b

  $ echo c1 > c1
  $ hg ci -Am c1
  adding c1

  $ echo c2 > c2
  $ hg ci -Am c2
  adding c2

  $ echo l1 > l1
  $ hg ci -Am l1
  adding l1

  $ echo l2 > l2
  $ hg ci -Am l2
  adding l2

  $ hg up -q -C 1

  $ echo r1 > r1
  $ hg ci -Am r1
  adding r1
  created new head

  $ hg tglog
  @  4: 'r1'
  |
  | o  3: 'l2'
  | |
  | o  2: 'l1'
  |/
  o  1: 'c2'
  |
  o  0: 'c1'
  
Rebase with no arguments - single revision in target branch:

  $ hg up -q -C 3

  $ hg rebase
  rebasing 2:87c180a611f2 "l1"
  rebasing 3:1ac923b736ef "l2"
  saved backup bundle to $TESTTMP/b/.hg/strip-backup/87c180a611f2-b980535c-backup.hg (glob)

  $ hg tglog
  @  4: 'l2'
  |
  o  3: 'l1'
  |
  o  2: 'r1'
  |
  o  1: 'c2'
  |
  o  0: 'c1'
  

  $ cd ..