diff --git a/hgext/fix.py b/hgext/fix.py --- a/hgext/fix.py +++ b/hgext/fix.py @@ -417,7 +417,7 @@ revs = repo.revs(b'(not public() and not obsolete()) or wdir()') elif opts[b'source']: source_revs = scmutil.revrange(repo, opts[b'source']) - revs = set(repo.revs(b'%ld::', source_revs)) + revs = set(repo.revs(b'(%ld::) - obsolete()', source_revs)) if wdirrev in source_revs: # `wdir()::` is currently empty, so manually add wdir revs.add(wdirrev) diff --git a/tests/test-fix-topology.t b/tests/test-fix-topology.t --- a/tests/test-fix-topology.t +++ b/tests/test-fix-topology.t @@ -390,14 +390,11 @@ o 0 A $ hg fix -s A - abort: fixing obsolete revision could cause divergence - [255] $ hg fix -s B - abort: fixing obsolete revision could cause divergence + abort: no changesets specified + (use --source or --working-dir) [255] $ hg fix -s D - abort: fixing obsolete revision could cause divergence - [255] $ hg fix -s E $ cd ..