mercurial/context.py
changeset 3130 da85145d4571
parent 2858 345bac2bc4ec
child 3131 4ea58eb3f0c9
equal deleted inserted replaced
3122:2ef0b3aae186 3130:da85145d4571
     2 #
     2 #
     3 # Copyright 2006 Matt Mackall <mpm@selenic.com>
     3 # Copyright 2006 Matt Mackall <mpm@selenic.com>
     4 #
     4 #
     5 # This software may be used and distributed according to the terms
     5 # This software may be used and distributed according to the terms
     6 # of the GNU General Public License, incorporated herein by reference.
     6 # of the GNU General Public License, incorporated herein by reference.
       
     7 
       
     8 from node import *
     7 
     9 
     8 class changectx(object):
    10 class changectx(object):
     9     """A changecontext object makes access to data related to a particular
    11     """A changecontext object makes access to data related to a particular
    10     changeset convenient."""
    12     changeset convenient."""
    11     def __init__(self, repo, changeid):
    13     def __init__(self, repo, changeid):
    31 
    33 
    32     def rev(self): return self._rev
    34     def rev(self): return self._rev
    33     def node(self): return self._node
    35     def node(self): return self._node
    34     def user(self): return self.changeset()[1]
    36     def user(self): return self.changeset()[1]
    35     def date(self): return self.changeset()[2]
    37     def date(self): return self.changeset()[2]
    36     def changedfiles(self): return self.changeset()[3]
    38     def files(self): return self.changeset()[3]
    37     def description(self): return self.changeset()[4]
    39     def description(self): return self.changeset()[4]
    38 
    40 
    39     def parents(self):
    41     def parents(self):
    40         """return contexts for each parent changeset"""
    42         """return contexts for each parent changeset"""
    41         p = self._repo.changelog.parents(self._node)
    43         p = self._repo.changelog.parents(self._node)
   109     def manifest(self): return self.changectx().manifest()
   111     def manifest(self): return self.changectx().manifest()
   110 
   112 
   111     def data(self): return self._filelog.read(self._filenode)
   113     def data(self): return self._filelog.read(self._filenode)
   112     def metadata(self): return self._filelog.readmeta(self._filenode)
   114     def metadata(self): return self._filelog.readmeta(self._filenode)
   113     def renamed(self): return self._filelog.renamed(self._filenode)
   115     def renamed(self): return self._filelog.renamed(self._filenode)
       
   116     def path(self): return self._path
   114 
   117 
   115     def parents(self):
   118     def parents(self):
   116         # need to fix for renames
   119         p = [ (self._path, n) for n in self._filelog.parents(self._filenode) ]
   117         p = self._filelog.parents(self._filenode)
   120         r = self.renamed()
   118         return [ filectx(self._repo, self._path, fileid=x) for x in p ]
   121         if r:
       
   122             p[0] = r
       
   123         return [ filectx(self._repo, p, fileid=n) for p,n in p if n != nullid ]
   119 
   124 
   120     def children(self):
   125     def children(self):
   121         # hard for renames
   126         # hard for renames
   122         c = self._filelog.children(self._filenode)
   127         c = self._filelog.children(self._filenode)
   123         return [ filectx(self._repo, self._path, fileid=x) for x in c ]
   128         return [ filectx(self._repo, self._path, fileid=x) for x in c ]