Mercurial > public > mercurial-scm > hg
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) |