mercurial/statichttprepo.py
author Bryan O'Sullivan <bos@serpentine.com>
Sun, 18 Sep 2005 15:03:07 -0700
changeset 1276 25e5b1086624
parent 1101 2cf5c8a4eae5
child 1325 57220daf40e9
permissions -rw-r--r--
Fix dirstate.changes for ignored directories. Do a second walking pass to examine any leftover files in the dirstate map that are in the .hgignore file but match our search criteria. This fixes the case of entire directories never being examined due to their presence in the .hgignore file, and should hopefully not add any significant overhead.

# statichttprepo.py - simple http repository class for mercurial
#
# This provides read-only repo access to repositories exported via static http
#
# 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.

import os, urllib
import localrepo, httprangereader, filelog, manifest, changelog

def opener(base):
    """return a function that opens files over http"""
    p = base
    def o(path, mode="r"):
        f = os.path.join(p, urllib.quote(path))
        return httprangereader.httprangereader(f)
    return o

class statichttprepository(localrepo.localrepository):
    def __init__(self, ui, path):
        self.path = (path + "/.hg")
        self.ui = ui
        self.opener = opener(self.path)
        self.manifest = manifest.manifest(self.opener)
        self.changelog = changelog.changelog(self.opener)
        self.tagscache = None
        self.nodetagscache = None

    def dev(self):
        return -1

    def local(self):
        return False