view tests/test-obsolete.t @ 46:3b0364fc822f

Do not propagate obsolete changeset
author Pierre-Yves David <pierre-yves.david@logilab.fr>
date Thu, 08 Sep 2011 16:46:58 +0200
parents d89453a10991
children 4e804af47e57
line wrap: on
line source

  $ cat >> $HGRCPATH <<EOF
  > [web]
  > push_ssl = false
  > allow_push = *
  > [extensions]
  > EOF
  $ echo "obsolete=$(echo $(dirname $TESTDIR))/obsolete.py" >> $HGRCPATH
  $ mkcommit() {
  >    echo "$1" > "$1"
  >    hg add "$1"
  >    hg ci -m "add $1"
  > }

  $ alias qlog="hg log --template='{rev} {node|short}\n'"
  $ hg init local
  $ cd local
  $ mkcommit a # 0
  $ mkcommit b # 1
  $ mkcommit c # 2
  $ hg up 1
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ mkcommit obsol_c # 3
  created new head
  $ hg debugobsolete 3 2


Test that obsolete changeset are hidden

  $ qlog
  3 0d3f46688ccc
  1 7c3bad9141dc
  0 1f0dee641bb7
  $ qlog --hidden
  3 0d3f46688ccc
  2 4538525df7e2
  1 7c3bad9141dc
  0 1f0dee641bb7
  $ qlog -r 'obsolete()' --hidden
  2 4538525df7e2

test obsolete changeset with no-obsolete descendant
  $ hg up 1 -q
  $ mkcommit "obsol_c'" # 4 (on 1)
  created new head
  $ hg debugobsolete 4 3
  $ qlog
  4 725c380fe99b
  1 7c3bad9141dc
  0 1f0dee641bb7
  $ qlog -r 'obsolete()' --hidden
  2 4538525df7e2
  3 0d3f46688ccc
  $ hg up 3 -q
  $ mkcommit d # 5 (on 3)
  $ qlog -r 'obsolete()'
  3 0d3f46688ccc

Test communication of obsolete relation with a compatible client

  $ hg init ../other-new
  $ hg push --traceback ../other-new
  pushing to ../other-new
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 5 changesets with 5 changes to 5 files (+1 heads)
  $ qlog -R ../other-new -r 'obsolete()'
  2 0d3f46688ccc
  $ qlog -R ../other-new
  4 a7a6f2b5d8a5
  3 725c380fe99b
  2 0d3f46688ccc
  1 7c3bad9141dc
  0 1f0dee641bb7
  $ hg up 3 -q
  $ mkcommit obsol_d # 6
  created new head
  $ hg debugobsolete 6 5
  $ qlog
  6 95de7fc6918d
  4 725c380fe99b
  3 0d3f46688ccc
  1 7c3bad9141dc
  0 1f0dee641bb7
  $ qlog -r 'obsolete()'
  3 0d3f46688ccc
  $ hg push ../other-new -f # XXX should not have to use -f
  pushing to ../other-new
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files (+1 heads)
  $ qlog -R ../other-new
  5 95de7fc6918d
  3 725c380fe99b
  2 0d3f46688ccc
  1 7c3bad9141dc
  0 1f0dee641bb7
  $ qlog -R ../other-new -r 'obsolete()'
  2 0d3f46688ccc
  $ hg up -q .^
  $ mkcommit "obsol_d'" # 7
  created new head
  $ hg debugobsolete 7 6
  $ hg pull -R ../other-new .
  pulling from .
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files (+2 heads)
  (run 'hg heads .' to see heads, 'hg merge' to merge)
  $ qlog -R ../other-new
  7 909a0fb57e5d
  3 725c380fe99b
  2 0d3f46688ccc
  1 7c3bad9141dc
  0 1f0dee641bb7

pushing to stuff that doesn't support obsolete

  $ hg init ../other-old
  $ echo '[extensions]'  > ../other-old/.hg/hgrc
  $ echo "obsolete=!$(echo $(dirname $TESTDIR))/obsolete.py" >> ../other-old/.hg/hgrc
  $ hg push ../other-old
  pushing to ../other-old
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 5 changesets with 5 changes to 5 files (+1 heads)
  $ qlog -R ../other-old
  4 909a0fb57e5d
  3 725c380fe99b
  2 0d3f46688ccc
  1 7c3bad9141dc
  0 1f0dee641bb7