# HG changeset patch # User Pierre-Yves David # Date 2013-02-09 17:54:01 # Node ID 227479f61db9d169c1afea6fa0a9dce7288d4932 # Parent 9a06aab5981b510a22900d2686a597afe7a5dfbe outgoing: fix possible filtering crash in outgoing (issue3814) If there is no outgoiing changesets but we have filtered revision in outgoing.excluded We run into a filtering related crash. The excluded revision should not be there in the first place but discovery need cleanup in default, not stable. diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -18,6 +18,10 @@ def nochangesfound(ui, repo, excluded=No secretlist = [] if excluded: for n in excluded: + if n not in repo: + # discovery should not have included the filtered revision, + # we have to explicitly exclude it until discovery is cleanup. + continue ctx = repo[n] if ctx.phase() >= phases.secret and not ctx.extinct(): secretlist.append(n) diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -865,3 +865,25 @@ This test issue 3805 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS #endif + +This test issue 3814 + +(nothing to push but locally hidden changeset) + + $ cd .. + $ hg init repo-issue3814 + $ cd repo-issue3805 + $ hg push -r 3816541e5485 ../repo-issue3814 + pushing to ../repo-issue3814 + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + $ hg out ../repo-issue3814 + comparing with ../repo-issue3814 + searching for changes + no changes found + [1] + +