comparison mercurial/hg.py @ 1019:a9cca981c423

Create helper functions for I/O to files in the working directory This simplifies some code and gives us a single place to add I/O filters.
author mpm@selenic.com
date Wed, 24 Aug 2005 00:32:10 -0700
parents 2e8b8da9a86e
children 35e883d1ff9b
comparison
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)