mercurial/hg.py
changeset 114 82fb6d09f911
parent 113 1918852a67a8
child 118 a0e57df96e96
equal deleted inserted replaced
113:1918852a67a8 114:82fb6d09f911
   341 
   341 
   342         self.setcurrent(n)
   342         self.setcurrent(n)
   343         self.dircache.update(new)
   343         self.dircache.update(new)
   344         self.dircache.remove(remove)
   344         self.dircache.remove(remove)
   345 
   345 
   346     def checkdir(self, path):
       
   347         d = os.path.dirname(path)
       
   348         if not d: return
       
   349         if not os.path.isdir(d):
       
   350             self.checkdir(d)
       
   351             os.mkdir(d)
       
   352 
       
   353     def checkout(self, node):
   346     def checkout(self, node):
   354         # checkout is really dumb at the moment
   347         # checkout is really dumb at the moment
   355         # it ought to basically merge
   348         # it ought to basically merge
   356         change = self.changelog.read(node)
   349         change = self.changelog.read(node)
   357         mmap = self.manifest.read(change[0])
   350         l = self.manifest.read(change[0]).items()
   358 
       
   359         l = mmap.keys()
       
   360         l.sort()
   351         l.sort()
   361         stats = []
   352 
   362         for f in l:
   353         for f,n in l:
   363             self.ui.note(f + "\n")
   354             if f[0] == "/": continue
   364             r = self.file(f)
   355             self.ui.note(f, "\n")
   365             t = r.revision(mmap[f])
   356             t = self.file(f).revision(n)
   366             try:
   357             try:
   367                 file(f, "w").write(t)
   358                 file(f, "w").write(t)
   368             except:
   359             except IOError:
   369                 self.checkdir(f)
   360                 os.makedirs(os.path.dirname(f))
   370                 file(f, "w").write(t)
   361                 file(f, "w").write(t)
   371 
   362 
   372         self.setcurrent(node)
   363         self.setcurrent(node)
   373         self.dircache.clear()
   364         self.dircache.clear()
   374         self.dircache.update(l)
   365         self.dircache.update([f for f,n in l])
   375 
   366 
   376     def diffdir(self, path, changeset):
   367     def diffdir(self, path, changeset):
   377         changed = []
   368         changed = []
   378         mf = {}
   369         mf = {}
   379         added = []
   370         added = []