mercurial/unionrepo.py
changeset 42828 f8b5da997a39
parent 42827 a61a8f78da28
child 42829 853f70137437
equal deleted inserted replaced
42827:a61a8f78da28 42828:f8b5da997a39
   110         return func(node, _df=_df, raw=raw)
   110         return func(node, _df=_df, raw=raw)
   111 
   111 
   112     def rawdata(self, nodeorrev, _df=None):
   112     def rawdata(self, nodeorrev, _df=None):
   113         return self.revision(nodeorrev, _df=_df, raw=True)
   113         return self.revision(nodeorrev, _df=_df, raw=True)
   114 
   114 
   115     def baserevdiff(self, rev1, rev2):
       
   116         # Revlog subclasses may override 'revdiff' method to modify format of
       
   117         # content retrieved from revlog. To use unionrevlog with such class one
       
   118         # needs to override 'baserevdiff' and make more specific call here.
       
   119         return revlog.revlog.revdiff(self, rev1, rev2)
       
   120 
       
   121     def addrevision(self, text, transaction, link, p1=None, p2=None, d=None):
   115     def addrevision(self, text, transaction, link, p1=None, p2=None, d=None):
   122         raise NotImplementedError
   116         raise NotImplementedError
   123     def addgroup(self, deltas, linkmapper, transaction, addrevisioncb=None,
   117     def addgroup(self, deltas, linkmapper, transaction, addrevisioncb=None,
   124                  maybemissingparents=False):
   118                  maybemissingparents=False):
   125         raise NotImplementedError
   119         raise NotImplementedError
   134         linkmapper = None
   128         linkmapper = None
   135         changelog2 = changelog.changelog(opener2)
   129         changelog2 = changelog.changelog(opener2)
   136         unionrevlog.__init__(self, opener, self.indexfile, changelog2,
   130         unionrevlog.__init__(self, opener, self.indexfile, changelog2,
   137                              linkmapper)
   131                              linkmapper)
   138 
   132 
   139     def baserevdiff(self, rev1, rev2):
       
   140         # Although changelog doesn't override 'revdiff' method, some extensions
       
   141         # may replace this class with another that does. Same story with
       
   142         # manifest and filelog classes.
       
   143         return changelog.changelog.revdiff(self, rev1, rev2)
       
   144 
       
   145 class unionmanifest(unionrevlog, manifest.manifestrevlog):
   133 class unionmanifest(unionrevlog, manifest.manifestrevlog):
   146     def __init__(self, opener, opener2, linkmapper):
   134     def __init__(self, opener, opener2, linkmapper):
   147         manifest.manifestrevlog.__init__(self, opener)
   135         manifest.manifestrevlog.__init__(self, opener)
   148         manifest2 = manifest.manifestrevlog(opener2)
   136         manifest2 = manifest.manifestrevlog(opener2)
   149         unionrevlog.__init__(self, opener, self.indexfile, manifest2,
   137         unionrevlog.__init__(self, opener, self.indexfile, manifest2,
   150                              linkmapper)
   138                              linkmapper)
   151 
       
   152     def baserevdiff(self, rev1, rev2):
       
   153         return manifest.manifestrevlog.revdiff(self, rev1, rev2)
       
   154 
   139 
   155 class unionfilelog(filelog.filelog):
   140 class unionfilelog(filelog.filelog):
   156     def __init__(self, opener, path, opener2, linkmapper, repo):
   141     def __init__(self, opener, path, opener2, linkmapper, repo):
   157         filelog.filelog.__init__(self, opener, path)
   142         filelog.filelog.__init__(self, opener, path)
   158         filelog2 = filelog.filelog(opener2, path)
   143         filelog2 = filelog.filelog(opener2, path)
   159         self._revlog = unionrevlog(opener, self.indexfile,
   144         self._revlog = unionrevlog(opener, self.indexfile,
   160                                    filelog2._revlog, linkmapper)
   145                                    filelog2._revlog, linkmapper)
   161         self._repo = repo
   146         self._repo = repo
   162         self.repotiprev = self._revlog.repotiprev
   147         self.repotiprev = self._revlog.repotiprev
   163         self.revlog2 = self._revlog.revlog2
   148         self.revlog2 = self._revlog.revlog2
   164 
       
   165     def baserevdiff(self, rev1, rev2):
       
   166         return filelog.filelog.revdiff(self, rev1, rev2)
       
   167 
   149 
   168     def iscensored(self, rev):
   150     def iscensored(self, rev):
   169         """Check if a revision is censored."""
   151         """Check if a revision is censored."""
   170         if rev <= self.repotiprev:
   152         if rev <= self.repotiprev:
   171             return filelog.filelog.iscensored(self, rev)
   153             return filelog.filelog.iscensored(self, rev)