view tests/test-mq-qdiff.t @ 23254:d23834b871ac

debugrevlog: fix computing chain length in debugrevlog -d The chain length was computed correctly only when generaldelta feature was enabled. Now it's fixed. When generaldelta is disabled the base revision in revlog index is not the revision we have delta against - it's always previous revision. Instead of incorrect chainbaseandlen in command.py we are now using two single-responsibility functions in revlog.py: - chainbase(rev) - chainlen(rev) Only chainlen(rev) was missing so it was written to mimic the way the chain of deltas is actually found during file reconstruction.
author Mateusz Kwapich <mitrandir@fb.com>
date Thu, 06 Nov 2014 14:08:25 -0800
parents e955549cd045
children
line wrap: on
line source

  $ cat <<EOF >> $HGRCPATH
  > [extensions]
  > mq =
  > [mq]
  > git = keep
  > EOF

  $ hg init a
  $ cd a

  $ echo 'base' > base
  $ hg ci -Ambase
  adding base

  $ hg qnew -mmqbase mqbase

  $ echo 'patched' > base
  $ hg qrefresh

qdiff:

  $ hg qdiff
  diff -r d20a80d4def3 base
  --- a/base	Thu Jan 01 00:00:00 1970 +0000
  +++ b/base* (glob)
  @@ -1,1 +1,1 @@
  -base
  +patched

qdiff dirname:

  $ hg qdiff --nodates .
  diff -r d20a80d4def3 base
  --- a/base
  +++ b/base
  @@ -1,1 +1,1 @@
  -base
  +patched

qdiff filename:

  $ hg qdiff --nodates base
  diff -r d20a80d4def3 base
  --- a/base
  +++ b/base
  @@ -1,1 +1,1 @@
  -base
  +patched

  $ hg revert -a

  $ hg qpop
  popping mqbase
  patch queue now empty

  $ hg qdelete mqbase

  $ printf '1\n2\n3\n4\nhello world\ngoodbye world\n7\n8\n9\n' > lines
  $ hg ci -Amlines -d '2 0'
  adding lines

  $ hg qnew -mmqbase2 mqbase2
  $ printf '\n\n1\n2\n3\n4\nhello  world\n     goodbye world\n7\n8\n9\n' > lines

  $ hg qdiff --nodates -U 1
  diff -r b0c220e1cf43 lines
  --- a/lines
  +++ b/lines
  @@ -1,1 +1,3 @@
  +
  +
   1
  @@ -4,4 +6,4 @@
   4
  -hello world
  -goodbye world
  +hello  world
  +     goodbye world
   7

  $ hg qdiff --nodates -b
  diff -r b0c220e1cf43 lines
  --- a/lines
  +++ b/lines
  @@ -1,9 +1,11 @@
  +
  +
   1
   2
   3
   4
   hello world
  -goodbye world
  +     goodbye world
   7
   8
   9

  $ hg qdiff --nodates -U 1 -B
  diff -r b0c220e1cf43 lines
  --- a/lines
  +++ b/lines
  @@ -4,4 +4,4 @@
   4
  -hello world
  -goodbye world
  +hello  world
  +     goodbye world
   7

  $ hg qdiff --nodates -w
  diff -r b0c220e1cf43 lines
  --- a/lines
  +++ b/lines
  @@ -1,3 +1,5 @@
  +
  +
   1
   2
   3

  $ hg qdiff --nodates --reverse
  diff -r b0c220e1cf43 lines
  --- a/lines
  +++ b/lines
  @@ -1,11 +1,9 @@
  -
  -
   1
   2
   3
   4
  -hello  world
  -     goodbye world
  +hello world
  +goodbye world
   7
   8
   9

qdiff preserve existing git flag:

  $ hg qrefresh --git
  $ echo a >> lines
  $ hg qdiff
  diff --git a/lines b/lines
  --- a/lines
  +++ b/lines
  @@ -1,9 +1,12 @@
  +
  +
   1
   2
   3
   4
  -hello world
  -goodbye world
  +hello  world
  +     goodbye world
   7
   8
   9
  +a

  $ hg qdiff --stat
   lines |  7 +++++--
   1 files changed, 5 insertions(+), 2 deletions(-)
  $ hg qrefresh

qdiff when file deleted (but not removed) in working dir:

  $ hg qnew deleted-file
  $ echo a > newfile
  $ hg add newfile
  $ hg qrefresh
  $ rm newfile
  $ hg qdiff

  $ cd ..