diff --git a/mercurial/repair.py b/mercurial/repair.py
index 52dfa1eb0ad4f6141849a88b8389f5e08c44cf0b_bWVyY3VyaWFsL3JlcGFpci5weQ==..b2ec79559a4bbc8388aa66416b5a4f34a7bdfa01_bWVyY3VyaWFsL3JlcGFpci5weQ== 100644
--- a/mercurial/repair.py
+++ b/mercurial/repair.py
@@ -24,6 +24,7 @@
     exchange,
     obsolete,
     obsutil,
+    phases,
     pycompat,
     util,
 )
@@ -276,7 +277,8 @@
     # orphaned = affected - wanted
     # affected = descendants(roots(wanted))
     # wanted = revs
-    tostrip = set(repo.revs('%ld-(::((roots(%ld)::)-%ld))', revs, revs, revs))
+    revset = '%ld - ( ::( (roots(%ld):: and not _phase(%s)) -%ld) )'
+    tostrip = set(repo.revs(revset, revs, revs, phases.internal, revs))
     notstrip = revs - tostrip
     if notstrip:
         nodestr = ', '.join(sorted(short(repo[n].node()) for n in notstrip))
diff --git a/tests/test-shelve.t b/tests/test-shelve.t
index 52dfa1eb0ad4f6141849a88b8389f5e08c44cf0b_dGVzdHMvdGVzdC1zaGVsdmUudA==..b2ec79559a4bbc8388aa66416b5a4f34a7bdfa01_dGVzdHMvdGVzdC1zaGVsdmUudA== 100644
--- a/tests/test-shelve.t
+++ b/tests/test-shelve.t
@@ -669,5 +669,4 @@
   shelved as default
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
-#if phasebased
   $ hg rebase -d 6c103be8f4e4 --config extensions.rebase=
@@ -673,3 +672,3 @@
   $ hg rebase -d 6c103be8f4e4 --config extensions.rebase=
-  rebasing 2:323bfa07f744 "xyz"
+  rebasing 2:323bfa07f744 "xyz"( \(tip\))? (re)
   merging x
@@ -675,13 +674,5 @@
   merging x
-  warning: orphaned descendants detected, not stripping 323bfa07f744 (?)
-#endif
-
-#if stripbased
-  $ hg rebase -d 6c103be8f4e4 --config extensions.rebase=
-  rebasing 2:323bfa07f744 "xyz" (tip)
-  merging x
-  saved backup bundle to $TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-78114325-rebase.hg
-#endif
+  saved backup bundle to \$TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-(78114325|7ae538ef)-rebase.hg (re)
   $ hg unshelve
   unshelving change 'default'
   rebasing shelved changes