Changeset - f3283898d431
[Not reviewed]
beta
0 1 0
Marcin Kuzminski - 13 years ago 2013-03-24 19:53:09
marcin@python-works.com
pep8 unionrepo
1 file changed with 10 insertions and 0 deletions:
0 comments (0 inline, 0 general)
rhodecode/lib/unionrepo.py
Show inline comments
 
@@ -8,24 +8,25 @@
 
# GNU General Public License version 2 or any later version.
 

	
 
"""Repository class for "in-memory pull" of one local repository to another,
 
allowing operations like diff and log with revsets.
 
"""
 

	
 
import os
 
from mercurial.node import nullid
 
from mercurial.i18n import _
 
from mercurial import util, mdiff, cmdutil, scmutil
 
from mercurial import localrepo, changelog, manifest, filelog, revlog
 

	
 

	
 
class unionrevlog(revlog.revlog):
 
    def __init__(self, opener, indexfile, revlog2, linkmapper):
 
        # How it works:
 
        # To retrieve a revision, we just need to know the node id so we can
 
        # look it up in revlog2.
 
        #
 
        # To differentiate a rev in the second revlog from a rev in the revlog,
 
        # we check revision against repotiprev.
 
        opener = scmutil.readonlyvfs(opener)
 
        revlog.revlog.__init__(self, opener, indexfile)
 
        self.revlog2 = revlog2
 

	
 
@@ -90,61 +91,69 @@ class unionrevlog(revlog.revlog):
 
            return ""
 

	
 
        if rev > self.repotiprev:
 
            text = self.revlog2.revision(node)
 
            self._cache = (node, rev, text)
 
        else:
 
            text = revlog.revlog.revision(self, rev)
 
            # already cached
 
        return text
 

	
 
    def addrevision(self, text, transaction, link, p1=None, p2=None, d=None):
 
        raise NotImplementedError
 

	
 
    def addgroup(self, revs, linkmapper, transaction):
 
        raise NotImplementedError
 

	
 
    def strip(self, rev, minlink):
 
        raise NotImplementedError
 

	
 
    def checksize(self):
 
        raise NotImplementedError
 

	
 

	
 
class unionchangelog(unionrevlog, changelog.changelog):
 
    def __init__(self, opener, opener2):
 
        changelog.changelog.__init__(self, opener)
 
        linkmapper = None
 
        changelog2 = changelog.changelog(opener2)
 
        unionrevlog.__init__(self, opener, self.indexfile, changelog2,
 
                             linkmapper)
 

	
 

	
 
class unionmanifest(unionrevlog, manifest.manifest):
 
    def __init__(self, opener, opener2, linkmapper):
 
        manifest.manifest.__init__(self, opener)
 
        manifest2 = manifest.manifest(opener2)
 
        unionrevlog.__init__(self, opener, self.indexfile, manifest2,
 
                             linkmapper)
 

	
 

	
 
class unionfilelog(unionrevlog, filelog.filelog):
 
    def __init__(self, opener, path, opener2, linkmapper, repo):
 
        filelog.filelog.__init__(self, opener, path)
 
        filelog2 = filelog.filelog(opener2, path)
 
        unionrevlog.__init__(self, opener, self.indexfile, filelog2,
 
                             linkmapper)
 
        self._repo = repo
 

	
 
    def _file(self, f):
 
        self._repo.file(f)
 

	
 

	
 
class unionpeer(localrepo.localpeer):
 
    def canpush(self):
 
        return False
 

	
 

	
 
class unionrepository(localrepo.localrepository):
 
    def __init__(self, ui, path, path2):
 
        localrepo.localrepository.__init__(self, ui, path)
 
        self.ui.setconfig('phases', 'publish', False)
 

	
 
        self._url = 'union:%s+%s' % (util.expandpath(path),
 
                                     util.expandpath(path2))
 
        self.repo2 = localrepo.localrepository(ui, path2)
 

	
 
    @localrepo.unfilteredpropertycache
 
    def changelog(self):
 
        return unionchangelog(self.sopener, self.repo2.sopener)
 
@@ -169,24 +178,25 @@ class unionrepository(localrepo.localrep
 
    def close(self):
 
        self.repo2.close()
 

	
 
    def cancopy(self):
 
        return False
 

	
 
    def peer(self):
 
        return unionpeer(self)
 

	
 
    def getcwd(self):
 
        return os.getcwd() # always outside the repo
 

	
 

	
 
def instance(ui, path, create):
 
    if create:
 
        raise util.Abort(_('cannot create new union repository'))
 
    parentpath = ui.config("bundle", "mainreporoot", "")
 
    if not parentpath:
 
        # try to find the correct path to the working directory repo
 
        parentpath = cmdutil.findrepo(os.getcwd())
 
        if parentpath is None:
 
            parentpath = ''
 
    if parentpath:
 
        # Try to make the full path relative so we get a nice, short URL.
 
        # In particular, we don't want temp dir names in test outputs.
0 comments (0 inline, 0 general)