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 16 insertions and 6 deletions:
0 comments (0 inline, 0 general)
rhodecode/lib/unionrepo.py
Show inline comments
 
@@ -14,12 +14,13 @@ allowing operations like diff and log wi
 
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.
 
        #
 
@@ -28,22 +29,22 @@ class unionrevlog(revlog.revlog):
 
        opener = scmutil.readonlyvfs(opener)
 
        revlog.revlog.__init__(self, opener, indexfile)
 
        self.revlog2 = revlog2
 

	
 
        n = len(self)
 
        self.repotiprev = n - 1
 
        self.bundlerevs = set() # used by 'bundle()' revset expression
 
        self.bundlerevs = set()  # used by 'bundle()' revset expression
 
        for rev2 in self.revlog2:
 
            rev = self.revlog2.index[rev2]
 
            # rev numbers - in revlog2, very different from self.rev
 
            _start, _csize, _rsize, _base, linkrev, p1rev, p2rev, node = rev
 

	
 
            if linkmapper is None: # link is to same revlog
 
                assert linkrev == rev2 # we never link back
 
            if linkmapper is None:  # link is to same revlog
 
                assert linkrev == rev2  # we never link back
 
                link = n
 
            else: # rev must be mapped from repo2 cl to unified cl by linkmapper
 
            else:  # rev must be mapped from repo2 cl to unified cl by linkmapper
 
                link = linkmapper(linkrev)
 

	
 
            if node in self.nodemap:
 
                # this happens for the common revlog revisions
 
                self.bundlerevs.add(self.nodemap[node])
 
                continue
 
@@ -96,49 +97,57 @@ class unionrevlog(revlog.revlog):
 
            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),
 
@@ -173,13 +182,14 @@ class unionrepository(localrepo.localrep
 
        return False
 

	
 
    def peer(self):
 
        return unionpeer(self)
 

	
 
    def getcwd(self):
 
        return os.getcwd() # always outside the repo
 
        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:
 
@@ -191,13 +201,13 @@ def instance(ui, path, create):
 
        # 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.
 
        cwd = os.getcwd()
 
        if parentpath == cwd:
 
            parentpath = ''
 
        else:
 
            cwd = os.path.join(cwd,'')
 
            cwd = os.path.join(cwd, '')
 
            if parentpath.startswith(cwd):
 
                parentpath = parentpath[len(cwd):]
 
    if path.startswith('union:'):
 
        s = path.split(":", 1)[1].split("+", 1)
 
        if len(s) == 1:
 
            repopath, repopath2 = parentpath, s[0]
0 comments (0 inline, 0 general)