diff --git a/mercurial/hbisect.py b/mercurial/hbisect.py
index fa0a464e4ca56e73c24ce5592a18981415298358_bWVyY3VyaWFsL2hiaXNlY3QucHk=..aa2e908c521e4041e99e2a48742a4d411d8d1bb9_bWVyY3VyaWFsL2hiaXNlY3QucHk= 100644
--- a/mercurial/hbisect.py
+++ b/mercurial/hbisect.py
@@ -220,3 +220,32 @@
 
         else:
             raise error.ParseError(_('invalid bisect state'))
+
+def label(repo, node, short=False):
+    rev = repo.changelog.rev(node)
+
+    # Try explicit sets
+    if rev in get(repo, 'good'):
+        return _('good')
+    if rev in get(repo, 'bad'):
+        return _('bad')
+    if rev in get(repo, 'skip'):
+        return _('skipped')
+    if rev in get(repo, 'untested'):
+        return _('untested')
+    if rev in get(repo, 'ignored'):
+        return _('ignored')
+
+    # Try implicit sets
+    if rev in get(repo, 'goods'):
+        return _('good (implicit)')
+    if rev in get(repo, 'bads'):
+        return _('bad (implicit)')
+
+    return None
+
+def shortlabel(label):
+    if label:
+        return label[0].upper()
+
+    return None