mercurial/hg.py
changeset 862 d70c1c31fd45
parent 861 cbe5c4d016b7
child 863 a7e95e3606c7
equal deleted inserted replaced
861:cbe5c4d016b7 862:d70c1c31fd45
   390         self.copies[dest] = source
   390         self.copies[dest] = source
   391 
   391 
   392     def copied(self, file):
   392     def copied(self, file):
   393         return self.copies.get(file, None)
   393         return self.copies.get(file, None)
   394 
   394 
   395     def update(self, files, state):
   395     def update(self, files, state, **kw):
   396         ''' current states:
   396         ''' current states:
   397         n  normal
   397         n  normal
   398         m  needs merging
   398         m  needs merging
   399         r  marked for removal
   399         r  marked for removal
   400         a  marked for addition'''
   400         a  marked for addition'''
   405         for f in files:
   405         for f in files:
   406             if state == "r":
   406             if state == "r":
   407                 self.map[f] = ('r', 0, 0, 0)
   407                 self.map[f] = ('r', 0, 0, 0)
   408             else:
   408             else:
   409                 s = os.stat(os.path.join(self.root, f))
   409                 s = os.stat(os.path.join(self.root, f))
   410                 self.map[f] = (state, s.st_mode, s.st_size, s.st_mtime)
   410                 st_mode = kw.get('st_mode', s.st_mode)
       
   411                 st_size = kw.get('st_size', s.st_size)
       
   412                 st_mtime = kw.get('st_mtime', s.st_mtime)
       
   413                 self.map[f] = (state, st_mode, st_size, st_mtime)
   411 
   414 
   412     def forget(self, files):
   415     def forget(self, files):
   413         if not files: return
   416         if not files: return
   414         self.read()
   417         self.read()
   415         self.markdirty()
   418         self.markdirty()
  1569         for f in files:
  1572         for f in files:
  1570             self.ui.status("merging %s\n" % f)
  1573             self.ui.status("merging %s\n" % f)
  1571             m, o, flag = merge[f]
  1574             m, o, flag = merge[f]
  1572             self.merge3(f, m, o)
  1575             self.merge3(f, m, o)
  1573             util.set_exec(self.wjoin(f), flag)
  1576             util.set_exec(self.wjoin(f), flag)
  1574             if moddirstate and mode == 'm':
  1577             if moddirstate:
  1575                 # only update dirstate on branch merge, otherwise we
  1578                 if mode == 'm':
  1576                 # could mark files with changes as unchanged
  1579                     # only update dirstate on branch merge, otherwise we
  1577                 self.dirstate.update([f], mode)
  1580                     # could mark files with changes as unchanged
       
  1581                     self.dirstate.update([f], mode)
       
  1582                 elif p2 == nullid:
       
  1583                     # update dirstate from parent1's manifest
       
  1584                     m1n = self.changelog.read(p1)[0]
       
  1585                     m1 = self.manifest.read(m1n)
       
  1586                     file_ = self.file(f)
       
  1587                     f_len = file_.length(file_.rev(m1[f]))
       
  1588                     self.dirstate.update([f], mode, st_size=f_len, st_mtime=0)
       
  1589                 else:
       
  1590                     self.ui.warn("Second parent without branch merge!?\n"
       
  1591                                  "Dirstate for file %s may be wrong.\n" % f)
  1578 
  1592 
  1579         remove.sort()
  1593         remove.sort()
  1580         for f in remove:
  1594         for f in remove:
  1581             self.ui.note("removing %s\n" % f)
  1595             self.ui.note("removing %s\n" % f)
  1582             try:
  1596             try: