# HG changeset patch # User Patrick Mezard # Date 1340406889 -7200 # Node ID 3b1f326878e5d5d36795d299943033d9ca25e399 # Parent eda6491ca2696ee3f34c93df9ab7b2c2facf3390 obsolete: suspended changeset with secret only children should be secret too test-obsolete-push.t: exhibit outgoing bug with suspended changeset in this case diff -r eda6491ca269 -r 3b1f326878e5 hgext/obsolete.py --- 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 diff -r eda6491ca269 -r 3b1f326878e5 tests/test-obsolete-push.t --- /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 < [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 < [phases] + > publish = false + > EOF + $ hg outgoing ../clone --template "$template" + comparing with ../clone + searching for changes + no changes found (ignored 2 secret changesets) + [1]