mercurial/hg.py
author Vadim Gelfer <vadim.gelger@gmail.com>
Thu, 02 Mar 2006 11:38:03 -0800
changeset 1826 f3abe0bdccdd
parent 1102 c81d264cd17d
child 1945 dec6d3c13dbf
permissions -rw-r--r--
rewrite demandload module to be more flexible. performance not affected. old demandload module could only import top-level modules like os and sys. with rewrite, all of following syntax is emulated perfectly: import foo, bar foo bar import foo.bar.quux foo.bar.quux from foo.bar import quux, blurfl foo.bar:quux,blurfl only thing missing is "import foo as bar". also, namespace clashes between placeholder object and demand loaded module are no longer possible.

# hg.py - repository classes for mercurial
#
# Copyright 2005 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.

from node import *
from repo import *
from demandload import *
demandload(globals(), "localrepo httprepo sshrepo statichttprepo")

def repository(ui, path=None, create=0):
    if path:
        if path.startswith("http://"):
            return httprepo.httprepository(ui, path)
        if path.startswith("https://"):
            return httprepo.httpsrepository(ui, path)
        if path.startswith("hg://"):
            return httprepo.httprepository(
                ui, path.replace("hg://", "http://"))
        if path.startswith("old-http://"):
            return statichttprepo.statichttprepository(
                ui, path.replace("old-http://", "http://"))
        if path.startswith("ssh://"):
            return sshrepo.sshrepository(ui, path)

    return localrepo.localrepository(ui, path, create)