Source code for pkgcore.sync.hg
__all__ = ("hg_syncer",)
import os
from . import base
[docs]
class hg_syncer(base.VcsSyncer):
binary = "hg"
supported_uris = (
("hg+", 5),
("mercurial+", 5),
)
[docs]
@classmethod
def is_usable_on_filepath(cls, path):
hg_path = os.path.join(path, ".hg")
if cls.disabled or not os.path.isdir(hg_path):
return None
return (cls._rewrite_uri_from_stat(hg_path, "hg+//"),)
[docs]
@staticmethod
def parse_uri(raw_uri):
if raw_uri.startswith("hg+"):
return raw_uri[3:]
elif raw_uri.startswith("mercurial+"):
return raw_uri[len("mercurial+") :]
raise base.UriError(raw_uri, "doesn't start with hg+ nor mercurial+")
def _initial_pull(self):
return [self.binary_path, "clone", self.uri, self.basedir]
def _update_existing(self):
# uri may not be set... happens when autodetecting.
if not self.uri.strip("/"):
return [self.binary_path, "pull"]
return [self.binary_path, "pull", "-u", self.uri]