changeset 300:3b1f326878e5

obsolete: suspended changeset with secret only children should be secret too test-obsolete-push.t: exhibit outgoing bug with suspended changeset in this case
author Patrick Mezard <patrick@mezard.eu>
date Sat, 23 Jun 2012 01:14:49 +0200
parents eda6491ca269
children b41ff69388a8
files hgext/obsolete.py tests/test-obsolete-push.t
diffstat 2 files changed, 50 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/obsolete.py	Fri Jun 22 18:04:43 2012 +0200
+++ b/hgext/obsolete.py	Sat Jun 23 01:14:49 2012 +0200
@@ -853,7 +853,8 @@
             self._clearobsoletecache()
             # this is mainly for safety purpose
             # both pull and push
-            expobs = [c.node() for c in repo.set('extinct() - secret()')]
+            query = '(obsolete() - obsolete()::(unstable() - secret())) - secret()'
+            expobs = [c.node() for c in repo.set(query)]
             phases.retractboundary(repo, 2, expobs)
 
         ### Disk IO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-obsolete-push.t	Sat Jun 23 01:14:49 2012 +0200
@@ -0,0 +1,48 @@
+  $ cat >> $HGRCPATH <<EOF
+  > [defaults]
+  > amend=-d "0 0"
+  > [extensions]
+  > hgext.rebase=
+  > hgext.graphlog=
+  > EOF
+  $ echo "obsolete=$(echo $(dirname $TESTDIR))/hgext/obsolete.py" >> $HGRCPATH
+  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH
+
+  $ template='{rev}:{node|short}@{branch}({obsolete}/{phase}) {desc|firstline}\n'
+  $ glog() {
+  >   hg glog --template "$template" "$@"
+  > }
+
+Test outgoing, common A is suspended, B unstable and C secret, remote
+has A and B, neither A or C should be in outgoing.
+
+  $ hg init source
+  $ cd source
+  $ echo a > a
+  $ hg ci -qAm A a
+  $ echo b > b
+  $ hg ci -qAm B b
+  $ hg up 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo c > c
+  $ hg ci -qAm C c
+  $ hg phase --secret --force .
+  $ hg kill 0 1
+  1 new unstables changesets
+  $ glog --hidden
+  @  2:244232c2222a@default(unstable/secret) C
+  |
+  | o  1:6c81ed0049f8@default(extinct/secret) B
+  |/
+  o  0:1994f17a630e@default(suspended/secret) A
+  
+  $ hg init ../clone
+  $ cat >  ../clone/.hg/hgrc <<EOF
+  > [phases]
+  > publish = false
+  > EOF
+  $ hg outgoing ../clone --template "$template"
+  comparing with ../clone
+  searching for changes
+  no changes found (ignored 2 secret changesets)
+  [1]