diff --git a/hggit/git_handler.py b/hggit/git_handler.py
index 2806bcabd8965e8a711080007bc5dedd560719fd_aGdnaXQvZ2l0X2hhbmRsZXIucHk=..256a232e689db30007618bba1b3cbd74e133ee44_aGdnaXQvZ2l0X2hhbmRsZXIucHk= 100644
--- a/hggit/git_handler.py
+++ b/hggit/git_handler.py
@@ -1,4 +1,4 @@
-import os, math, urllib, urllib2, re
+import collections, itertools, os, math, urllib, urllib2, re
 import stat, posixpath, StringIO
 
 from dulwich.errors import HangupException, GitProtocolError, UpdateRefsError
@@ -1123,6 +1123,25 @@
                     return bm
             return [(_filter_bm(bm), bm) for bm in bms]
 
+    def get_exportable(self):
+        class heads_tags(object):
+            def __init__(self):
+                self.heads = set()
+                self.tags = set()
+            def __iter__(self):
+                return itertools.chain(self.heads, self.tags)
+            def __nonzero__(self):
+                return bool(self.heads) or bool(self.tags)
+
+        res = collections.defaultdict(heads_tags)
+
+        bms = self.repo._bookmarks
+        for filtered_bm, bm in self._filter_for_bookmarks(bms):
+            res[hex(bms[bm])].heads.add('refs/heads/' + filtered_bm)
+        for tag, sha in self.tags.iteritems():
+            res[sha].tags.add('refs/tags/' + tag)
+        return res
+
     def local_heads(self):
         bms = self.repo._bookmarks
         return dict((filtered_bm, ('refs/heads/' + filtered_bm, hex(bms[bm])))