comparison mercurial/localrepo.py @ 1663:d529cdc0a3ee

return a non-zero exit code when a merge failed
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Mon, 30 Jan 2006 12:02:06 +1300
parents c6ffedc4f11b
children daff3ef0de8d
comparison
equal deleted inserted replaced
1660:b2df93c56ac4 1663:d529cdc0a3ee
1381 pl = self.dirstate.parents() 1381 pl = self.dirstate.parents()
1382 if not force and pl[1] != nullid: 1382 if not force and pl[1] != nullid:
1383 self.ui.warn(_("aborting: outstanding uncommitted merges\n")) 1383 self.ui.warn(_("aborting: outstanding uncommitted merges\n"))
1384 return 1 1384 return 1
1385 1385
1386 err = False
1387
1386 p1, p2 = pl[0], node 1388 p1, p2 = pl[0], node
1387 pa = self.changelog.ancestor(p1, p2) 1389 pa = self.changelog.ancestor(p1, p2)
1388 m1n = self.changelog.read(p1)[0] 1390 m1n = self.changelog.read(p1)[0]
1389 m2n = self.changelog.read(p2)[0] 1391 m2n = self.changelog.read(p2)[0]
1390 man = self.manifest.ancestor(m1n, m2n) 1392 man = self.manifest.ancestor(m1n, m2n)
1596 files = merge.keys() 1598 files = merge.keys()
1597 files.sort() 1599 files.sort()
1598 for f in files: 1600 for f in files:
1599 self.ui.status(_("merging %s\n") % f) 1601 self.ui.status(_("merging %s\n") % f)
1600 my, other, flag = merge[f] 1602 my, other, flag = merge[f]
1601 self.merge3(f, my, other) 1603 ret = self.merge3(f, my, other)
1604 if ret:
1605 err = True
1602 util.set_exec(self.wjoin(f), flag) 1606 util.set_exec(self.wjoin(f), flag)
1603 if moddirstate: 1607 if moddirstate:
1604 if branch_merge: 1608 if branch_merge:
1605 # We've done a branch merge, mark this file as merged 1609 # We've done a branch merge, mark this file as merged
1606 # so that we properly record the merger later 1610 # so that we properly record the merger later
1629 else: 1633 else:
1630 self.dirstate.forget(remove) 1634 self.dirstate.forget(remove)
1631 1635
1632 if moddirstate: 1636 if moddirstate:
1633 self.dirstate.setparents(p1, p2) 1637 self.dirstate.setparents(p1, p2)
1638 return err
1634 1639
1635 def merge3(self, fn, my, other): 1640 def merge3(self, fn, my, other):
1636 """perform a 3-way merge in the working directory""" 1641 """perform a 3-way merge in the working directory"""
1637 1642
1638 def temp(prefix, node): 1643 def temp(prefix, node):
1659 if r: 1664 if r:
1660 self.ui.warn(_("merging %s failed!\n") % fn) 1665 self.ui.warn(_("merging %s failed!\n") % fn)
1661 1666
1662 os.unlink(b) 1667 os.unlink(b)
1663 os.unlink(c) 1668 os.unlink(c)
1669 return r
1664 1670
1665 def verify(self): 1671 def verify(self):
1666 filelinkrevs = {} 1672 filelinkrevs = {}
1667 filenodes = {} 1673 filenodes = {}
1668 changesets = revisions = files = 0 1674 changesets = revisions = files = 0