$ 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}\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
$ hg log
changeset: 3:0d3f46688ccc
tag: tip
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c
changeset: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add b
changeset: 0:1f0dee641bb7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add a
$ hg log --hidden
changeset: 3:0d3f46688ccc
tag: tip
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c
changeset: 2:4538525df7e2
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add c
changeset: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add b
changeset: 0:1f0dee641bb7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add a
$ hg log -r 'obsolete()' --hidden
changeset: 2:4538525df7e2
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add c
test obsolete changeset with no-obsolete descendant
$ hg up 1 -q
$ mkcommit "obsol_c'" # 4 (on 1)
created new head
$ hg debugobsolete 4 3
$ hg log
changeset: 4:725c380fe99b
tag: tip
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c'
changeset: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add b
changeset: 0:1f0dee641bb7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add a
$ hg log -r 'obsolete()' --hidden
changeset: 2:4538525df7e2
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add c
changeset: 3:0d3f46688ccc
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c
$ hg up 3 -q
$ mkcommit d # 5 (on 3)
$ hg log -r 'obsolete()'
changeset: 3:0d3f46688ccc
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c
Test communication of obsolete relation with a compatible client
$ hg init ../other-new
$ hg push ../other-new
pushing to ../other-new
searching for changes
adding changesets
adding manifests
adding file changes
added 6 changesets with 6 changes to 6 files (+2 heads)
$ hg -R ../other-new log -r 'obsolete()'
changeset: 3:0d3f46688ccc
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c
$ hg -R ../other-new log
changeset: 5:a7a6f2b5d8a5
tag: tip
parent: 3:0d3f46688ccc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add d
changeset: 4:725c380fe99b
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c'
changeset: 3:0d3f46688ccc
parent: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add obsol_c
changeset: 1:7c3bad9141dc
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add b
changeset: 0:1f0dee641bb7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: add a
$ hg up 3 -q
$ mkcommit obsol_d # 6
created new head
$ hg debugobsolete 6 5
$ qlog
6
4
3
1
0
$ qlog -r 'obsolete()'
3
$ 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
6
4
3
1
0
$ qlog -R ../other-new -r 'obsolete()'
3
$ 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 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads .' to see heads, 'hg merge' to merge)
$ qlog -R ../other-new
7
4
3
1
0