mercurial/hg.py
changeset 1019 a9cca981c423
parent 1013 2e8b8da9a86e
child 1040 35e883d1ff9b
equal deleted inserted replaced
1018:bb3f23fe59f0 1019:a9cca981c423
   771         return self.dirstate.getcwd()
   771         return self.dirstate.getcwd()
   772 
   772 
   773     def wfile(self, f, mode='r'):
   773     def wfile(self, f, mode='r'):
   774         return self.wopener(f, mode)
   774         return self.wopener(f, mode)
   775 
   775 
       
   776     def wread(self, filename):
       
   777         return self.wopener(filename, 'r').read()
       
   778 
       
   779     def wwrite(self, filename, data, fd=None):
       
   780         if fd:
       
   781             return fd.write(data)
       
   782         return self.wopener(filename, 'w').write(data)
       
   783 
   776     def transaction(self):
   784     def transaction(self):
   777         # save dirstate for undo
   785         # save dirstate for undo
   778         try:
   786         try:
   779             ds = self.opener("dirstate").read()
   787             ds = self.opener("dirstate").read()
   780         except IOError:
   788         except IOError:
   837         mm = m1.copy()
   845         mm = m1.copy()
   838         mfm = mf1.copy()
   846         mfm = mf1.copy()
   839         linkrev = self.changelog.count()
   847         linkrev = self.changelog.count()
   840         for f in files:
   848         for f in files:
   841             try:
   849             try:
   842                 t = self.wfile(f).read()
   850                 t = self.wread(f)
   843                 tm = util.is_exec(self.wjoin(f), mfm.get(f, False))
   851                 tm = util.is_exec(self.wjoin(f), mfm.get(f, False))
   844                 r = self.file(f)
   852                 r = self.file(f)
   845                 mfm[f] = tm
   853                 mfm[f] = tm
   846 
   854 
   847                 fp1 = m1.get(f, nullid)
   855                 fp1 = m1.get(f, nullid)
   930         commit.sort()
   938         commit.sort()
   931         for f in commit:
   939         for f in commit:
   932             self.ui.note(f + "\n")
   940             self.ui.note(f + "\n")
   933             try:
   941             try:
   934                 mf1[f] = util.is_exec(self.wjoin(f), mf1.get(f, False))
   942                 mf1[f] = util.is_exec(self.wjoin(f), mf1.get(f, False))
   935                 t = self.wfile(f).read()
   943                 t = self.wread(f)
   936             except IOError:
   944             except IOError:
   937                 self.ui.warn("trouble committing %s!\n" % f)
   945                 self.ui.warn("trouble committing %s!\n" % f)
   938                 raise
   946                 raise
   939 
   947 
   940             meta = {}
   948             meta = {}
  1021     def changes(self, node1 = None, node2 = None, files = [],
  1029     def changes(self, node1 = None, node2 = None, files = [],
  1022                 match = util.always):
  1030                 match = util.always):
  1023         mf2, u = None, []
  1031         mf2, u = None, []
  1024 
  1032 
  1025         def fcmp(fn, mf):
  1033         def fcmp(fn, mf):
  1026             t1 = self.wfile(fn).read()
  1034             t1 = self.wread(fn)
  1027             t2 = self.file(fn).read(mf.get(fn, nullid))
  1035             t2 = self.file(fn).read(mf.get(fn, nullid))
  1028             return cmp(t1, t2)
  1036             return cmp(t1, t2)
  1029 
  1037 
  1030         def mfmatches(node):
  1038         def mfmatches(node):
  1031             mf = dict(self.manifest.read(node))
  1039             mf = dict(self.manifest.read(node))
  1658             if f in m2:
  1666             if f in m2:
  1659                 s = 0
  1667                 s = 0
  1660 
  1668 
  1661                 # is the wfile new since m1, and match m2?
  1669                 # is the wfile new since m1, and match m2?
  1662                 if f not in m1:
  1670                 if f not in m1:
  1663                     t1 = self.wfile(f).read()
  1671                     t1 = self.wread(f)
  1664                     t2 = self.file(f).read(m2[f])
  1672                     t2 = self.file(f).read(m2[f])
  1665                     if cmp(t1, t2) == 0:
  1673                     if cmp(t1, t2) == 0:
  1666                         n = m2[f]
  1674                         n = m2[f]
  1667                     del t1, t2
  1675                     del t1, t2
  1668 
  1676 
  1778         for f in files:
  1786         for f in files:
  1779             if f[0] == "/": continue
  1787             if f[0] == "/": continue
  1780             self.ui.note("getting %s\n" % f)
  1788             self.ui.note("getting %s\n" % f)
  1781             t = self.file(f).read(get[f])
  1789             t = self.file(f).read(get[f])
  1782             try:
  1790             try:
  1783                 self.wfile(f, "w").write(t)
  1791                 self.wwrite(f, t)
  1784             except IOError:
  1792             except IOError:
  1785                 os.makedirs(os.path.dirname(self.wjoin(f)))
  1793                 os.makedirs(os.path.dirname(self.wjoin(f)))
  1786                 self.wfile(f, "w").write(t)
  1794                 self.wwrite(f, t)
  1787             util.set_exec(self.wjoin(f), mf2[f])
  1795             util.set_exec(self.wjoin(f), mf2[f])
  1788             if moddirstate:
  1796             if moddirstate:
  1789                 if branch_merge:
  1797                 if branch_merge:
  1790                     self.dirstate.update([f], 'n', st_mtime=-1)
  1798                     self.dirstate.update([f], 'n', st_mtime=-1)
  1791                 else:
  1799                 else:
  1834 
  1842 
  1835         def temp(prefix, node):
  1843         def temp(prefix, node):
  1836             pre = "%s~%s." % (os.path.basename(fn), prefix)
  1844             pre = "%s~%s." % (os.path.basename(fn), prefix)
  1837             (fd, name) = tempfile.mkstemp("", pre)
  1845             (fd, name) = tempfile.mkstemp("", pre)
  1838             f = os.fdopen(fd, "wb")
  1846             f = os.fdopen(fd, "wb")
  1839             f.write(fl.read(node))
  1847             self.wwrite(fn, fl.read(node), f)
  1840             f.close()
  1848             f.close()
  1841             return name
  1849             return name
  1842 
  1850 
  1843         fl = self.file(fn)
  1851         fl = self.file(fn)
  1844         base = fl.ancestor(my, other)
  1852         base = fl.ancestor(my, other)