view tests/test-parentrevspec.t @ 13287:d0e0d3d43e14 stable

subrepo: compare svn subrepo state to last committed revision A subversion project revisions are a subset of the repository revisions, you can ask subversion to update a working directory from one revision to another without changing anything. Unfortunately, Mercurial will think the subrepository has changed and will commit it again. To avoid useless commits, we compare the subrepository state to its actual "parent" revision. To ensure ascending compatibility with existing subrepositories which might reference fake revisions, we also keep comparing with the subrepo working directory revision. NOTE: not sure if this should go in stable or not.
author Patrick Mezard <pmezard@gmail.com>
date Sat, 22 Jan 2011 16:15:40 +0100
parents 4c4aeaab2339
children 6eab8f0df2ca
line wrap: on
line source


  $ commit()
  > {
  >     msg=$1
  >     p1=$2
  >     p2=$3
  > 
  >     if [ "$p1" ]; then
  >         hg up -qC $p1
  >     fi
  > 
  >     if [ "$p2" ]; then
  >         HGMERGE=true hg merge -q $p2
  >     fi
  > 
  >     echo >> foo
  > 
  >     hg commit -qAm "$msg"
  > }
  $ hg init repo
  $ cd repo
  $ echo '[extensions]' > .hg/hgrc
  $ echo 'parentrevspec =' >> .hg/hgrc
  $ commit '0: add foo'
  $ commit '1: change foo 1'
  $ commit '2: change foo 2a'
  $ commit '3: change foo 3a'
  $ commit '4: change foo 2b' 1
  $ commit '5: merge' 3 4
  $ commit '6: change foo again'
  $ hg log --template '{rev}:{node|short} {parents}\n'
  6:755d1e0d79e9 
  5:9ce2ce29723a 3:a3e00c7dbf11 4:bb4475edb621 
  4:bb4475edb621 1:5d953a1917d1 
  3:a3e00c7dbf11 
  2:befc7d89d081 
  1:5d953a1917d1 
  0:837088b6e1d9 
  $ echo
  
  $ lookup()
  > {
  >     for rev in "$@"; do
  >         printf "$rev: "
  >         hg id -nr $rev
  >     done
  >     true
  > }
  $ tipnode=`hg id -ir tip`

should work with tag/branch/node/rev

  $ for r in tip default $tipnode 6; do
  >     lookup "$r^"
  > done
  tip^: 5
  default^: 5
  755d1e0d79e9^: 5
  6^: 5
  $ echo
  

some random lookups

  $ lookup "6^^" "6^^^" "6^^^^" "6^^^^^" "6^^^^^^" "6^1" "6^2" "6^^2" "6^1^2" "6^^3"
  6^^: 3
  6^^^: 2
  6^^^^: 1
  6^^^^^: 0
  6^^^^^^: -1
  6^1: 5
  6^2: abort: unknown revision '6^2'!
  6^^2: 4
  6^1^2: 4
  6^^3: abort: unknown revision '6^^3'!
  $ lookup "6~" "6~1" "6~2" "6~3" "6~4" "6~5" "6~42" "6~1^2" "6~1^2~2"
  6~: abort: unknown revision '6~'!
  6~1: 5
  6~2: 3
  6~3: 2
  6~4: 1
  6~5: 0
  6~42: -1
  6~1^2: 4
  6~1^2~2: 0
  $ echo
  

with a tag "6^" pointing to rev 1

  $ hg tag -l -r 1 "6^"
  $ lookup "6^" "6^1" "6~1" "6^^"
  6^: 1
  6^1: 5
  6~1: 5
  6^^: 3
  $ echo
  

with a tag "foo^bar" pointing to rev 2

  $ hg tag -l -r 2 "foo^bar"
  $ lookup "foo^bar" "foo^bar^"
  foo^bar: 2
  foo^bar^: abort: unknown revision 'foo^bar^'!