tests/test-rebase-rename.t
author Nicolas Dumazet <nicdumz.commits@gmail.com>
Thu, 11 Nov 2010 02:10:37 +0900
branchstable
changeset 12972 7916a84c0758
parent 12640 6cc4b14fb76b
child 13778 46c3043253fb
permissions -rw-r--r--
log: fix log -rREV FILE when REV isnt the last filerev (issue2492) Regression from 99cafcae25d9. That previous commit is not supposed to affect log calls without --follow, so we step out of this codepath if follow is not True, and it's enough to fix the regression. When --follow is given, we fix the issue by taking into account changesets that have a rev > maxrev to build the filegraph: even if those files are not included in the final result, it's still needed to walk correctly the graph from the end of the filelog to minrev, to track accurately renames.

  $ cat >> $HGRCPATH <<EOF
  > [extensions]
  > graphlog=
  > rebase=
  > 
  > [alias]
  > tlog  = log  --template "{rev}: '{desc}' {branches}\n"
  > tglog = tlog --graph
  > EOF


  $ hg init a
  $ cd a

  $ echo a > a
  $ hg ci -Am A
  adding a

  $ echo b > b
  $ hg ci -Am B
  adding b

  $ hg up -q -C 0

  $ hg mv a a-renamed

  $ hg ci -m 'rename A'
  created new head

  $ hg tglog
  @  2: 'rename A'
  |
  | o  1: 'B'
  |/
  o  0: 'A'
  

Rename is tracked:

  $ hg tlog -p --git -r tip
  2: 'rename A' 
  diff --git a/a b/a-renamed
  rename from a
  rename to a-renamed
  
Rebase the revision containing the rename:

  $ hg rebase -s 2 -d 1
  saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob)

  $ hg tglog
  @  2: 'rename A'
  |
  o  1: 'B'
  |
  o  0: 'A'
  

Rename is not lost:

  $ hg tlog -p --git -r tip
  2: 'rename A' 
  diff --git a/a b/a-renamed
  rename from a
  rename to a-renamed
  
  $ cd ..


  $ hg init b
  $ cd b

  $ echo a > a
  $ hg ci -Am A
  adding a

  $ echo b > b
  $ hg ci -Am B
  adding b

  $ hg up -q -C 0

  $ hg cp a a-copied
  $ hg ci -m 'copy A'
  created new head

  $ hg tglog
  @  2: 'copy A'
  |
  | o  1: 'B'
  |/
  o  0: 'A'
  
Copy is tracked:

  $ hg tlog -p --git -r tip
  2: 'copy A' 
  diff --git a/a b/a-copied
  copy from a
  copy to a-copied
  
Rebase the revision containing the copy:

  $ hg rebase -s 2 -d 1
  saved backup bundle to $TESTTMP/b/.hg/strip-backup/*-backup.hg (glob)

  $ hg tglog
  @  2: 'copy A'
  |
  o  1: 'B'
  |
  o  0: 'A'
  
Copy is not lost:

  $ hg tlog -p --git -r tip
  2: 'copy A' 
  diff --git a/a b/a-copied
  copy from a
  copy to a-copied