Mercurial > hg > hg-git
view hggit/gitrepo.py @ 1052:5db8d0d0ae47
compat: update for upcoming hg 4.4 release
This is a bit of a simplification of an earlier patch from Jun Wu
<quark@fb.com>.
author | Kevin Bullock <kbullock@ringworld.org> |
---|---|
date | Sun, 01 Oct 2017 12:51:49 +0100 |
parents | be627eeee5a9 |
children |
line wrap: on
line source
from util import isgitsshuri from mercurial import util from mercurial.error import RepoError peerapi = False try: from mercurial.repository import peer as peerrepository peerapi = True except ImportError: from mercurial.peer import peerrepository class gitrepo(peerrepository): def __init__(self, ui, path, create): if create: # pragma: no cover raise util.Abort('Cannot create a git repository.') self._ui = ui self.path = path self.localrepo = None _peercapabilities = ['lookup'] def _capabilities(self): return self._peercapabilities def capabilities(self): return self._peercapabilities @property def ui(self): return self._ui def url(self): return self.path def lookup(self, key): if isinstance(key, str): return key def local(self): if not self.path: raise RepoError def heads(self): return [] def listkeys(self, namespace): if namespace == 'namespaces': return {'bookmarks': ''} elif namespace == 'bookmarks': if self.localrepo is not None: handler = self.localrepo.githandler refs = handler.fetch_pack(self.path, heads=[]) # map any git shas that exist in hg to hg shas stripped_refs = dict([ (ref[11:], handler.map_hg_get(refs[ref]) or refs[ref]) for ref in refs.keys() if ref.startswith('refs/heads/') ]) return stripped_refs return {} def pushkey(self, namespace, key, old, new): return False if peerapi: def branchmap(self): raise NotImplementedError def canpush(self): return True def close(self): pass def debugwireargs(self): raise NotImplementedError def getbundle(self): raise NotImplementedError def iterbatch(self): raise NotImplementedError def known(self): raise NotImplementedError def peer(self): return self def stream_out(self): raise NotImplementedError def unbundle(self): raise NotImplementedError instance = gitrepo def islocal(path): if isgitsshuri(path): return True u = util.url(path) return not u.scheme or u.scheme == 'file'