view mercurial/hg.py @ 2161:12e11413ca19

Fix just introduced possible old-http bug My last patch changed httprangereader.read to read only the specified amount of data from the connection, to prevent it from returning more than what was asked. I just realized that this could lead to the connection not being closed. In practice, it looks like the connection is closed just fine, but it's probably safer to read everything and then return only what's necessary.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Sun, 30 Apr 2006 18:50:53 +0200
parents dec6d3c13dbf
children d90a9d7c7d4d
line wrap: on
line source

# 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 bundlerepo 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)
        if path.startswith("bundle://"):
            path = path[9:]
            s = path.split("+", 1)
            if  len(s) == 1:
                repopath, bundlename = "", s[0]
            else:
                repopath, bundlename = s
            return bundlerepo.bundlerepository(ui, repopath, bundlename)

    return localrepo.localrepository(ui, path, create)