mercurial/localrepo.py
changeset 1883 b98160cfb2f3
parent 1882 c0320567931f
child 1885 c4d577262d00
equal deleted inserted replaced
1882:c0320567931f 1883:b98160cfb2f3
  1634                     self.dirstate.update([f], 'n')
  1634                     self.dirstate.update([f], 'n')
  1635 
  1635 
  1636         # merge the tricky bits
  1636         # merge the tricky bits
  1637         files = merge.keys()
  1637         files = merge.keys()
  1638         files.sort()
  1638         files.sort()
       
  1639         xp1 = hex(p1)
       
  1640         xp2 = hex(p2)
  1639         for f in files:
  1641         for f in files:
  1640             self.ui.status(_("merging %s\n") % f)
  1642             self.ui.status(_("merging %s\n") % f)
  1641             my, other, flag = merge[f]
  1643             my, other, flag = merge[f]
  1642             ret = self.merge3(f, my, other)
  1644             ret = self.merge3(f, my, other, xp1, xp2)
  1643             if ret:
  1645             if ret:
  1644                 err = True
  1646                 err = True
  1645             util.set_exec(self.wjoin(f), flag)
  1647             util.set_exec(self.wjoin(f), flag)
  1646             if moddirstate:
  1648             if moddirstate:
  1647                 if branch_merge:
  1649                 if branch_merge:
  1675 
  1677 
  1676         if moddirstate:
  1678         if moddirstate:
  1677             self.dirstate.setparents(p1, p2)
  1679             self.dirstate.setparents(p1, p2)
  1678         return err
  1680         return err
  1679 
  1681 
  1680     def merge3(self, fn, my, other):
  1682     def merge3(self, fn, my, other, p1, p2):
  1681         """perform a 3-way merge in the working directory"""
  1683         """perform a 3-way merge in the working directory"""
  1682 
  1684 
  1683         def temp(prefix, node):
  1685         def temp(prefix, node):
  1684             pre = "%s~%s." % (os.path.basename(fn), prefix)
  1686             pre = "%s~%s." % (os.path.basename(fn), prefix)
  1685             (fd, name) = tempfile.mkstemp("", pre)
  1687             (fd, name) = tempfile.mkstemp("", pre)
  1698         self.ui.debug(_("file %s: my %s other %s ancestor %s\n") %
  1700         self.ui.debug(_("file %s: my %s other %s ancestor %s\n") %
  1699                               (fn, short(my), short(other), short(base)))
  1701                               (fn, short(my), short(other), short(base)))
  1700 
  1702 
  1701         cmd = (os.environ.get("HGMERGE") or self.ui.config("ui", "merge")
  1703         cmd = (os.environ.get("HGMERGE") or self.ui.config("ui", "merge")
  1702                or "hgmerge")
  1704                or "hgmerge")
  1703         r = os.system('%s "%s" "%s" "%s"' % (cmd, a, b, c))
  1705         r = util.system('%s "%s" "%s" "%s"' % (cmd, a, b, c),
       
  1706                         environ={'HG_ROOT': self.root,
       
  1707                                  'HG_FILE': fn,
       
  1708                                  'HG_MY_NODE': p1,
       
  1709                                  'HG_OTHER_NODE': p2,
       
  1710                                  'HG_FILE_MY_NODE': hex(my),
       
  1711                                  'HG_FILE_OTHER_NODE': hex(other),
       
  1712                                  'HG_FILE_BASE_NODE': hex(base)})
  1704         if r:
  1713         if r:
  1705             self.ui.warn(_("merging %s failed!\n") % fn)
  1714             self.ui.warn(_("merging %s failed!\n") % fn)
  1706 
  1715 
  1707         os.unlink(b)
  1716         os.unlink(b)
  1708         os.unlink(c)
  1717         os.unlink(c)