diff --git a/hgext/strip.py b/hgext/strip.py --- a/hgext/strip.py +++ b/hgext/strip.py @@ -142,10 +142,7 @@ def stripcmd(ui, repo, *revs, **opts): uniquebm = False break if uniquebm: - rsrevs = repo.revs("ancestors(bookmark(%s)) - " - "ancestors(head() and not bookmark(%s)) - " - "ancestors(bookmark() and not bookmark(%s))", - mark, mark, mark) + rsrevs = repair.stripbmrevset(repo, mark) revs.update(set(rsrevs)) if not revs: del marks[mark] diff --git a/mercurial/repair.py b/mercurial/repair.py --- a/mercurial/repair.py +++ b/mercurial/repair.py @@ -299,3 +299,15 @@ def rebuildfncache(ui, repo): finally: lock.release() +def stripbmrevset(repo, mark): + """ + The revset to strip when strip is called with -B mark + + Needs to live here so extensions can use it and wrap it even when strip is + not enabled or not present on a box. + """ + return repo.revs("ancestors(bookmark(%s)) - " + "ancestors(head() and not bookmark(%s)) - " + "ancestors(bookmark() and not bookmark(%s))", + mark, mark, mark) +