mercurial/hg.py
changeset 230 00ea3613f82c
parent 229 1b11da6ee69e
child 231 15e7c6cee929
equal deleted inserted replaced
229:1b11da6ee69e 230:00ea3613f82c
   424                 elif s == 'r':
   424                 elif s == 'r':
   425                     remove.append(f)
   425                     remove.append(f)
   426                 else:
   426                 else:
   427                     self.warn("%s not tracked!\n")
   427                     self.warn("%s not tracked!\n")
   428         else:
   428         else:
   429             (c, a, d, u) = self.diffdir(self.root, parent)
   429             (c, a, d, u) = self.diffdir(self.root)
   430             commit = c + a
   430             commit = c + a
   431             remove = d
   431             remove = d
   432 
   432 
   433         if not commit and not remove:
   433         if not commit and not remove:
   434             self.ui.status("nothing changed\n")
   434             self.ui.status("nothing changed\n")
   499 
   499 
   500         self.dirstate.setparents(node)
   500         self.dirstate.setparents(node)
   501         self.dirstate.clear()
   501         self.dirstate.clear()
   502         self.dirstate.update([f for f,n in l], "n")
   502         self.dirstate.update([f for f,n in l], "n")
   503 
   503 
   504     def diffdir(self, path, changeset):
   504     def diffdir(self, path, changeset = None):
   505         changed = []
   505         changed = []
   506         added = []
   506         added = []
   507         unknown = []
   507         unknown = []
   508         mf = {}
   508         mf = {}
   509 
   509 
   510         if changeset:
   510         if changeset:
   511             change = self.changelog.read(changeset)
   511             change = self.changelog.read(changeset)
   512             mf = self.manifest.read(change[0])
   512             mf = self.manifest.read(change[0])
   513 
   513             dc = dict.fromkeys(mf)
   514         if changeset == self.current:
   514         else:
       
   515             changeset = self.dirstate.parents()[0]
       
   516             change = self.changelog.read(changeset)
       
   517             mf = self.manifest.read(change[0])
   515             dc = self.dirstate.copy()
   518             dc = self.dirstate.copy()
   516         else:
       
   517             dc = dict.fromkeys(mf)
       
   518 
   519 
   519         def fcmp(fn):
   520         def fcmp(fn):
   520             t1 = file(os.path.join(self.root, fn)).read()
   521             t1 = file(os.path.join(self.root, fn)).read()
   521             t2 = self.file(fn).revision(mf[fn])
   522             t2 = self.file(fn).revision(mf[fn])
   522             return cmp(t1, t2)
   523             return cmp(t1, t2)
   533                     c = dc[fn]
   534                     c = dc[fn]
   534                     del dc[fn]
   535                     del dc[fn]
   535                     if not c:
   536                     if not c:
   536                         if fcmp(fn):
   537                         if fcmp(fn):
   537                             changed.append(fn)
   538                             changed.append(fn)
   538                     if c[0] == 'i':
   539                     elif c[0] == 'i':
   539                         if fn not in mf:
   540                         if fn not in mf:
   540                             added.append(fn)
   541                             added.append(fn)
   541                         elif fcmp(fn):
   542                         elif fcmp(fn):
   542                             changed.append(fn)
   543                             changed.append(fn)
   543                     elif c[0] == 'a':
   544                     elif c[0] == 'a':