mercurial/dirstate.py
changeset 3154 b1f10d3223c1
parent 2962 882e703eaa94
child 3223 53e843840349
equal deleted inserted replaced
3153:c82ea81d6850 3154:b1f10d3223c1
    21         self.dirty = 0
    21         self.dirty = 0
    22         self.ui = ui
    22         self.ui = ui
    23         self.map = None
    23         self.map = None
    24         self.pl = None
    24         self.pl = None
    25         self.dirs = None
    25         self.dirs = None
    26         self.copies = {}
    26         self.copymap = {}
    27         self.ignorefunc = None
    27         self.ignorefunc = None
    28         self.blockignore = False
    28         self.blockignore = False
    29 
    29 
    30     def wjoin(self, f):
    30     def wjoin(self, f):
    31         return os.path.join(self.root, f)
    31         return os.path.join(self.root, f)
   158     def parse(self, st):
   158     def parse(self, st):
   159         self.pl = [st[:20], st[20: 40]]
   159         self.pl = [st[:20], st[20: 40]]
   160 
   160 
   161         # deref fields so they will be local in loop
   161         # deref fields so they will be local in loop
   162         map = self.map
   162         map = self.map
   163         copies = self.copies
   163         copymap = self.copymap
   164         format = self.format
   164         format = self.format
   165         unpack = struct.unpack
   165         unpack = struct.unpack
   166 
   166 
   167         pos = 40
   167         pos = 40
   168         e_size = struct.calcsize(format)
   168         e_size = struct.calcsize(format)
   174             pos = newpos
   174             pos = newpos
   175             newpos = pos + l
   175             newpos = pos + l
   176             f = st[pos:newpos]
   176             f = st[pos:newpos]
   177             if '\0' in f:
   177             if '\0' in f:
   178                 f, c = f.split('\0')
   178                 f, c = f.split('\0')
   179                 copies[f] = c
   179                 copymap[f] = c
   180             map[f] = e[:4]
   180             map[f] = e[:4]
   181             pos = newpos
   181             pos = newpos
   182 
   182 
   183     def read(self):
   183     def read(self):
   184         self.map = {}
   184         self.map = {}
   191             if err.errno != errno.ENOENT: raise
   191             if err.errno != errno.ENOENT: raise
   192 
   192 
   193     def copy(self, source, dest):
   193     def copy(self, source, dest):
   194         self.lazyread()
   194         self.lazyread()
   195         self.markdirty()
   195         self.markdirty()
   196         self.copies[dest] = source
   196         self.copymap[dest] = source
   197 
   197 
   198     def copied(self, file):
   198     def copied(self, file):
   199         return self.copies.get(file, None)
   199         return self.copymap.get(file, None)
       
   200 
       
   201     def copies(self):
       
   202         return self.copymap
   200 
   203 
   201     def initdirs(self):
   204     def initdirs(self):
   202         if self.dirs is None:
   205         if self.dirs is None:
   203             self.dirs = {}
   206             self.dirs = {}
   204             for f in self.map:
   207             for f in self.map:
   252                     self.updatedirs(f, 1)
   255                     self.updatedirs(f, 1)
   253                 s = os.lstat(self.wjoin(f))
   256                 s = os.lstat(self.wjoin(f))
   254                 st_size = kw.get('st_size', s.st_size)
   257                 st_size = kw.get('st_size', s.st_size)
   255                 st_mtime = kw.get('st_mtime', s.st_mtime)
   258                 st_mtime = kw.get('st_mtime', s.st_mtime)
   256                 self.map[f] = (state, s.st_mode, st_size, st_mtime)
   259                 self.map[f] = (state, s.st_mode, st_size, st_mtime)
   257             if self.copies.has_key(f):
   260             if self.copymap.has_key(f):
   258                 del self.copies[f]
   261                 del self.copymap[f]
   259 
   262 
   260     def forget(self, files):
   263     def forget(self, files):
   261         if not files: return
   264         if not files: return
   262         self.lazyread()
   265         self.lazyread()
   263         self.markdirty()
   266         self.markdirty()
   270                 self.ui.warn(_("not in dirstate: %s!\n") % f)
   273                 self.ui.warn(_("not in dirstate: %s!\n") % f)
   271                 pass
   274                 pass
   272 
   275 
   273     def clear(self):
   276     def clear(self):
   274         self.map = {}
   277         self.map = {}
   275         self.copies = {}
   278         self.copymap = {}
   276         self.dirs = None
   279         self.dirs = None
   277         self.markdirty()
   280         self.markdirty()
   278 
   281 
   279     def rebuild(self, parent, files):
   282     def rebuild(self, parent, files):
   280         self.clear()
   283         self.clear()